Python結(jié)合turtle簡單開發(fā)一個(gè)煙花小工具
本系列博文將通過Python代碼示例和詳細(xì)步驟講解,讓學(xué)習(xí)過程更加生動(dòng)有趣。Python語言簡潔高效,兼具靈活性與實(shí)用性,歡迎持續(xù)關(guān)注。
下面是一個(gè)使用 Python + turtle 模塊 實(shí)現(xiàn)的簡單 煙花效果展示小工具。它使用了 turtle 圖形庫,無需安裝額外依賴(Python 標(biāo)準(zhǔn)庫自帶),適合在本地直接運(yùn)行。我們只需要安裝好python環(huán)境。然后就可以運(yùn)行。
效果體驗(yàn)

為了方便初學(xué)者體驗(yàn)。分享源代碼。手動(dòng)來運(yùn)行py
python yanhua.py
源代碼
import turtle
import random
import math
# 設(shè)置屏幕
screen = turtle.Screen()
screen.bgcolor("black")
screen.title("Python 煙花效果")
screen.tracer(0, 0) # 關(guān)閉自動(dòng)刷新,提高性能
# 煙花粒子類
class FireworkParticle:
def __init__(self, x, y, color):
self.t = turtle.Turtle()
self.t.shape("circle")
self.t.shapesize(0.1, 0.1) # 小圓點(diǎn)
self.t.color(color)
self.t.penup()
self.t.goto(x, y)
self.t.pendown()
# 隨機(jī)方向和速度
angle = random.uniform(0, 2 * math.pi)
speed = random.uniform(2, 6)
self.vx = math.cos(angle) * speed
self.vy = math.sin(angle) * speed
self.life = random.randint(20, 40) # 存活幀數(shù)
def move(self):
self.t.setx(self.t.xcor() + self.vx)
self.t.sety(self.t.ycor() + self.vy)
self.vy -= 0.1 # 重力
self.life -= 1
return self.life > 0
def hide(self):
self.t.hideturtle()
# 存儲(chǔ)所有粒子
particles = []
# 創(chuàng)建煙花函數(shù)
def create_firework(x, y):
colors = ["red", "orange", "yellow", "green", "blue", "purple", "white", "pink"]
for _ in range(30): # 每個(gè)煙花30個(gè)粒子
color = random.choice(colors)
particles.append(FireworkParticle(x, y, color))
# 隨機(jī)在屏幕中發(fā)射煙花
def launch_random_firework():
x = random.randint(-300, 300)
y = random.randint(-100, 200)
create_firework(x, y)
# 主循環(huán)
frame = 0
while True:
frame += 1
if frame % 60 == 0: # 每60幀(約1秒)發(fā)射一個(gè)煙花
launch_random_firework()
# 更新粒子
for p in particles[:]:
if not p.move():
p.hide()
particles.remove(p)
screen.update() # 手動(dòng)刷新畫面
turtle.delay(10) # 控制速度
# 注意:正常退出會(huì)被無限循環(huán)阻塞,可按 Ctrl+C 強(qiáng)制退出如何運(yùn)行
確保你安裝了 Python(3.6+ 推薦)。
將上面代碼保存為 yanhua.py。運(yùn)行后
會(huì)彈出一個(gè)黑色窗口,自動(dòng)播放煙花動(dòng)畫。
關(guān)閉窗口或按Ctrl+C(在終端中)退出程序。
效果說明
每秒隨機(jī)位置發(fā)射一個(gè)彩色煙花。
每個(gè)煙花由 30 個(gè)彩色粒子組成,呈放射狀散開并受“重力”影響下落。
使用了 turtle.tracer(0,0) + 手動(dòng) update() 提高性能,避免閃爍。
可擴(kuò)展建議
添加音效(需 playsound 或 pygame)。
支持鼠標(biāo)點(diǎn)擊發(fā)射煙花。
增加爆炸聲、多層煙花、漸變色等效果。
改用 pygame 或 tkinter 實(shí)現(xiàn)更流暢動(dòng)畫(適合復(fù)雜項(xiàng)目)。
到此這篇關(guān)于Python結(jié)合turtle簡單開發(fā)一個(gè)煙花小工具的文章就介紹到這了,更多相關(guān)Python煙花內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中所有子圖標(biāo)簽Legend顯示問題記錄
在Python中,利用matplotlib創(chuàng)建的子圖可以很容易地添加圖例,無論是為每個(gè)子圖單獨(dú)添加,還是統(tǒng)一在一起,本文詳細(xì)介紹了如何在多個(gè)子圖中顯示圖例,包括全局圖例的顯示、圖例樣式的調(diào)整和圖例位置的調(diào)整等,需要的朋友可以參考下2024-12-12
Python數(shù)據(jù)分析之Numpy庫的使用詳解
NumPy(Numerical Python)是Python的一種開源的數(shù)值計(jì)算擴(kuò)展。這種工具可用來存儲(chǔ)和處理大型矩陣,比Python自身的嵌套列表結(jié)構(gòu)要高效的多(該結(jié)構(gòu)也可以用來表示矩陣(matrix)),支持大量的維度數(shù)組與矩陣運(yùn)算,此外也針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫2021-11-11
使用python Telnet遠(yuǎn)程登錄執(zhí)行程序的方法
今天小編就為大家分享一篇使用python Telnet遠(yuǎn)程登錄執(zhí)行程序的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01
python?判斷字符串當(dāng)中是否包含字符(str.contain)
這篇文章主要介紹了python?判斷字符串當(dāng)中是否包含字符(str.contain),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
深入理解Python內(nèi)置函數(shù)map filter reduce及與列表推導(dǎo)式對(duì)比
這篇文章主要為大家介紹了Python內(nèi)置函數(shù)map filter reduce及與列表推導(dǎo)式對(duì)比方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06

