前言
【Turtle|【Turtle系列】2022年春天限定(“樱你而来”带着喜欢的人一起去看一场粉色浪潮吧~)】春 日 赏 花 樱 满 ? 带 着 喜 欢 的 人 一 起 去 吧!——栗子君(当然最近疫情比较严重大家还是等疫情过去了再出门哈!)
春光正好,我们一起来赏花吧~前几天小编刚刚去看了樱花呢!文末可见源码啦!
文章图片
和煦的春风吹走了白雪皑皑吗,吹来了“千树万树桃花开”
粉嫩的桃花、抽芽的柳枝,探头的小草、野餐的孩子。你,一定也感受到春天了吧!
文章图片
今天小编给大家用代码绘制了春天樱花开花的场景啦,足不出门也能欣赏到~
正文 本文的代码很简单,会Turtle就可以啦
1)代码展示
import turtle
from random import random
from random import randint
def draw_petal(turtle_obj, flower):
# 绘制掉落的花瓣
for i in range(int(flower)):
# 有正有负就可以让画笔往二个方向走
x = flower - 4 * flower * random()
# 花瓣整体宽度(-10, 10)
y = 10 - 20 * random()
# 提笔,向前y,左转90,走x,落笔
turtle_obj.penup()
turtle_obj.forward(y)
turtle_obj.left(90)
turtle_obj.forward(x)
turtle_obj.pendown()
# 珊瑚色
turtle_obj.pencolor("lightcoral")
# 画圆
turtle_obj.circle(1)
# 回到起点
# 提笔,后退x,右转90,后退y,落笔
turtle_obj.penup()
turtle_obj.backward(x)
turtle_obj.right(90)
turtle_obj.backward(y)
turtle_obj.pendown()
# 画树枝部分
def draw_tree(turtle_obj, branch, tree_color):
# 设置一个最小分支长度
min_branch = 4
if branch > min_branch:
if branch < 8:
# 以0.5的概率,向左、右分支
if randint(0, 1) == 0:
# 左为白色
turtle_obj.pencolor("snow")
else:
# 右为珊瑚色
turtle_obj.pencolor("lightcoral")
# 枝干
turtle_obj.pensize(branch / 2)
elif 8 <= branch <= 16:
# 以0.33的概率,分为左、中、右分支
if randint(0, 2) == 0:
# 左为白色
turtle_obj.pencolor("snow")
else:
# 中、右为珊瑚色
turtle_obj.pencolor("lightcoral")
# 树枝
turtle_obj.pensize(branch / 4)
else:
# 褐色
turtle_obj.pencolor(tree_color)
# 细枝
turtle_obj.pensize(branch / 10)
# 最开始的树干长度
turtle_obj.forward(branch)
# 随机度数因子
a = 1.5 * random()
# 顺时针旋转随机角度(0~30度)
turtle_obj.right(20 * a)
# 随机长度因子
b = 1.5 * random()
# 往右画,直到画不动为止
draw_tree(turtle_obj, branch - 10 * b, tree_color)
# 左转随机角度
turtle_obj.left(40 * a)
# 往左画,直到画不动位置
draw_tree(turtle_obj, branch - 10 * b, tree_color)
# 右转一定角度
turtle_obj.right(20 * a)
# 提笔
turtle_obj.penup()
# 递归结束回到起点
turtle_obj.backward(branch)
turtle_obj.pendown()
def get_screen(width, height, color, speed):
# 创建画幕
screen_obj = turtle.Screen()
# 画布大小:(width, height),颜色:color
screen_obj.screensize(width, height, bg=color)
screen_obj.setup(1.0, 1.0)
# speed倍加速
screen_obj.tracer(speed)
return screen_obj
def tree(tree_num):
# 颜色
color = ['brown', 'tan', 'black']
for j in range(tree_num):
# 树干颜色
tree_color = color[randint(0, len(color) - 1)]
# 画笔大小
pensize = randint(2, 5)
# 前进像素
forward = ((-1) ** pensize) * pensize * randint(20, 50)
# 后退像素
if pensize <= 3:
backward = ((-1) ** pensize) * (5 - pensize) * randint(10, 15)
else:
backward = pensize * randint(45, 50)
# 创建画笔
turtle_obj = turtle.Turtle()
# 画笔粗细
turtle_obj.pensize(pensize)
# 提笔,向前forward,左转90,backward,落笔
turtle_obj.penup()
turtle_obj.forward(forward)
turtle_obj.left(90)
turtle_obj.backward(backward)
turtle_obj.pendown()
# 画笔颜色:褐色
turtle_obj.pencolor(tree_color)
# 枝干粗细
branch = pensize * 15
# 落花数
flowers = branch
# 第j棵树
draw_tree(turtle_obj, branch, tree_color)
# 花瓣
draw_petal(turtle_obj, flowers)
if __name__ == '__main__':
# 创建画幕
my_screen_width = 800
my_screen_height = 600
my_screen_color = 'wheat'
my_screen_speed = 5
my_screen_obj = get_screen(my_screen_width, my_screen_height,
my_screen_color, my_screen_speed)
# 樱花树
# 棵数
my_tree_num = 5
trees(my_tree_num)
# 点击关闭画布
my_screen_obj.exitonclick()
2)效果展示
文章图片
番外樱花
文章图片
源码一起打包的啦~记得找我拿都是免费滴!放心啦~
总结 仙姿摇曳花枝俏,娉娉袅袅袂飘摇。
娇樱盼春三日笑,花容人面魂欲烧。——《咏樱花》
文章图片
?完整的素材等:滴滴我吖!或者点击文末自取免费拿的哈~
往期推荐阅读—— 项目0.1【情人节快乐】“我还是很喜欢你就像sin2a+cos2a 始终如一”(附表白代码)
项目0.4Python教程:去除背景,我保证不动她一根头发(附多种方式)
项目0.5【视频倒放神器】超级玩法:千万不要倒放视频,太魔性了根本停不下来......
项目0.6【Python小程序】隐藏表白图:“你永远都不知道我喜欢你”(建议保存)
还有更多更多源码等你来领区啦!
文章汇总—— 汇总: Python文章合集 | (入门到实战、游戏、Turtle、案例等)
(文章汇总还有更多你案例等你来学习啦~源码找我即可免费!)
推荐阅读
- python|经典非局部均值滤波(NLM)算法python实现(1)
- Python|【Turtle系列】端正心态正确面对疫情,守护安全防线不放松,共抗疫情,只待春来~
- 图像处理|【OpenCv】图像分割——分水岭算法
- python|Python 学生信息管理系统------文章中源码100%真实有效-----如何将类、初始化属性、模块、循环判断、静态方法等一系列知识点结合起来做一个项目
- mysql|python数据库存 和 取 数据 ~~~~别磨叽了,拿来直接用吧
- 自然语言处理|自然语言处理(中文分句)——————中文逆向最大匹配,文章中含有验证源码
- 数据分析基础|python数据分析基础之Numpy库详解(二)
- python|python数据分析基础003 -numpy的使用(详解)
- Python|【Opencv实战】这是我见过的最强大“美颜滤镜”,代码美颜傻瓜式一键操作~(附源码)