网络编程
位置:首页>> 网络编程>> Python编程>> 用python绘制樱花树

用python绘制樱花树

作者:刘早起  发布时间:2023-07-24 19:47:09 

标签:python,绘图

黑夜可能漫长,但总会迎来温暖的阳光,三月如期而至,武大的樱花又一次盛开。那么今天就一起来看看怎样在python中画一棵美丽的樱花树~

说到用python画画,那当然就是小乌龟Turtle库了,为啥是turtle呢,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。

一、安装与引入

安装没有什么难度直接pip安装就可以


pip install turtle

可使用以下3种方法引入:

用python绘制樱花树

二、使用

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)。

那么来看看最后效果吧!

用python绘制樱花树

完整源码:


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
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com