使用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编写Logistic逻辑回归
Dec 30 Python
python实现生成字符串大小写字母和数字的各种组合
Jan 01 Python
python 格式化输出百分号的方法
Jan 20 Python
Python创建字典的八种方式
Feb 27 Python
Python3利用print输出带颜色的彩色字体示例代码
Apr 08 Python
python3实现字符串操作的实例代码
Apr 16 Python
python twilio模块实现发送手机短信功能
Aug 02 Python
深入了解Python在HDA中的应用
Sep 05 Python
python如何从文件读取数据及解析
Sep 19 Python
Django2 连接MySQL及model测试实例分析
Dec 10 Python
python如何构建mock接口服务
Jan 28 Python
Python MNIST手写体识别详解与试练
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
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
php指定函数参数默认值示例代码
2013/12/04 PHP
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
微信access_token的获取开发示例
2015/04/16 PHP
PHP获取数组最大值下标的方法
2015/05/12 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
Jquery命名冲突解决的五种方案分享
2012/03/16 Javascript
js 中将多个逗号替换为一个逗号的代码
2014/06/07 Javascript
实现音乐播放器的代码(html5+css3+jquery)
2015/08/04 Javascript
javascript中caller和callee详解
2015/08/10 Javascript
总结JavaScript设计模式编程中的享元模式使用
2016/05/21 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
Vue cli构建及项目打包以及出现的问题解决
2018/08/27 Javascript
Vue项目打包部署到iis服务器的配置方法
2019/10/14 Javascript
实用的 vue tags 创建缓存导航的过程实现
2020/12/03 Vue.js
深入源码解析Python中的对象与类型
2015/12/11 Python
分析Python读取文件时的路径问题
2018/02/11 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
Python使用sax模块解析XML文件示例
2019/04/04 Python
20行python代码的入门级小游戏的详解
2019/05/05 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
2019/06/03 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
CSS3使用border-radius属性制作圆角
2014/12/22 HTML / CSS
Smilodox官方运动服装店:从运动服到健身配件
2020/08/27 全球购物
应用心理学专业求职信
2014/08/04 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书
基于Redis的List实现特价商品列表功能
2021/08/30 Redis
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android