使用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进行稳定可靠的文件操作详解
Dec 31 Python
9种python web 程序的部署方式小结
Jun 30 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
Jul 30 Python
python 网络编程常用代码段
Aug 28 Python
python脚本爬取字体文件的实现方法
Apr 29 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
Jan 16 Python
python 把文件中的每一行以数组的元素放入数组中的方法
Apr 29 Python
Django异步任务之Celery的基本使用
Mar 23 Python
python中的print()输出
Apr 12 Python
Python Pandas 对列/行进行选择,增加,删除操作
May 17 Python
python为什么会环境变量设置不成功
Jun 23 Python
一起来学习Python的元组和列表
Mar 13 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
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
一周让你学会PHP 不错的学习资料
2009/02/06 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
PHP判断是否是微信打开,浏览器打开的方法
2018/03/14 PHP
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
JavaScript Event学习第十一章 按键的检测
2010/02/10 Javascript
javascript实现别踩白块儿小游戏程序
2015/11/22 Javascript
jQuery自定义滚动条完整实例
2016/01/08 Javascript
Javascript类型系统之String字符串类型详解
2016/06/21 Javascript
详解微信小程序审核不通过的解决方法
2018/01/17 Javascript
详解开发react应用最好用的脚手架 create-react-app
2018/04/24 Javascript
vuejs选中当前样式active的实例
2018/08/22 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
深入剖析JavaScript instanceof 运算符
2019/06/14 Javascript
vue实现淘宝购物车功能
2020/04/20 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
2020/04/24 Javascript
探究Python中isalnum()方法的使用
2015/05/18 Python
深入理解Python中字典的键的使用
2015/08/19 Python
全面了解Python环境配置及项目建立
2016/06/30 Python
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
2017/05/19 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
Django rest framework实现分页的示例
2018/05/24 Python
联想新西兰官方网站:Lenovo New Zealand
2018/10/30 全球购物
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
UML设计模式笔试题
2014/06/07 面试题
通信研究生自荐信
2014/02/01 职场文书
小区消防演习方案
2014/02/21 职场文书
个人批评与自我批评发言稿
2014/09/28 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
2015年公司中秋节致辞
2015/07/31 职场文书
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript
python小型的音频操作库mp3Play
2022/04/24 Python