用python绘制樱花树
作者:刘早起 发布时间:2023-07-24 19:47:09
标签:python,绘图
黑夜可能漫长,但总会迎来温暖的阳光,三月如期而至,武大的樱花又一次盛开。那么今天就一起来看看怎样在python中画一棵美丽的樱花树~
说到用python画画,那当然就是小乌龟Turtle库了,为啥是turtle呢,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。
一、安装与引入
安装没有什么难度直接pip安装就可以
pip install turtle
可使用以下3种方法引入:
二、使用
turtle库使用起来也很简单,主要就是利用几个核心的控制代码
turtle.goto(x,y):直接跳转到(x,y)点,以绘图窗口中心为原点,
turtle.fd(d):以当前方向,往前行进d像素。
turtle.bk(d):保持当前方向不变,往后退行d像素。
turtle.circle(r,angle):以r为半径圆的angle角度旋转。
turtle.penup():抬笔
turtle.pendown():落笔
urtle.left(angle):向左旋转angle度。
turtle.right(angle):向右旋转angle度。
比如绘制树干部分的代码可以这样写
def Tree(branch, t):
time.sleep(0.0005)
if branch > 3:
if 6 <= branch <= 12: #
if random.randint(0, 2) == 0: #随机绘制
t.color('snow') #设置颜色
else:
t.color('lightcoral') # 树叶颜色
t.pensize(branch / 3)
elif branch < 6:
if random.randint(0, 1) == 0:
t.color('snow')
else:
t.color('lightcoral') #
t.pensize(branch / 2)
else:
t.color('sienna') # 赭(zhě)色
t.pensize(branch / 10) # 6
t.forward(branch)
a = 1.5 * random.random()
t.right(20 * a)
b = 1.5 * random.random()
Tree(branch - 10 * b, t)
t.left(40 * a)
Tree(branch - 10 * b, t)
t.right(20 * a)
t.up()
t.backward(branch)
t.down()
而写字的部分就不用一笔一划的去绘制,直接使用turtle.write()就可以在指定位置写上你需要的文字。
write(arg,move=false,align='left',font=('arial',8,'normal'))
#arg--将写入Turtle绘画屏幕的文字。
#align(可选)--“左(left)”、“中(center)”或“右(right)”之一。
#font(可选)--(fontname、fontsize、fonttype)。
那么来看看最后效果吧!
完整源码:
import turtle as T
import random
import time
# 画樱花的躯干(60,t)
def Tree(branch, t):
time.sleep(0.0005)
if branch > 3:
if 8 <= branch <= 12:
if random.randint(0, 2) == 0:
t.color('snow') # 白
else:
t.color('lightcoral') # 淡珊瑚色
t.pensize(branch / 3)
elif branch < 8:
if random.randint(0, 1) == 0:
t.color('snow')
else:
t.color('lightcoral') # 淡珊瑚色
t.pensize(branch / 2)
else:
t.color('sienna') # 赭(zhě)色
t.pensize(branch / 10) # 6
t.forward(branch)
a = 1.5 * random.random()
t.right(20 * a)
b = 1.5 * random.random()
Tree(branch - 10 * b, t)
t.left(40 * a)
Tree(branch - 10 * b, t)
t.right(20 * a)
t.up()
t.backward(branch)
t.down()
# 掉落的花瓣
def Petal(m, t):
for i in range(m):
a = 200 - 400 * random.random()
b = 10 - 20 * random.random()
t.up()
t.forward(b)
t.left(90)
t.forward(a)
t.down()
t.color('lightcoral') # 淡珊瑚色
t.circle(1)
t.up()
t.backward(a)
t.right(90)
t.backward(b)
# 绘图区域
t = T.Turtle()
# 画布大小
w = T.Screen()
t.hideturtle() # 隐藏画笔
t.getscreen().tracer(5, 0)
w.screensize(bg='wheat') # wheat小麦
t.left(90)
t.up()
t.backward(150)
t.down()
t.color('sienna')
# 画樱花的躯干
Tree(60, t)
# 掉落的花瓣
Petal(200, t)
w.exitonclick()
来源:https://cloud.tencent.com/developer/article/1618631
0
投稿
猜你喜欢
- 服务器:#server.py#!/usr/bin/env python#-*-coding:utf-8-*-import sysimport
- 一、wordcloud库是什么?Python的wordcloud库是一个用于生成词云的Python包。它可以将一段文本中出现频率高的单词按其
- 可以不依靠DSN,但又可以在数据库连接字符串中指定驱动程序、服务器名字、数据库、数据库账号和密码吗?可以。在SQL Server 7,使用这
- 1.场景,对于colums都相同的dataframe做过滤的时候例如:df1 = DataFrame([['a', 10,
- 1.网络爬虫的基本概念网络爬虫(又称网络蜘蛛,机器人),就是模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的
- 最近一直忙,我们的注册页面还是在持续优化。今天抽时间分析了下数据,依然以主注册表单为例,对表单里3个区块、9个字段做了个小小出错排行;看看哪
- 本文为大家分享了Python多线程聊天室,是一个Socket,两个线程,一个是服务器,一个是客户端。 最近公司培训,要写个大富翁的小程序,准
- 代码如下:function checkip(checkstring)'用正则判断IP是否合法 dim re1 set re1=new
- RSS是 Really Simple Syndication的缩写(对rss2.0而言,是这三个词的缩写,对rss1.0而言则是RDF Si
- 现在Web页面的交互方式越来越多样化,其中拖放页面元素也是一种很常见的操作。在这类操作当中有两个主要问题需要解决,一个是事件的注册方式,一般
- 5.16 列表生成式l=[]for i in range(100): l.append('egg%s' %i)p
- 下面演示了,当asp程序发生错误时,屏蔽系统默认的错误显示,而显示自定义的错误信息。<%@ LANGUAGE="V
- php的引用(就是在变量或者函数、对象等前面加上&符号),在PHP 中引用的意思是:不同的名字访问同一个变量内容。与C语言中的指针是
- 有关itchat接口的知识,小编是初步学习,这里先给大家分享一段代码用法示例。sudo pip3 install itchat今天用了下it
- 用ASP实现搜索引擎的功能是一件很方便的事,可是,如何实现类似3721的智能搜索呢?比如,当在搜索条件框内输入“中国人民”时,自动从中提取“
- 从 gif 直观地感受一下效果我有大量 url 需要访问,但是有些 url 会超时为了避免超时,设置driver.set_page_load
- 本文用python写了一个会员管理系统,供大家参考,具体内容如下:"""后台管理员前台会员信息系统1.后台管理
- 序言哈喽兄弟们,今天来实现一个Python采集视频、弹幕、评论与一体的小软件。平常咱们都是直接代码运行,不过今天我们做成软件,这样的话,咱们
- 把下面SQL里的SELECT单独执行,没有问题,但是用来CREATE VIEW 就报错了.CREATE OR REPLA
- 经常开发asp但对于细致的说法,真实不太清楚,这里简单的介绍下。一般情况下读取数据都是用rs.open sql,conn,1,1修改数据:r