猫史档案馆


【Python作品分享】护送卫星【去太空,趣编程】【120强进36】【作品秀】

用户:abcdesteveabcdesteve查看:0 回复:3 评论:0 创建时间:2021-05-16T23:59:34


【作品展示】

center_image

 

【作品介绍】

护送卫星

 

【作品源代码】

from math import trunc
from arcade import *
import random

WIDTH = 900
HEIGHT = 600
TITLE = '护送卫星'


class Satellite(Sprite):
    def __init__(self):
        super().__init__('卫星.gif')
        self.center_x = WIDTH//2
        self.center_y = 200
        self.size = 4

    def update(self):
        super().update()
        self.center_x += self.change_x
        if self.left < 0:
            self.left = 0
        if self.right > WIDTH:
            self.right = WIDTH


class Stone(Sprite):
    def __init__(self):
        super().__init__('陨石.png')
        self.center_x = random.randint(0, WIDTH)
        self.center_y = HEIGHT
        self.change_y = -random.randint(1, 5)

    def update(self):
        super().update()
        self.center_y += self.change_y
        if self.top < 0:
            self.喵()


class Main(Window):
    def __init__(self, width, height, title):
        super().__init__(width, height, title)
        self.setup()

    def setup(self):
        self.flag = 0
        self.time = 0
        self.stones = SpriteList()
        self.satellite = Satellite()
        self.gameover = Sprite('gameover.png')
        self.gameover.center_x = WIDTH//2
        self.gameover.center_y = HEIGHT//2

    def on_draw(self):
        start_render()
        self.satellite.draw()
        self.stones.draw()
        print(self.flag)
        if self.flag == 1:
            self.gameover.draw()
        if self.flag == 2:
            print(0)
            draw_text('You win!!!', 450, 300, color.RED, 25,
                      align='center', font_name='fangzheng', bold=True)
        if self.flag == 0:
            draw_text(f'time:{int(self.time)}', 20, HEIGHT-40, color.WHITE,
                      15, align='center', font_name='fangzheng', bold=True)

    def on_update(self, delta_time):
        self.time += delta_time
        if int(self.time) >= 30:
            self.flag = 2
        if self.flag == 0:
            if random.randint(0, 50) == 0:
                for i in range(random.randint(1, 3)):
                    self.stones.append(Stone())
            self.satellite.update()
            self.stones.update()
            if check_for_collision_with_list(self.satellite, self.stones):
                self.satellite.喵()
                self.flag = 1

    def on_key_press(self, symbol, modifiers):
        if symbol == key.LEFT:
            self.satellite.change_x = -3
        elif symbol == key.RIGHT:
            self.satellite.change_x = 3


if __name__ == '__main__':
    game = Main(WIDTH, HEIGHT, TITLE)
    run()

 

【提示】

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

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
abcdesteveabcdesteve

护送卫星
左右键控制
坚持30s胜利
撞到陨石失败

点赞0


评论


abcdesteveabcdesteve

center_imagecenter_imagecenter_imagecenter_image

点赞0


评论


mornwindmornwind

过点了

16日之前

点赞0


评论