猫史档案馆


【Python作品分享】小车(特效)【作品秀】

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


【作品展示】

center_image

 

【作品介绍】

小车会动、切换场景,每个场景有自己的特效

 

【作品源代码】

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


回复

上一页1 页 / 共 1下一页
原神-FanOfA.阿粉原神-FanOfA.阿粉

emotion_编程猫_加油emotion_雷电猴_围观

点赞0


评论


匮

emotion_囧

点赞0


评论