基于python實現(xiàn)新春煙花盛宴效果
效果預覽
環(huán)境需求
- python3.11.4及以上
- PyCharm Community Edition 2023.2.5
- pyinstaller6.2.0(可選,這個庫用于打包,使程序沒有python環(huán)境也可以運行,如果想發(fā)給好朋友的話需要這個庫哦~)
【注】
- python環(huán)境搭建請見:最新python下載安裝及環(huán)境搭建教程_python_腳本之家 (jb51.net)
- pyinstaller使用教程見:將python代碼打包成.exe文件直接運行的具體步驟_python_腳本之家 (jb51.net)
新春煙花
程序設計
# 導入必要的庫 import tkinter # 導入tkinter庫用于GUI import random # 導入random庫用于生成隨機數(shù) # 函數(shù):將窗口居中顯示 def center_window(window, width, height): screen_width = window.winfo_screenwidth() screen_height = window.winfo_screenheight() x = (screen_width - width) // 2 y = (screen_height - height) // 2 window.geometry(f'{width}x{height}+{x}+{y}') # 設置窗口的位置和大小 # 函數(shù):生成隨機顏色 def color(): r = random.randint(0, 255) g = random.randint(0, 255) b = random.randint(0, 255) return f'#{r:02x}{g:02x}{b:02x}' # 返回隨機顏色值的字符串表示 # 創(chuàng)建主窗口 root = tkinter.Tk() # 創(chuàng)建主窗口對象 root.title("新春煙花") # 設置窗口標題 width = 888 height = 666 center_window(root, width, height) # 調用center_window函數(shù)將窗口居中顯示 # 創(chuàng)建畫布 canvas = tkinter.Canvas(root, bg='black') # 創(chuàng)建畫布對象,背景色為黑色 canvas.pack(fill=tkinter.BOTH, expand=1) # 將畫布填滿整個窗口并擴展 # 鼠標點擊事件處理函數(shù) def on_click(event): x = event.x y = event.y firework = Firework(canvas, x, y) # 創(chuàng)建Firework對象 firework.fire() # 發(fā)射煙花 # 綁定鼠標點擊事件 canvas.bind('<Button-1>', on_click) # 運行主循環(huán) root.mainloop() # 啟動主循環(huán),等待用戶交互事件 ……(完整代碼見文末系列文章哦)
程序分析
這段代碼是使用Python的Tkinter庫創(chuàng)建的一個簡單GUI應用程序,模擬了新春煙花的效果。程序的主要功能是在用戶點擊畫布時,在鼠標點擊的位置生成并動態(tài)展示煙花效果。
代碼結構與功能概述:
1. 導入所需的庫:
- `tkinter`:用于構建圖形用戶界面(GUI)的基礎庫。
- `random`:用于生成隨機數(shù)以實現(xiàn)不同顏色和粒子運動軌跡的變化。
2. 定義輔助函數(shù):
- `center_window(window, width, height)`:接受窗口對象、寬度和高度參數(shù),計算窗口在屏幕上的居中坐標,并設置窗口大小和位置。
3. 定義一個生成隨機顏色的方法 `color()`,返回一個隨機RGB值表示的顏色字符串。
4. 定義了一個名為`Firework`的類,其包含以下方法:
- `__init__(self, canvas, x, y)`:初始化煙花對象,包括畫布引用、初始坐標、隨機顏色以及煙花粒子列表。
- `create_particles(self)`:為煙花生成一定數(shù)量(99個)的隨機速度的粒子,每個粒子用橢圓表示,并存儲粒子ID及其速度信息。
- `update(self)`:更新煙花狀態(tài),增加粒子半徑、減少壽命,并根據(jù)粒子速度移動粒子,移除超出畫布范圍的粒子。
- `fire(self)`:在畫布上繪制出煙花主體,并啟動定時器調用`launch`方法開始連續(xù)更新煙花狀態(tài)。
- `launch(self)`:連續(xù)執(zhí)行`update`方法,當所有粒子消失或煙花壽命結束時從畫布上刪除煙花。
5. 創(chuàng)建主窗口`root`,設置標題和窗口尺寸,并調用`center_window`將其居中顯示。
6. 在窗口內(nèi)創(chuàng)建一個黑色背景的畫布,并將畫布填滿整個窗口。
7. 定義鼠標點擊事件處理函數(shù)`on_click(event)`,在鼠標左鍵點擊時,根據(jù)點擊坐標創(chuàng)建一個`Firework`實例并發(fā)射煙花。
8. 將鼠標點擊事件綁定到畫布上。
9. 最后運行主循環(huán)`root.mainloop()`,持續(xù)監(jiān)聽用戶交互和GUI事件,直到窗口被關閉。
通過這個程序,用戶可以在畫布上任意位置點擊來觸發(fā)煙花動畫,每朵煙花由多個隨機顏色和方向的粒子組成,粒子會按照設定的速度在畫布上移動,逐漸擴散并最終消失,從而模擬出真實的煙花綻放和消散的效果。
運行結果
寫在最后
到此這篇關于基于python實現(xiàn)新春煙花盛宴效果的文章就介紹到這了,更多相關python新春煙花效果內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!