import turtle
import random
import time
from PIL import Image, ImageTk
# from time import sleep
import tkinter as tk
from time import sleep
from random import choice, uniform, randint
from math import sin, cos, radians# 模拟重力
GRAVITY = 0.05
# 颜色选项(随机或者按顺序)
colors = ['red', 'blue', 'yellow', 'white', 'green', 'orange', 'purple', 'seagreen', 'indigo', 'cornflowerblue']# 画樱花的躯干(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('orange')  # 淡珊瑚色t.pensize(branch / 3)elif branch < 8:if random.randint(0, 1) == 0:t.color('snow')else:t.color('orange')  # 淡珊瑚色t.pensize(branch / 2)else:t.color('sienna')  # 赭(zhě)色t.pensize(branch / 10)  # 6t.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)class Particle:def __init__(self, cv, idx, total, explosion_speed, x=0., y=0., vx=0., vy=0., size=2., color='red', lifespan=2,**kwargs):self.id = idxself.x = xself.y = yself.initial_speed = explosion_speedself.vx = vxself.vy = vyself.total = totalself.age = 0self.color = colorself.cv = cvself.cid = self.cv.create_oval(x - size, y - size, x + size,y + size, fill=self.color)self.lifespan = lifespandef update(self, dt):self.age += dt# 粒子范围扩大if self.alive() and self.expand():move_x = cos(radians(self.id * 360 / self.total)) * self.initial_speedmove_y = sin(radians(self.id * 360 / self.total)) * self.initial_speedself.cv.move(self.cid, move_x, move_y)self.vx = move_x / (float(dt) * 1000)# 以自由落体坠落elif self.alive():move_x = cos(radians(self.id * 360 / self.total))# we technically don't need to update x, y because move will do the jobself.cv.move(self.cid, self.vx + move_x, self.vy + GRAVITY * dt)self.vy += GRAVITY * dt# 移除超过最高时长的粒子elif self.cid is not None:cv.delete(self.cid)self.cid = None# 扩大的时间def expand (self):return self.age <= 1.2# 粒子是否在最高存在时长内def alive(self):return self.age <= self.lifespan'''
循环调用保持不停
'''
def simulate(cv):# time.sleep(0.0005)t1 = time.time()explode_points = []wait_time = randint(10, 100)numb_explode = randint(6, 10)# 创建一个所有粒子同时扩大的二维列表for point in range(numb_explode):objects = []x_cordi = randint(50, 550)y_cordi = randint(50, 150)speed = uniform(0.5, 1.5)size = uniform(0.5, 3)color = choice(colors)explosion_speed = uniform(0.2, 1)total_particles = randint(10, 50)for i in range(1, total_particles):r = Particle(cv, idx=i, total=total_particles, explosion_speed=explosion_speed, x=x_cordi, y=y_cordi,vx=speed, vy=speed, color=color, size=size, lifespan=uniform(0.6, 1.75))objects.append(r)explode_points.append(objects)total_time = .0# 1.8s内一直扩大while total_time < 1.8:sleep(0.01)tnew = time.time()t1, dt = tnew, tnew - t1for point in explode_points:for item in point:item.update(dt)cv.update()total_time += dt# 循环调用root.after(wait_time, simulate, cv)def close(*ignore):"""退出程序、关闭窗口"""global rootroot.quit()if __name__ == '__main__':root = tk.Tk()cv = tk.Canvas(root, height=520, width=750)cv.pack()image = Image.open("./black.jpg")photo = ImageTk.PhotoImage(image)w = turtle.TurtleScreen(cv)t = turtle.RawTurtle(w)# 选一个好看的背景会让效果更惊艳!cv.create_image(0, 0, image=photo)# root.mainloop()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)root.protocol("WM_DELETE_WINDOW", close)root.after(100, simulate, cv)root.mainloop()
# w.exitonclick()

引用文章:https://www.jb51.net/article/174721.htm

引用文章:https://www.pythonf.cn/read/5543

引用文章:https://www.cnblogs.com/pypypy/p/12124444.html

python绘制一棵樱花树相关推荐

  1. 圣诞节到了,教大家用 Python 绘制几棵圣诞树~

    大家好,我是大飞 今天是圣诞节,先在这里祝大家圣诞节快乐~~,用英语来表达就是 Merry Christmas ~~, 为了贴合这个氛围,今天分享五种用 Python 绘制圣诞树的方法,从基础到高级, ...

  2. html樱花飘落代码_武大樱花又盛开,用python画一棵樱花树

    黑夜可能漫长,但总会迎来温暖的阳光,三月如期而至,武大的樱花又一次盛开.那么今天就一起来看看怎样在python中画一棵美丽的樱花树- 说到用python画画,那当然就是小乌龟Turtle库了,为啥是t ...

  3. python编程樱花盛开_武大樱花又盛开,用python画一棵樱花树

    欢迎关注文章首发公众号:早起python 黑夜可能漫长,但总会迎来温暖的阳光,三月如期而至,武大的樱花又一次盛开.那么今天就一起来看看怎样在python中画一棵美丽的樱花树- 说到用python画画, ...

  4. 用python画桃花_武大樱花又盛开,用Python画一棵樱花树

    黑夜可能漫长,但总会迎来温暖的阳光,三月如期而至,武大的樱花又一次盛开.那么今天就一起来看看怎样在python中画一棵美丽的樱花树- 说到用python画画,那当然就是小乌龟Turtle库了,为啥是t ...

  5. 武大樱花又盛开,用python画一棵樱花树

    点击上方"早起python",关注公众号 满满干货,极速送达 黑夜可能漫长,但总会迎来温暖的阳光,三月如期而至,武大的樱花又一次盛开.那么今天就一起来看看怎样在python中画一棵 ...

  6. python樱花开放教程_武大樱花又盛开,用python画一棵樱花树

    黑夜可能漫长,但总会迎来温暖的阳光,三月如期而至,武大的樱花又一次盛开.那么今天就一起来看看怎样在python中画一棵美丽的樱花树- 说到用python画画,那当然就是小乌龟Turtle库了,为啥是t ...

  7. 用Python绘制樱花树、玫瑰花各种表白代码,从此不再缺女朋友

    8月将至,马上又到了樱花盛开的季节,今天的技能帖想教大家用Python绘制绘制一棵樱花树,将它送给身在武汉,或想去武汉的小伙伴,当樱花未开时,我们在线共赏樱,当樱花盛开时,我们相约珞珈山下! 希望如约 ...

  8. Python实战——自动生成情人节对女朋友表白玫瑰花、爱心,以及用Python画一颗樱花树,愿祖国繁花与共!

    今天的技能帖想教大家用Python绘制绘制一棵樱花树,将它送给身在异地,或想去异地的小伙伴,当樱花未开时,我们在线共赏樱,当樱花盛开时,我们相约珞珈山下! 希望如约而至的不止樱花,还有疫情过后平安的你 ...

  9. 用python绘制树和深林

    1 用python绘制一棵树 实现方法:通过对树的结构进行观察分析,利用递归程序来实现树的构造 实现代码: def tree(plist,l,a,f):#plist:list of pens#l:分支 ...

最新文章

  1. java是所有资源文件的索引_《Java程序设计》课程教学资源索引
  2. 使用hyper-v、CentOS学习Linux基本概念和命令
  3. 全球及中国冶金工业运行潜力与深度战略分析报告2022版
  4. Vue + Spring Boot——axios使用GET以参数的方式传递对象到SpringMVC解决方案
  5. Visaul Studio 常用快捷键的动画演示
  6. DATA URI schema(data:base64)协议常用数据格式
  7. AliOS Things全链路优化-CoAP FOTA
  8. 贾跃亭的惩罚来了!就这??
  9. 95-290-040-源码-内存管理-MemorySegment
  10. 网络管理与维护作业8
  11. 数据结构之哈夫曼编码
  12. Linux fread函数例程,21.2.9 文件读写实例--实现cp命令
  13. 鸿蒙形容欣欣向荣发展,比喻事业蓬勃发展繁荣兴旺的成语蒸蒸日上
  14. 表面缺陷检测的意义及现状
  15. K8s入门-K8s节点notReady状态解决
  16. 旷视科技——身份验证、活体检测、人脸比对
  17. IT(计算机/软件/互联网)专业词汇宝典
  18. 教你在硬件不满足Windows 11最低硬件要求的情况下安装Windows 11(绝对有效)
  19. 软通动力入职考试----全套
  20. php disconf,未主/disconf

热门文章

  1. ubuntu mysql自动补全_mysql自动化安装脚本(ubuntu and centos64)
  2. h5比html新增加的标签,H5新增的标签以及改良的标签
  3. JS的一些时间获取和计算公用方法封装
  4. 【链表】删除链表的倒数第n个节点
  5. 【王道计组笔记】总线(4):总线操作和定时
  6. 方便使用FFMPEG的经验
  7. python open可以打开什么类型文件_Python打开文件open()的注意事项
  8. 计算机组成原理实验箱连接显示输出,计算机组成原理实验箱介绍.ppt
  9. idea行号颜色修改
  10. Linux执行shell脚本提示文件找不到问题解决办法