使用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实现调用其他python脚本的方法
Oct 05 Python
Python检测网站链接是否已存在
Apr 07 Python
python简单实现获取当前时间
Aug 27 Python
python实现杨辉三角思路
Jul 14 Python
详解python里使用正则表达式的全匹配功能
Oct 19 Python
简述Python2与Python3的不同点
Jan 21 Python
Python Cookie 读取和保存方法
Dec 28 Python
python async with和async for的使用
Jun 20 Python
python字符串,元组,列表,字典互转代码实例详解
Feb 14 Python
python 动态绘制爱心的示例
Sep 27 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
Oct 19 Python
numpy数据类型dtype转换实现
Apr 24 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
CURL状态码列表(详细)
2013/06/27 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
php中final关键字用法分析
2016/12/07 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
jquery 事件执行检测代码
2009/12/09 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
2016/08/05 Javascript
基于Jquery Ajax type的4种类型(详解)
2017/08/02 jQuery
javascript实现文件拖拽事件
2018/03/29 Javascript
微信小程序左滑删除功能开发案例详解
2018/11/12 Javascript
JavaScript常用工具方法封装
2019/02/12 Javascript
echarts实现词云自定义形状的示例代码
2019/02/20 Javascript
vue实现搜索功能
2019/05/28 Javascript
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
2018/02/23 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
对python中的argv和argc使用详解
2018/12/15 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
python3图片文件批量重命名处理
2019/10/31 Python
Django对接支付宝实现支付宝充值金币功能示例
2019/12/17 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
C#面试题
2016/05/06 面试题
建筑毕业生自我鉴定
2013/10/18 职场文书
关于毕业的广播稿
2014/01/10 职场文书
秋季运动会广播稿(30篇)
2014/09/13 职场文书
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
普通党员对照检查材料
2014/09/24 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
迎国庆横幅标语
2014/10/08 职场文书
团队会宣传标语
2014/10/09 职场文书
2016秋季小学开学寄语
2015/12/03 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL
Golang 获取文件md5校验的方法以及效率对比
2021/05/08 Golang
浅谈css实现背景颜色半透明的两种方法
2021/12/06 HTML / CSS
Python实现GIF动图以及视频卡通化详解
2021/12/06 Python
Windows server 2016服务器基本设置
2022/08/14 Servers