使用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 变量类型及命名规则介绍
Jun 08 Python
新手如何快速入门Python(菜鸟必看篇)
Jun 10 Python
50行Python代码实现人脸检测功能
Jan 23 Python
15行Python代码带你轻松理解令牌桶算法
Mar 21 Python
Django model序列化为json的方法示例
Oct 16 Python
Python字符串对象实现原理详解
Jul 01 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
Aug 05 Python
python爬虫模拟浏览器的两种方法实例分析
Dec 09 Python
python实现ftp文件传输系统(案例分析)
Mar 20 Python
win10安装python3.6的常见问题
Jul 01 Python
Python破解极验滑动验证码详细步骤
May 21 Python
Pytest中skip skipif跳过用例详解
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
使用无限生命期Session的方法
2006/10/09 PHP
Discuz不使用插件实现简单的打赏功能
2019/03/21 PHP
MSN消息提示类
2006/09/05 Javascript
高性能Javascript笔记 数据的存储与访问性能优化
2012/08/02 Javascript
jQuery实现平滑滚动到指定锚点的方法
2015/03/20 Javascript
认识Knockout及如何使用Knockout绑定上下文
2015/12/25 Javascript
Node.js编写组件的三种实现方式
2016/02/25 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
详解升级react-router 4 踩坑指南
2017/08/14 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
Layui弹出层 加载 做编辑页面的方法
2019/09/16 Javascript
使用vue cli4.x搭建vue项目的过程详解
2020/05/08 Javascript
JavaScript forEach中return失效问题解决方案
2020/06/01 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
2020/08/14 Javascript
python正则表达式爬取猫眼电影top100
2018/02/24 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
2018/06/01 Python
详解Django 时间与时区设置问题
2019/07/23 Python
Django 响应数据response的返回源码详解
2019/08/06 Python
python批量修改ssh密码的实现
2019/08/08 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
CSS3中Animation动画属性用法详解
2016/07/04 HTML / CSS
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
95%的面试官都会问到的50道Java线程题,附答案
2012/08/03 面试题
公司市场部岗位职责
2013/12/02 职场文书
开业庆典主持词
2014/03/21 职场文书
大学生英语演讲稿
2014/04/24 职场文书
业务内勤岗位职责
2014/04/30 职场文书
团支部推优材料
2014/05/21 职场文书
图书室标语
2014/06/21 职场文书
先进班组材料范文
2014/12/25 职场文书
2016年暑期教师培训心得体会
2016/01/09 职场文书
MySQL系列之十 MySQL事务隔离实现并发控制
2021/07/02 MySQL
python人工智能human learn绘图可创建机器学习模型
2021/11/23 Python