使用Python的Turtle库绘制森林的实例


Posted in Python onDecember 18, 2019

这是由一个小作业引发的对Python的Turtle库的学习

下面是官方手册:

PS:还尝试了用pip安装jupyter等,发现没有VS2008的支持无法编译一部分文件,改变python的编译器也没效果,只好放弃 = =(反正不是自己电脑hhh)

2.Turtle绘制森林代码

这段代码结合了随机函数来使森林更多样化,同时设置了颜色的渐变。几乎每句都有注释,还有不懂的函数可以到官方手册查

另外老师的示例中的yield语句和pass语句的用法非常精髓,可以再研究一下

# -*- coding: utf-8 -*-
from turtle import Turtle, mainloop
from time import clock
import random
 
def tree(plist, l, a, f):
 """ 
 plist 是turtle箭头的列表
 l 是初始树枝的长度
 a 是两根树枝之间夹角的一半
 f 是每层树枝之间长度的因数.
 """
 r = random.randint(2,3)
 if l > 3:
  lst = []
  for p in plist:
   if l < 50:
    p.color(34,int(200-3*l),34)
    p.pensize(3)
   p.forward(l)
   #沿当前方向前进l
   q = p.clone()
   #创建一个副本
   if(r==3):
    m = p.clone()
    m.left(random.randint(-5,5))
    lst.append(m)
   p.left(a+random.randint(-10,10))
   #原本左转a度
   q.right(a+random.randint(-10,10))
   #副本右转a度
   lst.append(p)
   lst.append(q)
   #将p,q分别加到列表后
  for x in tree(lst, l*f, a, f):
   yield None
def maketree(l,a,f,x,y):
 '''这个函数用来初始化箭头的参数
 l 是初始树枝的长度
 a 是两根树枝之间夹角的一半
 f 是每层树枝之间长度的因数
 x和y是树根位置,(0,0)在屏幕中心
 '''
 p = Turtle()    
 #创建一个Turtle类的对象
 p.getscreen().colormode(255)
 # 获得屏幕句柄,可以对其进行操作
 #颜色模式改为255,可以使用RGB颜色
 p.pencolor(139,69,19)
 #p.color('brown')   
 #Turtle的颜色为棕色
 p.pensize(6)
 #笔的大小为6
 p.setundobuffer(None)  
 #不设置撤销缓冲区
 p.hideturtle()    
 #隐藏箭头
 p.speed(0)     
 #设置速度,0-10,0是最快的
 p.getscreen().tracer(5000,0)
 # 获得屏幕句柄,可以对其进行操作
 # 每5000次操作将屏幕刷新,延时为0
 p.left(90)
 # 将Turtle的前进方向左转90度,使方向竖直向上
 p.penup()
 # 把笔抬起来
 p.goto(x,y)
 #p.forward(-210)
 # 笔向前移动-210个单位(向后移动210个像素)
 p.pendown()
 # 把笔放下
 #这三条语句是一个组合相当于先把笔收起来再移动到指定位置,再把笔放下开始画
 #否则turtle一移动就会自动的把线画出来
 t = tree([p], l, a, f)
 for x in t:
  pass
 #print(len(p.getscreen().turtles()))
 #输出箭头总数
def main():
 a=clock()
 maketree(100,35,0.6375,-100,-210)
 maketree(110,60,0.67,-400,-100)
 maketree(120,30,0.6,500,-160)
 maketree(145,45,0.65,150,-80)
 b=clock()
 return "done: %.2f sec." % (b-a)
if __name__ == "__main__":
 msg = main()
 print(msg)
 mainloop()
 # 确保不会自动退出

使用Python的Turtle库绘制森林的实例

以上这篇使用Python的Turtle库绘制森林的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python for Informatics 第11章 正则表达式(一)
Apr 21 Python
微信跳一跳自动运行python脚本
Jan 08 Python
TensorFlow实现MLP多层感知机模型
Mar 09 Python
python实现决策树、随机森林的简单原理
Mar 26 Python
Python中几种属性访问的区别与用法详解
Oct 10 Python
使用Python抓取豆瓣影评数据的方法
Oct 17 Python
pandas 透视表中文字段排序方法
Nov 16 Python
在pycharm中显示python画的图方法
Aug 31 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
Dec 17 Python
将labelme格式数据转化为标准的coco数据集格式方式
Feb 17 Python
jupyter notebook 的工作空间设置操作
Apr 20 Python
使用sklearn对多分类的每个类别进行指标评价操作
Jun 11 Python
python3 requests库实现多图片爬取教程
Dec 18 #Python
在notepad++中实现直接运行python代码
Dec 18 #Python
简单了解python装饰器原理及使用方法
Dec 18 #Python
修改Pandas的行或列的名字(重命名)
Dec 18 #Python
Python3直接爬取图片URL并保存示例
Dec 18 #Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 #Python
Python谱减法语音降噪实例
Dec 18 #Python
You might like
我的论坛源代码(四)
2006/10/09 PHP
在VS2008中编译MYSQL5.1.48的方法
2010/07/03 PHP
PHP中应该避免使用同名变量(拆分临时变量)
2015/04/03 PHP
基于jquery的一个图片hover的插件
2010/04/24 Javascript
JQuery中SetTimeOut传参问题探讨
2013/05/10 Javascript
JS性能优化笔记搜索整理
2013/08/21 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
socket.io学习教程之深入学习篇(三)
2017/04/29 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
2018/11/22 Javascript
Node.js对MongoDB进行增删改查操作的实例代码
2019/04/18 Javascript
jQuery/JS监听input输入框值变化实例
2019/10/17 jQuery
[15:56]Heroes18_暗影萨满(完美)
2014/10/31 DOTA
[03:41]2018完美盛典-《Fight With Us》
2018/12/16 DOTA
python访问系统环境变量的方法
2015/04/29 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
2018/11/29 Python
nohup后台启动Python脚本,log不刷新的解决方法
2019/01/14 Python
Django利用cookie保存用户登录信息的简单实现方法
2019/05/27 Python
PyQtGraph在pyqt中的应用及安装过程
2019/08/04 Python
详解django实现自定义manage命令的扩展
2019/08/13 Python
python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析
2019/10/14 Python
Python基于yield遍历多个可迭代对象
2020/03/12 Python
Python如何实现邮件功能
2020/05/27 Python
Keras自定义IOU方式
2020/06/10 Python
keras实现多种分类网络的方式
2020/06/11 Python
css3+jq创作含苞待放的荷花
2014/02/20 HTML / CSS
法学个人求职信范文
2014/01/27 职场文书
奥利奥广告词
2014/03/20 职场文书
龙门石窟导游词
2015/02/02 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
部门经理助理岗位职责
2015/04/13 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python
Win10系统下配置Java环境变量
2021/06/13 Java/Android
Python中glob库实现文件名的匹配
2021/06/18 Python
Python中的turtle画箭头,矩形,五角星
2022/03/16 Python