使用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解析XML的几种方式
Feb 16 Python
Python中异常重试的解决方案详解
May 05 Python
Python中表示字符串的三种方法
Sep 06 Python
pyspark 读取csv文件创建DataFrame的两种方法
Jun 07 Python
python3中zip()函数使用详解
Jun 29 Python
Python3随机漫步生成数据并绘制
Aug 27 Python
基于python实现学生管理系统
Oct 17 Python
python requests证书问题解决
Sep 05 Python
Python 点击指定位置验证码破解的实现代码
Sep 11 Python
解决 jupyter notebook 回车换两行问题
Apr 15 Python
Python2.x与3​​.x版本有哪些区别
Jul 09 Python
如何理解python接口自动化之logging日志模块
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
《星际争霸II》全新指挥官斯台特曼现已上线
2020/03/08 星际争霸
PHP面向对象程序设计之多态性的应用示例
2018/12/19 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
2019/01/15 PHP
Javascript实例教程(19) 使用HoTMetal(7)
2006/12/23 Javascript
Jquery replace 字符替换实现代码
2010/12/02 Javascript
20款超赞的jQuery插件 Web开发人员必备
2011/02/26 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
JQuery触发radio或checkbox的change事件
2012/12/18 Javascript
JavaScript实现找出数组中最长的连续数字序列
2014/09/03 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
2016/04/05 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
2016/11/03 Javascript
vue图片上传本地预览组件使用详解
2019/02/20 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
浅述python中argsort()函数的实例用法
2017/03/30 Python
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
基于循环神经网络(RNN)的古诗生成器
2018/03/26 Python
Python批处理删除和重命名文件夹的实例
2018/07/11 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
2020/02/07 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
使用python把xmind转换成excel测试用例的实现代码
2020/10/12 Python
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
2013/03/19 面试题
绝对经典成功的大学生推荐信
2013/11/08 职场文书
挂职自我鉴定
2014/02/26 职场文书
爱国演讲稿500字
2014/05/04 职场文书
做一个有道德的人演讲稿
2014/05/14 职场文书
电子专业自荐信
2014/07/01 职场文书
2014年变电站工作总结
2014/12/19 职场文书
幼儿园重阳节活动总结
2015/05/05 职场文书
实习报告范文之电话客服岗位
2019/07/26 职场文书
Matlab如何实现矩阵复制扩充
2021/06/02 Python