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

【作品介绍】
......
【作品源代码】
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