使用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判断变量是否已经定义的方法
Aug 18 Python
python制作一个桌面便签软件
Aug 09 Python
Python自动化运维和部署项目工具Fabric使用实例
Sep 18 Python
解决PyCharm中光标变粗的问题
Aug 05 Python
Python 2.x如何设置命令执行的超时时间实例
Oct 19 Python
python中的不可变数据类型与可变数据类型详解
Sep 16 Python
Pycharm以root权限运行脚本的方法
Jan 19 Python
Python 获取windows桌面路径的5种方法小结
Jul 15 Python
python Django里CSRF 对应策略详解
Aug 05 Python
Django1.11自带分页器paginator的使用方法
Oct 31 Python
基于Python实现人脸自动戴口罩系统
Feb 06 Python
python statsmodel的使用
Dec 21 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
PHP中如何实现常用邮箱的基本判断
2014/01/07 PHP
Laravel 5框架学习之用户认证
2015/04/09 PHP
php上传图片并压缩的实现方法
2015/12/22 PHP
php封装的mysqli类完整实例
2016/10/18 PHP
php微信公众号开发之现金红包
2018/04/16 PHP
PHP实现的日历功能示例
2018/09/01 PHP
jQuery下通过$.browser来判断浏览器.
2011/04/05 Javascript
jQuery验证Checkbox是否选中的代码 推荐
2011/09/04 Javascript
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
javascript的propertyIsEnumerable()方法使用介绍
2014/04/09 Javascript
Javascript学习笔记之 函数篇(三) : 闭包和引用
2014/11/23 Javascript
jquery实现聚光灯效果的方法
2015/02/06 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
每天一篇javascript学习小结(RegExp对象)
2015/11/17 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
jQuery 判断是否包含在数组中Array[]的方法
2016/08/03 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
JS中的三个循环小结
2017/06/20 Javascript
详解用vue编写弹出框组件
2017/07/04 Javascript
浅谈angular4 ng-content 中隐藏的内容
2017/08/18 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
2018/07/21 Javascript
Vue 与 Vuex 的第一次接触遇到的坑
2018/08/16 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
vue-router 中 meta的用法详解
2019/11/01 Javascript
Vue Router中应用中间件的方法
2020/08/06 Javascript
python获取Linux发行版名称
2019/08/30 Python
matplotlib 多个图像共用一个colorbar的实现示例
2020/09/10 Python
深入剖析webstorage[html5的本地数据处理]
2016/07/11 HTML / CSS
html5 svg 中元素点击事件添加方法
2013/01/16 HTML / CSS
html5的input的required使用中遇到的问题及解决方法
2018/04/24 HTML / CSS
竞选班干部演讲稿100字
2014/08/20 职场文书
医者仁心观后感
2015/06/17 职场文书
html+css实现分层金字塔的实例
2021/06/02 HTML / CSS
《杜鹃的婚约》OP主题曲「凸凹」无字幕影像公开
2022/04/08 日漫