猫史档案馆


【Python作品分享】myfireworks.py【教程贴】

用户:涵涵出品涵涵出品查看:0 回复:0 评论:0 创建时间:2023-04-07T22:08:43


【作品展示】

center_image

 

【作品介绍】

......

 

【作品源代码】

from arcade import *
from arcade import color
from arcade import key
import math
import random

# 设置窗体宽高
SCREEN_WIDTH = 600
SCREEN_HEIGHT = 600

# 设置窗体标题
SCREEN_TITLE = "My Fireworks"
FIREWORKS_INIT = 0
FIREWORKS_UP = 1
FIREWORKS_EXPLOOE = 2
FIREWORKS_DIE = 3

#烟花颜色
FIREWORKS_COLORS = (color.GREEN, color.RED, color.SKY_BLUE, color.ORANGE, color.PINK_PEARL, color.LIGHT_PASTEL_PURPLE, color.GOLDEN_YELLOW, color.WHITE)

#消失时间
FIREWORKS_EXPLOOE_TIME = 2

#焰火
class Firework():
    def __init__(self, x, y, size):
        self.x = x
        self.y = y
        self.size = size
        self.color = random.choice(FIREWORKS_COLORS)
        self.angle = random.randint(0, 360)
        self.v = random.randint(10, 30)
        #最高高度
        self.max_y = SCREEN_HEIGHT - 200
    
    def draw(self):
        喵 = self.v * math.sin(math.radians(self.angle))
        vy = self.v * math.cos(math.radians(self.angle))
        self.x += 喵
        self.y += vy
        draw_point(self.x, self.y, self.color, self.size)

#烟花
class Fireworks(Firework):
    def __init__(self, x, y, size, num):
        super().__init__(x, y, size)
        self.num = num
        self.setup()

    def setup(self):
        self.fireworks = []
        for i in range(self.num):
            firework = Firework(self.x, self.y, self.size)
            self.fireworks.append(firework)

    def draw(self):
        for firework in self.fireworks:
            firework.draw()

class MyFireworks(Window):

    def __init__(self, width, height, title):
        super().__init__(width, height, title)
        # 窗体初始化
        self.setup()

    def setup(self):
        # 设置窗体颜色
        set_background_color(color.BLACK)
        self.status = FIREWORKS_INIT
        self.total_time = 0
        self.fullscreen_flag = False
        self.x = SCREEN_WIDTH // 2
        self.max_y = SCREEN_HEIGHT - 200

    def on_draw(self):
        start_render()
        if self.status == FIREWORKS_UP:
            self.up_firework.draw()
        elif self.status == FIREWORKS_EXPLOOE:
            self.explode_fireworks.draw()

    def create_up_firewords(self):
        
        self.up_firework = Firework(self.x, 0, 20)
        self.up_firework.angle = 0
        self.up_firework.v = 5

    def create_explode_fireworks(self):
        self.explode_fireworks = Fireworks(
            self.up_firework.x, self.up_firework.y, 5, 100)

    def on_key_release(self, symbol, modifiers):
        if self.status == FIREWORKS_INIT and symbol == key.SPACE:
            self.create_up_firewords()
            self.status = FIREWORKS_UP
        elif symbol == key.F or symbol == key.ESCAPE:
            self.fullscreen_flag = not self.fullscreen_flag
            self.set_fullscreen(self.fullscreen_flag)
            if self.x == SCREEN_WIDTH // 2:
                self.x = SCREEN_WIDTH * 1.5
                self.max_y = SCREEN_HEIGHT * 1.25
            else:
                self.x = SCREEN_WIDTH // 2
                self.max_y = SCREEN_HEIGHT  - 200

    def on_update(self, delta_time):
        if self.status == FIREWORKS_UP:
            if self.up_firework.y > self.max_y:
                self.create_explode_fireworks()
                self.status = FIREWORKS_EXPLOOE
        elif self.status == FIREWORKS_EXPLOOE:
            self.total_time += delta_time
            if self.total_time > FIREWORKS_EXPLOOE_TIME:
                self.status = FIREWORKS_DIE
                self.total_time = 0
        elif self.status == FIREWORKS_DIE:
            self.up_firework = None
            self.explode_fireworks = None
            self.status = FIREWORKS_INIT

if __name__ == '__main__':
    game = MyFireworks(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_TITLE)
    run()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页