使用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实现的可以拷贝或剪切一个文件列表中的所有文件
Apr 30 Python
Python如何实现文本转语音
Aug 08 Python
深入理解Python3中的http.client模块
Mar 29 Python
Flask-Mail用法实例分析
Jul 21 Python
对tf.reduce_sum tensorflow维度上的操作详解
Jul 26 Python
TensorFlow打印tensor值的实现方法
Jul 27 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
Oct 26 Python
python里运用私有属性和方法总结
Jul 08 Python
python使用信号量动态更新配置文件的操作
Apr 01 Python
python怎么自定义捕获错误
Jun 29 Python
python利用os模块编写文件复制功能——copy()函数用法
Jul 13 Python
如何用Python搭建gRPC服务
Jun 30 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
「OVERLORD」动画重要删减!雅儿贝德的背叛?至尊猎杀队结成
2020/04/09 日漫
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
php 连接mysql连接被重置的解决方法
2011/02/15 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
php 三大特点:封装,继承,多态
2017/02/19 PHP
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
2013/03/22 Javascript
jquery 跳到顶部和底部动画2句代码简单实现
2013/07/18 Javascript
Jquery实现自定义弹窗示例
2014/03/12 Javascript
深入理解javascript构造函数和原型对象
2014/09/23 Javascript
原生的html元素选择器类似jquery选择器
2014/10/15 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
jQuery实现统计输入文字个数的方法
2015/03/11 Javascript
js实现登陆遮罩效果的方法
2015/07/28 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
2016/08/05 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
JS获取当前地理位置的方法
2017/10/25 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
Vue实现table上下移动功能示例
2019/02/21 Javascript
JS面向对象实现飞机大战
2020/08/26 Javascript
使用Python编写Prometheus监控的方法
2018/10/15 Python
python感知机实现代码
2019/01/18 Python
解决Python设置函数调用超时,进程卡住的问题
2019/08/08 Python
python内存管理机制原理详解
2019/08/12 Python
Django如何使用第三方服务发送电子邮件
2019/08/14 Python
浅谈Html5多线程开发之WebWorkers
2018/05/02 HTML / CSS
英国知名衬衫品牌美国网站:Charles Tyrwhitt美国
2016/08/28 全球购物
英国婴儿和儿童服装网站:Vertbaudet
2018/04/02 全球购物
国庆节促销广告语2014
2014/09/19 职场文书
党校个人总结
2015/03/04 职场文书
为自己工作观后感
2015/06/11 职场文书
初婚未育证明样本
2015/06/18 职场文书
JavaScript继承的三种方法实例
2021/05/12 Javascript