使用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 文件读写操作实例详解
Mar 12 Python
详解Python的collections模块中的deque双端队列结构
Jul 07 Python
PyQt5每天必学之切换按钮
Aug 20 Python
在PyCharm下使用 ipython 交互式编程的方法
Jan 17 Python
Python 离线工作环境搭建的方法步骤
Jul 29 Python
Python使用qrcode二维码库生成二维码方法详解
Feb 17 Python
使用python绘制cdf的多种实现方法
Feb 25 Python
Python基于QQ邮箱实现SSL发送
Apr 26 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
Nov 24 Python
python的setattr函数实例用法
Dec 16 Python
pytorch损失反向传播后梯度为none的问题
May 12 Python
深入理解python协程
Jun 15 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 图片上传类代码
2009/07/17 PHP
PHP实现常用排序算法的方法
2020/02/05 PHP
javascript各种复制代码收集
2008/09/20 Javascript
JavaScript 事件对象的实现
2009/07/13 Javascript
JQuery扩展插件Validate—6 radio、checkbox、select的验证
2011/09/05 Javascript
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
javascript:;与javascript:void(0)使用介绍
2013/06/05 Javascript
PHP和NodeJs开发的应用如何共用Session
2015/04/16 NodeJs
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
微信小程序 scroll-view实现上拉加载与下拉刷新的实例
2017/01/21 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
关于Bootstrap按钮组件消除黄框的方法
2017/05/19 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
2018/02/08 Javascript
vue ssr 指南详读
2018/06/29 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
webpack打包优化的几个方法总结
2020/02/10 Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
2020/04/16 Javascript
jquery实现手风琴案例
2020/05/04 jQuery
简单上手Python中装饰器的使用
2015/07/12 Python
python 调用HBase的简单实例
2016/12/18 Python
python3实现斐波那契数列(4种方法)
2019/07/15 Python
django 通过URL访问上传的文件方法
2019/07/28 Python
解决Pytorch训练过程中loss不下降的问题
2020/01/02 Python
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
中文系学生自荐信范文
2013/11/13 职场文书
优秀经理事迹材料
2014/02/01 职场文书
小学“向国旗敬礼”网上签名寄语活动总结
2014/09/27 职场文书
二手房购房协议书范本
2014/10/05 职场文书
教师学习三严三实心得体会
2014/10/13 职场文书
2014小学一年级班主任工作总结
2014/12/05 职场文书
离婚协议书怎么写的
2014/12/14 职场文书
给老婆道歉的话
2015/01/20 职场文书
HTML+CSS 实现顶部导航栏菜单制作
2021/06/03 HTML / CSS