首页 分享 Python 画樱花(动态画+飘落效果+暗色效)

Python 画樱花(动态画+飘落效果+暗色效)

来源:花匠小妙招 时间:2025-05-04 08:05

前言

        Turtle 库是 Python 语言中一个很流行的绘制图像的函数库。

        想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。

正文

一、常用命令

        Turtle 命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令,其他的是其他命令。

1. 画笔运动命令

命令

说明

turtle.forward(distance)

向当前画笔方向移动distance像素长度

turtle.backward(distance)

向当前画笔相反方向移动distance像素长度

turtle.right(degree)

顺时针移动degree°

turtle.left(degree)

逆时针移动degree°

turtle.pendown()

移动时绘制图形,缺省时也为绘制

turtle.goto(x,y)

将画笔移动到坐标为x,y的位置

turtle.penup()

提起笔移动,不绘制图形,用于另起一个地方绘制

turtle.circle()

画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆

setx( )

将当前x轴移动到指定位置

sety( )

将当前y轴移动到指定位置

setheading(angle)

设置当前朝向为angle角度

home()

设置当前画笔位置为原点,朝向东。

dot(r)

绘制一个指定直径和颜色的圆点

2. 画笔控制命令

命令

说明

turtle.fillcolor(colorstring)

绘制图形的填充颜色

turtle.color(color1, color2)

同时设置pencolor=color1, fillcolor=color2

turtle.filling()

返回当前是否在填充状态

turtle.begin_fill()

准备开始填充图形

turtle.end_fill()

填充完成

turtle.hideturtle()

隐藏画笔的turtle形状

turtle.showturtle()

显示画笔的turtle形状

3. 全局控制命令

命令

说明

turtle.clear()

清空turtle窗口,但是turtle的位置和状态不会改变

turtle.reset()

清空窗口,重置turtle状态为起始状态

turtle.undo()

撤销上一个turtle动作

turtle.isvisible()

返回当前turtle是否可见

stamp()

复制当前图形

turtle.write(s [,font=("font-name",font_size,"font_type")])

写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项

4. 其他命令

命令

说明

turtle.mainloop()或turtle.done()

启动事件循环 -调用Tkinter的mainloop函数。

必须是乌龟图形程序中的最后一个语句。

turtle.mode(mode=None)

设置乌龟模式(“standard”,“logo”或“world”)并执行重置。如果没有给出模式,则返回当前模式。

turtle.delay(delay=None)

设置或返回以毫秒为单位的绘图延迟。

turtle.begin_poly()

开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。

turtle.end_poly()

停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。

turtle.get_poly()

返回最后记录的多边形。

二、效果演示

        接下来,我们就要使用Turtle函数绘制几种樱花树:

        说明下:代码里用了随机函数,所以每次执行过程不仅仅是动态的,而且结果也是不同的。

1、动态生成樱花

结果展示:(这个是动态的,不会做gif,只能展示下结果)

代码展示:

import turtle

import random

from turtle import *

from time import sleep

def tree(branchLen, t):

sleep(0.0005)

if branchLen > 3:

if 8 <= branchLen <= 12:

if random.randint(0, 2) == 0:

t.color('snow')

else:

t.color('lightcoral')

t.pensize(branchLen / 3)

elif branchLen < 8:

if random.randint(0, 1) == 0:

t.color('snow')

else:

t.color('lightcoral')

t.pensize(branchLen / 2)

else:

t.color('sienna')

t.pensize(branchLen / 10)

t.forward(branchLen)

a = 1.5 * random.random()

t.right(20 * a)

b = 1.5 * random.random()

tree(branchLen - 10 * b, t)

t.left(40 * a)

tree(branchLen - 10 * b, t)

t.right(20 * a)

t.up()

t.backward(branchLen)

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)

def main():

t = turtle.Turtle()

w = turtle.Screen()

t.hideturtle()

t.getscreen().tracer(5, 0)

w.screensize(bg='wheat')

t.left(90)

t.up()

t.backward(150)

t.down()

t.color('sienna')

tree(60, t)

petal(200, t)

w.exitonclick()

main()

2、飘落效果樱花

结果展示:

代码展示:

from turtle import *

from random import *

from math import *

def tree(n,l):

pd()

t = cos(radians(heading()+45))/8+0.25

pencolor(t,t,t)

pensize(n/3)

forward(l)

if n>0:

b = random()*15+10

c = random()*15+10

d = l*(random()*0.25+0.7)

right(b)

tree(n-1,d)

left(b+c)

tree(n-1,d)

right(c)

else:

right(90)

n=cos(radians(heading()-45))/4+0.5

pencolor(n,n*0.8,n*0.8)

circle(3)

left(90)

if(random()>0.7):

pu()

t = heading()

an = -40 +random()*40

setheading(an)

dis = int(800*random()*0.5 + 400*random()*0.3 + 200*random()*0.2)

forward(dis)

setheading(t)

pd()

right(90)

n = cos(radians(heading()-45))/4+0.5

pencolor(n*0.5+0.5,0.4+n*0.4,0.4+n*0.4)

circle(2)

left(90)

pu()

t=heading()

setheading(an)

backward(dis)

setheading(t)

pu()

backward(l)

bgcolor(0.5,0.5,0.5)

ht()

speed(0)

tracer(0,0)

pu()

backward(100)

left(90)

pu()

backward(300)

tree(12,100)

done()

3、暗色效果樱花

结果展示:

代码展示:

from turtle import *

from random import *

from math import *

def tree(n, l):

pd()

t = cos(radians(heading() + 45)) / 8 + 0.25

pencolor(t, t, t)

pensize(n / 4)

forward(l)

if n > 0:

b = random() * 15 + 10

c = random() * 15 + 10

d = l * (random() * 0.35 + 0.6)

right(b)

tree(n - 1, d)

left(b + c)

tree(n - 1, d)

right(c)

else:

right(90)

n = cos(radians(heading() - 45)) / 4 + 0.5

pencolor(n, n, n)

circle(2)

left(90)

pu()

backward(l)

bgcolor(0.5, 0.5, 0.5)

ht()

speed(0)

tracer(0, 0)

left(90)

pu()

backward(300)

tree(13, 100)

done()

相关知识

如何用python画一束花
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰)
用python绘制满天星动态,用python画满天星花朵
python画花花朵
python 实现漂亮的烟花,樱花,玫瑰花
python如何画花朵
如何用python画玫瑰花
c语言樱花飘落代码
python绘图玫瑰花
如何用python画花

网址: Python 画樱花(动态画+飘落效果+暗色效) https://www.huajiangbk.com/newsview1850417.html

所属分类:花卉
上一篇: 黄鹤楼酒樱花限定款焕新上市,携手
下一篇: 国画入门|梅花、水仙、樱花的必学

推荐分享