使用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标准库之sqlite3使用实例
Nov 25 Python
Python的装饰器模式与面向切面编程详解
Jun 21 Python
Python按行读取文件的简单实现方法
Jun 22 Python
一个基于flask的web应用诞生 flask和mysql相连(4)
Apr 11 Python
Python中关键字global和nonlocal的区别详解
Sep 03 Python
python实现坦克大战游戏 附详细注释
Mar 27 Python
Python实现带下标索引的遍历操作示例
May 30 Python
导入tensorflow时报错:cannot import name 'abs'的解决
Oct 10 Python
django框架基于queryset和双下划线的跨表查询操作详解
Dec 11 Python
Python类中self参数用法详解
Feb 13 Python
Python3爬虫ChromeDriver的安装实例
Feb 06 Python
Python 多线程处理任务实例
Nov 07 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解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
2013/11/14 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
PHP扩展类型及安装方式解析
2020/04/27 PHP
jQuery渐变发光导航菜单的实例代码
2013/03/27 Javascript
正负小数点后两位浮点数实现原理及代码
2013/09/06 Javascript
浅析Javascript中“==”与“===”的区别
2014/12/23 Javascript
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
2015/08/22 Javascript
每天一篇javascript学习小结(Array数组)
2015/11/11 Javascript
JavaScript程序中的流程控制语句用法总结
2016/05/23 Javascript
jQuery过滤选择器经典应用
2016/08/18 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
JavaScript截屏功能的实现代码
2017/07/28 Javascript
vue中的scope使用详解
2017/10/29 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
2020/05/29 jQuery
[04:16]DOTA2全国高校联赛16强抽签
2018/05/02 DOTA
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
通过C++学习Python
2015/01/20 Python
Python计算三角函数之asin()方法的使用
2015/05/15 Python
使用python3构建文件传输的方法
2019/02/13 Python
HTML5 canvas 瀑布流文字效果的示例代码
2018/01/31 HTML / CSS
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
Otticanet英国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/02/10 全球购物
教师找工作推荐信
2013/11/23 职场文书
《商鞅南门立木》教学反思
2014/02/16 职场文书
主持词开场白
2014/03/17 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
男性健康日的活动方案
2014/08/18 职场文书
前台文员岗位职责
2015/02/04 职场文书
2015年“公民道德宣传日”活动方案
2015/05/06 职场文书
SqlServer 垂直分表(减少程序改动)
2021/04/16 SQL Server
欧元符号 €
2022/02/17 杂记
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python