用户:原神-FanOfA.阿粉查看:0 回复:2 评论:0 创建时间:2020-03-31T15:38:23
【作品展示】

【作品介绍】
小车会动、切换场景,每个场景有自己的特效
【作品源代码】
from arcade import *
# 设置窗体大小
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
# 设置窗体标题
SCREEN_TITLE = '小车'
class MyDraw(arcade.Window):
def __init__(self, width, height, title):
super().__init__(width, height, title)
# 窗体初始化
self.setup()
def setup(self):
# 设置背景颜色
set_background_color(color.BLIZZARD_BLUE)
self.bx = 400
self.by = 150
# self.bg_1 = Sprite('/Users/mao/Desktop/mycar/images/road.png')
# self.bg_2 = Sprite('/Users/mao/Desktop/mycar/images/喵.png')
self.bg_list = ['/Users/mao/Desktop/mycar/images/road.png',
'/Users/mao/Desktop/mycar/images/喵.png',
'/Users/mao/Desktop/mycar/images/forest.png']
self.current_scene = 0
self.change_bg()
self.balloons = []
self.birds_l = []
self.birds_r = []
self.raindrops = []
self.create_rain()
def on_draw(self): # 更新窗口
start_render()
draw_rectangle_filled(400, 100, 800, 200, color.GO_GREEN)
self.bg.draw()
self.mydraw()
for balloon in self.balloons:
balloon.draw()
for bird in self.birds_l:
bird.draw()
for bird in self.birds_r:
bird.draw()
for rain in self.raindrops:
rain.draw()
def change_bg(self):
self.bg = Sprite(self.bg_list[self.current_scene])
self.bg.center_x = 400
self.bg.center_y = 300
def on_update(self, delta_time): # 处理逻辑
self.bx += 5
for balloon in self.balloons:
balloon.center_y += 5
for bird in self.birds_l:
bird.center_x += 5
for bird in self.birds_r:
bird.center_x -= 5
for rain in self.raindrops:
rain.center_y -= 5
if self.bx > 900 and self.current_scene == 0:
self.bx = -100
self.current_scene = 1
self.change_bg()
self.raindrops = []
self.create_balloon()
elif self.bx > 900 and self.current_scene == 1:
self.bx = -100
self.current_scene = 2
self.change_bg()
self.balloons = []
self.create_bird()
elif self.bx > 900 and self.current_scene == 2:
self.bx = -100
self.current_scene = 0
self.change_bg()
self.birds_l = []
self.birds_r = []
self.create_rain()
def mydraw(self):
draw_rectangle_filled(self.bx, self.by + 70, 100, 80, color.RED)
draw_rectangle_filled(self.bx, self.by + 70, 40, 40, color.SKY_BLUE)
draw_rectangle_filled(self.bx, self.by, 200, 60, color.RED)
draw_circle_filled(self.bx - 50, self.by - 30, 30, color.BLACK)
draw_circle_filled(self.bx + 50, self.by - 30, 30, color.BLACK)
# draw_text('——by「训练师」', self.bx + 100, self.by - 80, color.BLUE,
# font_name = ('simhei', 'PingFang'))
def create_balloon(self):
balloon_list = ('/Users/mao/Desktop/mycar/images/balloon01.png',
'/Users/mao/Desktop/mycar/images/balloon02.png',
'/Users/mao/Desktop/mycar/images/balloon03.png',
'/Users/mao/Desktop/mycar/images/balloon04.png',
'/Users/mao/Desktop/mycar/images/balloon05.png',
'/Users/mao/Desktop/mycar/images/balloon06.png',
'/Users/mao/Desktop/mycar/images/balloon07.png',
'/Users/mao/Desktop/mycar/images/balloon08.png',
'/Users/mao/Desktop/mycar/images/balloon09.png',
'/Users/mao/Desktop/mycar/images/balloon10.png',
'/Users/mao/Desktop/mycar/images/balloon11.png',
'/Users/mao/Desktop/mycar/images/balloon12.png',)
num = 50
for i in range(num):
balloon = Sprite(random.choice(balloon_list))
balloon.center_x = random.randint(0, SCREEN_WIDTH)
balloon.center_y = -random.randint(300, 600)
self.balloons.append(balloon)
def create_bird(self):
bird_list_l = ('/Users/mao/Desktop/mycar/images/bird05.png',
'/Users/mao/Desktop/mycar/images/bird06.png',
'/Users/mao/Desktop/mycar/images/bird07.png',
'/Users/mao/Desktop/mycar/images/bird08.png')
num = 50
for i in range(num):
bird = Sprite(random.choice(bird_list_l))
bird.center_x = -random.randint(0, 400)
bird.center_y = random.randint(400, SCREEN_HEIGHT)
self.birds_l.append(bird)
# 右边的鸟
bird_list_r = ('/Users/mao/Desktop/mycar/images/bird01.png',
'/Users/mao/Desktop/mycar/images/bird02.png',
'/Users/mao/Desktop/mycar/images/bird03.png',
'/Users/mao/Desktop/mycar/images/bird04.png')
num = 50
for i in range(num):
bird = Sprite(random.choice(bird_list_r))
bird.center_x = random.randint(800, 1200)
bird.center_y = random.randint(400, SCREEN_HEIGHT)
self.birds_r.append(bird)
def create_rain(self):
raindrop = '/Users/mao/Desktop/mycar/images/raindrop.png'
num = 100
for i in range(num):
rain = Sprite(raindrop)
rain.center_x = random.randint(0, 800)
rain.center_y = random.randint(SCREEN_HEIGHT, 1200)
self.raindrops.append(rain)
if __name__ == '__main__':
game = MyDraw(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_TITLE)
run()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn