使用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中mechanize库的简单使用示例
Jan 10 Python
Python实现 多进程导入CSV数据到 MySQL
Feb 26 Python
Scrapy的简单使用教程
Oct 24 Python
基于Python的文件类型和字符串详解
Dec 21 Python
python做量化投资系列之比特币初始配置
Jan 23 Python
python入门教程 python入门神图一张
Mar 05 Python
python跳过第一行快速读取文件内容的实例
Jul 12 Python
如何利用python制作时间戳转换工具详解
Sep 12 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
Jun 11 Python
解决pytorch DataLoader num_workers出现的问题
Jan 14 Python
PyCharm2020.3.2安装超详细教程
Feb 08 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
thinkphp的静态缓存用法分析
2014/11/29 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
php封装的单文件(图片)上传类完整实例
2016/10/18 PHP
PHP共享内存使用与信号控制实例分析
2018/05/09 PHP
PHP PDOStatement::setFetchMode讲解
2019/02/03 PHP
PHP实现新型冠状病毒疫情实时图的实例
2020/02/04 PHP
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
Javascript 面向对象 重载
2010/05/13 Javascript
jQuery中Dom的基本操作小结
2014/01/23 Javascript
TypeError document.getElementById(...) is null错误原因
2015/05/18 Javascript
javascript实现随机读取数组的方法
2015/08/03 Javascript
Angularjs 设置全局变量的方法总结
2016/10/20 Javascript
微信小程序实现根据字母选择城市功能
2017/08/16 Javascript
webpack配置导致字体图标无法显示的解决方法
2018/03/06 Javascript
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
JS获取当前时间戳方法解析
2020/08/29 Javascript
详解如何使用React Hooks请求数据并渲染
2020/10/18 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
[03:28]2014DOTA2国际邀请赛 走近EG战队天才中单Arteezy
2014/07/12 DOTA
Python3遍历目录树实现方法
2015/05/22 Python
python-str,list,set间的转换实例
2018/06/27 Python
学生信息管理系统Python面向对象版
2019/01/30 Python
Pytorch之保存读取模型实例
2019/12/30 Python
Python利用全连接神经网络求解MNIST问题详解
2020/01/14 Python
解决python gdal投影坐标系转换的问题
2020/01/17 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
Ryderwear美国官网:澳大利亚高端健身训练装备品牌
2018/04/24 全球购物
EMU Australia澳大利亚官网:澳大利亚本土雪地靴品牌
2019/07/24 全球购物
如何利用cmp命令比较文件
2013/09/23 面试题
饭店工作计划书
2014/01/10 职场文书
自我鉴定书面格式
2014/01/13 职场文书
金融管理应届生求职信
2014/02/20 职场文书
人事经理岗位职责
2014/04/28 职场文书
出资证明书范本(标准版)
2014/09/24 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书