大家好,小编来为大家解答以下问题,python好看的流星雨代码,编程流星雨特效怎么弄,现在让我们一起来看看吧!
“流星雨是世间宝藏,而你是我的人间理想”
写在前面
冲鸭,冬鱼带你一起去看流星雨!这里有蓝色系和粉色系的流星雨,小伙伴们喜欢蓝色系的流星雨,还是粉色系的流星雨呢?当然啦,也可以改成你喜欢的颜色哦,一起来看看吧~
环境:Python
软件:PyCharm
详细分析
这是一个用 Python 语言编写的爱情表白程序,包含两个部分,一个是流星雨动画,另一个是表白窗口。用户可以选择同意或拒绝表白,如果同意,就会看到一个流星雨动画,如果拒绝,则需要再次选择,直到同意为止python创意编程作品。下面对程序进行详细分析:
1.导入库和模块
程序中使用了 turtle 库、random 库、tkinter 库和 math 库。turtle 库用于绘制流星,random 库用于生成随机数,tkinter 库用于实现表白窗口,math 库用于计算弧度。
2.定义流星类
定义了一个 Star 类用于描述流星的属性和行为。在初始化函数中,随机生成了流星的初始位置、大小、颜色、速度和角度等属性。在 star 函数中实现了绘制流星的具体过程,使用 turtle 库中的函数在画布上绘制流星。在 move 函数中实现了流星的运动轨迹,使流星向下和向右方向移动,并且当流星超出画布边界时,重新生成流星的位置和属性。
3.生成所有流星
生成一个包含 100 个流星的列表,每个流星的属性随机生成。
4.绘制流星雨
使用 while 循环实现流星雨的动画效果,每次循环清空画布,并绘制所有流星的运动轨迹和形状,然后更新画布,使其显示出来。
5.定义爱情表白窗口
使用 tkinter 库实现一个简单的表白窗口,包含一段文字和两个按钮:同意和拒绝。当点击同意按钮时,窗口关闭,跳转到流星雨动画界面。如果点击拒绝按钮,则弹出提示框,提醒用户再次选择。
6.绑定退出事件
使用 protocol() 函数绑定了退出事件,当点击窗口的关闭按钮时,弹出提示框,让用户再次确认是否退出程序。
总体来说,这个流星雨程序使用了多个库和模块,实现了流星雨动画和表白窗口的效果,并实现了一些交互功能,带来了一些新鲜和有趣的体验。
运行结果
蓝色流星雨
粉色流星雨
完整代码
import turtle as tu import random as ra import tkinter as tk import math def Meteors(): tu.setup(1.0, 1.0) tu.screensize(1.0, 1.0) #设置画布大小 tu.bgcolor('black') #设置画布颜色 tu.title("流星雨") t = tu.Pen() t.hideturtle() #隐藏画笔 # colors = ['skyblue', 'white', 'cyan', 'aqua'] #流星的颜色列表,蓝色 colors = ['pink', 'lightpink', 'deeppink'] #粉色 class Star(): #流星类 def __init__(self): self.r = ra.randint(50,100) self.t = ra.randint(1,3) self.x = ra.randint(-2000,1000) #流星的横坐标 self.y = ra.randint(444, 999) #流星的纵坐标 self.speed = ra.randint(5,10) #流星移动速度 self.color = ra.choice(colors) #流星的颜色 self.outline = 1 #流星的大小 def star(self): #画流星函数 t.pensize(self.outline) #流星的大小 t.penup() #提笔 t.goto(self.x,self.y) #随机位置 t.pendown() #落笔 t.color(self.color) t.begin_fill() t.fillcolor(self.color) t.setheading(-30) t.right(self.t) t.forward(self.r) t.left(self.t) t.circle(self.r*math.sin(math.radians(self.t)),180) t.left(self.t) t.forward(self.r) t.end_fill() def move(self): #流星移动函数 if self.y >= -500: #当流星还在画布中时 self.y -= self.speed #设置上下移动速度 self.x += 2*self.speed #设置左右移动速度 else: self.r = ra.randint(50,100) self.t = ra.randint(1,3) self.x = ra.randint(-2000,1000) self.y = 444 self.speed = ra.randint(5,10) self.color = ra.choice(colors) self.outline = 1 Stars = [] #用列表保存所有流星 for i in range(100): Stars.append(Star()) while True: #开始绘制 tu.tracer(0) t.clear() for i in range(100): #80个流星 Stars[i].move() Stars[i].star() tu.update() tu.mainloop() def love(): root = tk.Tk() root.title('?') root.resizable(0, 0) root.wm_attributes("-toolwindow", 1) screenwidth = root.winfo_screenwidth() screenheight = root.winfo_screenheight() widths = 300 heights = 100 x = (screenwidth - widths) / 2 y = (screenheight - heights) / 2 root.geometry('%dx%d+%d+%d' % (widths, heights, x, y)) # 设置在屏幕中居中显示 tk.Label(root, text='亲爱的,做我女朋友好吗?', width=37, font=('宋体', 12)).place(x=0, y=10) def OK(): # 同意按钮 root.destroy() # 同意后显示相应的效果 Meteors() def NO(): # 拒绝按钮,拒绝不会退出,必须同意才可以退出哦~ tk.messagebox.showwarning('?', '再给你一次机会!') def closeWindow(): tk.messagebox.showwarning('?', '逃避是没有用的哦') tk.Button(root, text='好哦', width=5, height=1, command=OK).place(x=80, y=50) tk.Button(root, text='不要', width=5, height=1, command=NO).place(x=160, y=50) root.protocol('WM_DELETE_WINDOW', closeWindow) # 绑定退出事件 root.mainloop() if __name__ == "__main__": love()
最后这里免费分享给大家一份Python学习资料,包含视频、源码。课件,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。
编程资料、学习路线图、源代码、软件安装包等!
看下方图片哦(掉落)↓↓↓
①
②
③
④
⑤