Python表白代码:“ 星光月夜烟花皆归你,我也归你”(满天烟花盛开、附番外玫瑰)
?導語
"慢品人間煙火色 閑觀人間歲月長"
? ? ? ? ? ? ? ? ? ? ? ? ? ? ———致自己???
?
🌙 遇見我以后,我們的故事就開始了,愿你歷經山河,仍覺得人間值得🌙。
?
?星光月夜煙花皆歸你,我也歸你。關于煙花🎇大家都?知道多少?有多少表白故事情節都發生在煙
花下,想必木木子👸不用說大家也知道叭~??
今天這則小短文就是關于煙花的故事!你準備好跟我一起進入煙花的世界了嘛?
?正文
“每一句文案,都有一個故事,你仔細聽”
?
1)環境安裝🎊
準備好:Python3、Pycharm、Tkinter、Pygame、Pillow以及一些自帶模塊。
安裝命令統一:
pip install -i https://pypi.douban.com/simple/ +模塊名2)素材展示🎨
2.1音樂背景(可自選)
2.2圖片素材(可修改)
3)正式敲代碼🎊
3.1導入庫
import random import pygame as py import tkinter as tk from time import time, sleep from tkinter import filedialog from PIL import Image, ImageTk from math import sin, cos, radians from random import choice, uniform, randint3.2界面窗口設置
if __name__ == '__main__': root = tk.Tk() root.title('漫天煙花——祝大家—有情人終成眷屬') # 設置窗體的標題欄cv = tk.Canvas(root, height=600, width=600)#繪制一個高600,寬600的畫布 bgpath = filedialog.askopenfilename(title='請選擇背景圖片')#選擇背景圖片image = Image.open(bgpath)#打開背景圖片image = image.resize((600,600), Image.ANTIALIAS)#把背景圖片調整成窗口大小photo = ImageTk.PhotoImage(image) cv.create_image(0, 0, image=photo, anchor='nw')#在畫布上繪制加載的背景圖片 bgmusic = filedialog.askopenfilename(title='請選擇背景音樂')py.mixer.init()# 初始化py.mixer.music.load(bgmusic)# 文件加載py.mixer.music.play(-1, 0, fade_ms=50)# 播放 第一個是播放值 -1代表循環播放, 第二個參數代表開始播放的時間py.mixer.music.pause() #暫停py.mixer.music.unpause()#取消暫停cv.pack()#把cv添加進去root.protocol("WM_DELETE_WINDOW", close)root.after(200, simulate, cv)#在0.1秒后再調用stimulate函數,生成一輪煙花綻放效果root.mainloop()#執行root,生成窗口3.3顏色設置隨機
def randomcolor():#生成隨機顏色colArr = ['1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']color = ""for i in range(6):color += colArr[random.randint(0,14)]return "#"+colorGRAVITY = 0.06 #重力變量 colors = ['red', 'blue', 'yellow', 'white', 'green', 'orange', 'purple', 'seagreen','indigo', 'cornflowerblue', 'pink'] #顏色列表3.4主程序煙花
class part: #為每一個煙花綻放出來的粒子單獨構建一個類的對象 ,每個粒子都會有一些重要的屬性,決定它的外觀(大小、顏色)、移動速度等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 = idx#每個煙花的特定標識符self.x = x#煙花綻放x軸self.y = y#煙花綻放y軸self.initial_speed = explosion_speed#粒子初始速度self.vx = vx#粒子運動x軸速度self.vy = vy#粒子運動y軸速度self.total = total#綻放粒子數self.age = 0#粒子已停留時間self.color = color#粒子顏色self.cv = cv#畫布self.cid = self.cv.create_oval(x - size, y - size, x + size,y + size, fill=self.color, outline='white',width=0.01)#指定一個限定矩形(Tkinter 會自動在這個矩形內繪制一個橢圓)self.lifespan = lifespan#粒子在畫布上停留的時間def update(self, dt): self.age += dt#更新粒子停留時間if self.alive() and self.expand():#如果粒子既存活又處于擴張階段move_x = cos(radians(self.id*360/self.total))*self.initial_speed#粒子x軸繼續膨脹move_y = sin(radians(self.id*360/self.total))*self.initial_speed#粒子y軸繼續膨脹self.cv.move(self.cid, move_x, move_y)#根據id把畫布上的粒子移動x和y個距離self.vx = move_x/(float(dt)*1000)#粒子x軸的速度elif self.alive():columnFont = ('華文行楷',14)#如果粒子僅存活不擴張(只是停留時間足夠,說明膨脹到最大了),則自由墜落self.cv.create_text(250, 100, text='喜',tag="write_tag", fill=choice(colors),font = columnFont) #字體self.cv.create_text(300, 100, text='歡',tag="write_tag", fill=choice(colors),font = columnFont)self.cv.create_text(350, 100, text='你',tag="write_tag", fill=choice(colors),font = columnFont)self.cv.create_text(400, 100, text='吖',tag="write_tag", fill=choice(colors),font = columnFont)#刪除文字標簽move_x = cos(radians(self.id*360/self.total))#x軸的移動位移# 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#更新y軸elif self.cid is not None:#如果粒子生命周期已過,則將其移除cv.delete(self.cid)#在畫布上移除該粒子對象self.cv.delete("write_tag")#同時移除字體self.cid = Nonedef expand (self):#定義膨脹效果時間幀return self.age <= 1.2#判斷膨脹時間是否小于1.2秒def alive(self):#判斷粒子是否仍在生命周期內return self.age <= self.lifespan#判斷已停留時間是否小于應該停留時間''' Firework simulation loop: Recursively call to repeatedly emit new fireworks on canvas a list of list (list of stars, each of which is a list of particles) is created and drawn on canvas at every call, via update protocol inside each 'part' object '''def simulate(cv):t = time()#返回自1970年后經過的浮點秒數,精確到小數點后7位explode_points = []#爆炸點列表,煙花列表wait_time = randint(10,100)#等待時間為10到100之間整數numb_explode = randint(8,20)#爆炸煙花個數時6到10之間的隨機整數# create list of list of all particles in all simultaneous explosionfor point in range(numb_explode):#為所有模擬煙花綻放的全部粒子創建一列列表if point<=4:objects = []#每個點的爆炸粒子列表粒子列表x_cordi = 250 + point*50#每個爆炸點的x軸y_cordi = 100#每個爆炸點的y軸speed = uniform (0.5, 1.5) #每個爆炸點的速度size = uniform (0.5,3)#每個爆炸點的大小color = choice(colors)#每個爆炸點的顏色explosion_speed = uniform(0.6, 3)#爆炸的綻放速度total_particles = randint(10,60)#煙花的總粒子數for i in range(1,total_particles):#同一個煙花爆炸出來的粒子大小、速度、坐標都是相同的r = part(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))#把上述參數代入part函數,但是每個粒子的生存時間是自己獨立的objects.append(r)#把r添加進粒子列表explode_points.append(objects)#把粒子列表添加進煙花列表else: objects = []#每個點的爆炸粒子列表粒子列表x_cordi = randint(50,550)#每個爆炸點的x軸y_cordi = randint(50, 150)#每個爆炸點的y軸speed = uniform (0.5, 1.5) #每個爆炸點的速度size = uniform (0.5,3)#每個爆炸點的大小color = choice(colors)#每個爆炸點的顏色explosion_speed = uniform(0.3, 2)#爆炸的綻放速度total_particles = randint(10,50)#煙花的總粒子數for i in range(1,total_particles):#同一個煙花爆炸出來的粒子大小、速度、坐標都是相同的r = part(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))#把上述參數代入part函數,但是每個粒子的生存時間是自己獨立的objects.append(r)#把r添加進粒子列表explode_points.append(objects)#把粒子列表添加進煙花列表total_time = .0#初始化總時間# keeps undate within a timeframe of 1.8 second while total_time < 2:#當總時間小于1.8秒時運行該循環sleep(0.03)#讓畫面暫停0.01秒tnew = time()#刷新時間t, dt = tnew, tnew - t#時間等于新時間,和上次時間間隔為tnew-tfor point in explode_points:#遍歷煙花列表for item in point:#遍歷煙花里的粒子列表item.update(dt)#粒子更新時間cv.update()#刷新畫布total_time += dt#為while循環增加時間root.after(wait_time, simulate, cv)#將組件置于其他組件之后,放在最頂層,覆蓋下面的,遞歸調用自己,形成新一輪的爆炸def close(*ignore):#打開模擬循環并關閉窗口"""Stops simulation loop and closes the window."""global rootroot.quit()?4)效果展示💐
展示四組煙花效果哈——其余的自己拿代碼試試哦~🎇其實都是動態放煙花滴~
一、?PART 01🌻
1.0 隨機作品展示效果?
1.2 煙花文案——滿天星辰🌙
? 湊不夠滿天星辰 那就放煙花給你看
? 煙花很美 你看著煙花微笑時的微笑更美
? 你帶我看了一場煙花 我夢里都是你的微笑
? 若時光是醉世煙花,你能否與我共看璀璨風華
? 心上人有他的煙花之火 心上人是你的眼光有火
I will luve thee still, my dear.
While the sands o' life shall run.?
二、PART 02🌻
1.0隨機作品展示效果?
1.2?煙花文案——三生煙火🌙
? 一根仙女棒可以燃燒9秒 瞬間釋放180個火焰比銀河系的星星還多 所以我喊你出來放煙花是想給你滿天繁星
? 獨看煙花綻放,獨守煙花漸涼
?
? 煙花轉瞬即逝,灰燼倒是永恒
?
? 我用三生煙火,還你一世迷離
?
? 你,曾如此美麗的煙花盛放在我的天空,當煙火散盡后,我于殘垣斷壁處,只尋得一地的支離破碎
I will luve thee still, my dear.
While the sands o' life shall run.
?三、PART 03🌻
1.0?隨機作品展示效果?
1.2?煙花文案——十里長街🌙
? 從此煙花,不止剎那,如我的祝福,不會隨寂寞瞬間落下
? 你的出現 就像深夜里綻放的煙花 雖然只有一瞬間 卻照亮了我的整個人生
? 十里寒潭路,煙花一半醒
? 煙花綻放,徐徐仰望,寂寥無眠,思卿斷腸
? 長街長,煙花繁,你挑燈回看, 短亭短,紅塵輾,我把蕭再嘆
?
I will luve thee still, my dear.
While the sands o' life shall run.
四、PART 04🌻
1.0?隨機作品展示效果?
1.2?煙花文案——一眼萬年🌙
? 煙花是永遠的,因為它在我心里刻在了永恒的美麗。煙花是幸福的,因為它自己對留下的瞬間肯定了自己的美麗
? 喜歡你時,我的心里全都是綻放的小小煙花。那,在今年煙花盛開的時候,就讓我撲到你懷里好不好?
? 一定要和你看一場煙火大會,感受一場浪漫與心動
? 煙花絢麗綻放,一瞬即是一世。守護之心堅定,千年亦在咫尺
? 剎那芳華,猶如指尖流沙。燦爛煙花,終究剪不下
I will luve thee still, my dear.
While the sands o' life shall run.
5)番外表白篇——玫瑰文末附代碼🍁
“誰都逃不過玫瑰 而玫瑰送誰都浪漫”
5.1 玫瑰Turtle作品一
5.2?玫瑰Turtle作品二
"我終將落俗 但浪漫不死"
總結
"哪有女孩子不喜歡鮮花不愛浪漫"! 好啦——煙花是你——玫瑰也是你!
文章就到這里就寫完啦~代碼拿去表白或者給對象叭!
???
🎯完整的源碼免費分享滴!需要的滴滴我!
你們的支持是我最大的動力!!記得三連哦~mua?歡迎大家閱讀往期的文章哦~
?
總結
以上是生活随笔為你收集整理的Python表白代码:“ 星光月夜烟花皆归你,我也归你”(满天烟花盛开、附番外玫瑰)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#操作Excel(1)Excel对象模
- 下一篇: 四叶草启动linux黑屏,E1-471G