最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Python寫一場新年煙花秀

 更新時間:2022年01月04日 09:35:08   作者:?Python小二?  
這篇文章主要介紹了利用Python寫一場新年煙花秀,可以送給朋友還可以當(dāng)作練習(xí),Python 模塊包括:tkinter、PIL、time、random、math,下面來看一下代碼實現(xiàn),需要的朋友可以參考一下

我們用到的 Python 模塊包括:tkinter、PILtime、random、math,如果第三方模塊沒有裝的話,pip install 一下即可,下面看一下代碼實現(xiàn)。

1.導(dǎo)庫

import tkinter as tk
from PIL import Image, ImageTk
from time import time, sleep
from random import choice, uniform, randint
from math import sin, cos, radians

2.煙花顏色

colors = ['red', 'blue', 'yellow', 'white', 'green', 'orange', 'purple', 'seagreen', 'indigo', 'cornflowerblue']

3.定義煙花類

class fireworks:
? ? 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
? ? ? ? # 煙花綻放 x 軸
? ? ? ? self.x = x
? ? ? ? # 煙花綻放 x 軸
? ? ? ? self.y = y
? ? ? ? self.initial_speed = explosion_speed
? ? ? ? # 外放 x 軸速度
? ? ? ? self.vx = vx
? ? ? ? # 外放 y 軸速度
? ? ? ? self.vy = vy
? ? ? ? # 綻放的粒子數(shù)
? ? ? ? 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)
? ? ? ? self.lifespan = lifespan

? ? # 更新數(shù)據(jù)
? ? 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
? ? ? ? ? ? move_y = sin(radians(self.id * 360 / self.total)) * self.initial_speed
? ? ? ? ? ? self.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))
? ? ? ? ? ? self.cv.move(self.cid, self.vx + move_x, self.vy + 0.5 * dt)
? ? ? ? ? ? self.vy += 0.5 * dt
? ? ? ? # 過期移除
? ? ? ? elif self.cid is not None:
? ? ? ? ? ? cv.delete(self.cid)
? ? ? ? ? ? self.cid = None

? ? # 定義膨脹效果的時間幀
? ? def expand(self):
? ? ? ? return self.age <= 1.5

? ? # 檢查粒子是否仍在生命周期內(nèi)
? ? def alive(self):
? ? ? ? return self.age <= self.lifespan

4.燃放煙花

def ignite(cv):
? ? t = time()
? ? # 煙花列表
? ? explode_points = []
? ? wait_time = randint(10, 100)
? ? # 爆炸的個數(shù)
? ? numb_explode = randint(6, 10)
? ? for point in range(numb_explode):
? ? ? ? # 爆炸粒子列表
? ? ? ? objects = []
? ? ? ? # 爆炸 x 軸
? ? ? ? x_cordi = randint(50, 550)
? ? ? ? # 爆炸 y 軸
? ? ? ? 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)
? ? ? ? # 爆炸的粒子數(shù)半徑
? ? ? ? total_particles = randint(10, 50)
? ? ? ? for i in range(1, total_particles):
? ? ? ? ? ? r = fireworks(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))
? ? ? ? ? ? # 添加進(jìn)粒子列表里
? ? ? ? ? ? objects.append(r)
? ? ? ? # 把粒子列表添加到煙花列表
? ? ? ? explode_points.append(objects)
? ? total_time = .0
? ? # 在 1.8 秒時間幀內(nèi)保持更新
? ? while total_time < 1.8:
? ? ? ? # 讓畫面暫停 0.01s
? ? ? ? sleep(0.01)
? ? ? ? # 刷新時間
? ? ? ? tnew = time()
? ? ? ? t, dt = tnew, tnew - t
? ? ? ? # 遍歷煙花列表
? ? ? ? for point in explode_points:
? ? ? ? ? ? # 遍歷煙花里的粒子列表
? ? ? ? ? ? for item in point:
? ? ? ? ? ? ? ? # 更新時間
? ? ? ? ? ? ? ? item.update(dt)
? ? ? ? # 刷新頁面
? ? ? ? cv.update()
? ? ? ? total_time += dt
? ? root.after(wait_time, ignite, cv)

5.啟動

if __name__ == "__main__":
? ? root = tk.Tk()
? ? # 繪制一個畫布
? ? cv = tk.Canvas(root, height=400, width=600)
? ? # 背景圖
? ? image = Image.open("bg.jpg")
? ? photo = ImageTk.PhotoImage(image)
? ? # 在畫板上繪制一張圖片
? ? cv.create_image(0, 0, image=photo, anchor='nw')
? ? cv.pack()
? ? root.protocol(close)
? ? root.after(100, ignite, cv)
? ? # 生成窗口
? ? root.mainloop()

看一下效果:

相關(guān)文章

  • 使用Django實現(xiàn)商城驗證碼模塊的方法

    使用Django實現(xiàn)商城驗證碼模塊的方法

    本文主要涉及圖形驗證碼的相關(guān)功能,主要包括,圖形驗證碼獲取、驗證碼文字存儲、驗證碼生成等。需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • python實現(xiàn)kMeans算法

    python實現(xiàn)kMeans算法

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)kMeans算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Pytorch矩陣乘法(torch.mul() 、 torch.mm() 和torch.matmul()的區(qū)別)

    Pytorch矩陣乘法(torch.mul() 、 torch.mm() 和torch.m

    在深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)的世界里,矩陣乘法是一項至關(guān)重要的操作,本文主要介紹了Pytorch矩陣乘法,包含了torch.mul() 、 torch.mm() 和torch.matmul()的區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Python爬蟲小技巧之偽造隨機(jī)的User-Agent

    Python爬蟲小技巧之偽造隨機(jī)的User-Agent

    這篇文章主要給大家介紹了關(guān)于Python爬蟲小技巧之偽造隨機(jī)的User-Agent的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • YOLOv5改進(jìn)系列之增加小目標(biāo)檢測層

    YOLOv5改進(jìn)系列之增加小目標(biāo)檢測層

    yolov5出來已經(jīng)很長時間了,所以有關(guān)yolov5的一些詳細(xì)介紹在這里就不一一介紹了,下面這篇文章主要給大家介紹了關(guān)于YOLOv5改進(jìn)系列之增加小目標(biāo)檢測層的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Python操作mysql數(shù)據(jù)庫實現(xiàn)增刪查改功能的方法

    Python操作mysql數(shù)據(jù)庫實現(xiàn)增刪查改功能的方法

    這篇文章主要介紹了Python操作mysql數(shù)據(jù)庫實現(xiàn)增刪查改功能的方法,涉及Python針對mysql數(shù)據(jù)庫的連接、增刪改查等相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • Python requests HTTP驗證登錄實現(xiàn)流程

    Python requests HTTP驗證登錄實現(xiàn)流程

    這篇文章主要介紹了Python requests HTTP驗證登錄實現(xiàn)流程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • Python學(xué)習(xí)之裝飾器與類的裝飾器詳解

    Python學(xué)習(xí)之裝飾器與類的裝飾器詳解

    這篇文章通過示例詳細(xì)為大家介紹了Python中的裝飾器以及類的裝飾器。通過學(xué)習(xí)裝飾器可以讓我們更好更靈活的使用函數(shù),還可以讓我們的代碼更加優(yōu)雅,感興趣的可以學(xué)習(xí)一下
    2022-03-03
  • 7個關(guān)于Python的經(jīng)典基礎(chǔ)案例

    7個關(guān)于Python的經(jīng)典基礎(chǔ)案例

    這篇文章主要給大家分享 7個關(guān)于Python的經(jīng)典基礎(chǔ)案例,列表排序、調(diào)換字典鍵值、刪除列表中的重復(fù)元素、輸出質(zhì)數(shù)、判斷是一年中第幾天、猜數(shù)字、進(jìn)制轉(zhuǎn)換;,需要的朋友可以參考一下
    2021-11-11
  • Python自動化辦公之生成PDF報告詳解

    Python自動化辦公之生成PDF報告詳解

    因為工作需要經(jīng)常需要生成很多的PDF報告給客戶查看產(chǎn)品效果以及過程的講解,每次都需要按照一定的格式的編寫文檔并生成PDF報告,這樣重復(fù)性的工作實在太累。本文就來用Python實現(xiàn)自動生成PDF報告吧
    2023-03-03

最新評論

阳西县| 龙泉市| 安仁县| 称多县| 金山区| 广德县| 遵义市| 丽江市| 鸡西市| 东乌珠穆沁旗| 河源市| 葵青区| 永泰县| 霍邱县| 沈阳市| 商洛市| 密云县| 景宁| 临海市| 博客| 察隅县| 韶山市| 昌图县| 九江市| 页游| 南澳县| 稷山县| 都江堰市| 西峡县| 淮北市| 秦安县| 申扎县| 商水县| 陇西县| 堆龙德庆县| 潮州市| 尚义县| 南通市| 巴马| 平潭县| 株洲市|