博客
关于我
Python源代码 ---飞机大战游戏
阅读量:493 次
发布时间:2019-03-06

本文共 3406 字,大约阅读时间需要 11 分钟。

?????????????????

?????????????????????????????????????????????????????

???????

  • ?????????????????????????????Pygame???????Sprite??????????????????????????????GameSprite????????????????
  • class GameSprite(pygame.sprite.Sprite):    def __init__(self, image_name, speed=1):        super().__init__()        self.image = pygame.image.load(image_name)        self.rect = self.image.get_rect()        self.speed = speed
    1. ?????????????????????????????????????????
    2. class Background(GameSprite):    def __init__(self, is_alt=False):        super().__init__("./images/background.png")        if is_alt:            self.rect.y = -self.rect.height
      1. ????????????????????????????
      2. class Enemy(GameSprite):    def __init__(self):        super().__init__("./images/enemy1.png")        self.speed = random.randint(1,3)        max_x = SCREEN_RECT.width - self.rect.width        self.rect.x = random.randint(0, max_x)
        1. ?????????????????????????????
        2. class Hero(GameSprite):    def __init__(self):        super().__init__("./images/me1.png", 0)        self.rect.centerx = SCREEN_RECT.centerx        self.rect.bottom = SCREEN_RECT.bottom - 120        self.bullets_group = pygame.sprite.Group()
          1. ???????????????????????
          2. class Bullet(GameSprite):    def __init__(self):        super().__init__("./images/bullet1.png", -2)

            ?????????

          3. ?????????????????????????????????????
          4. class PlaneGame:    def __init__(self):        print("?????")        self.screen = pygame.display.set_mode(SCREEN_RECT.size)        self.clock = pygame.time.Clock()        self.__create_sprites()        pygame.time.set_timer(CREATE_ENEMY_EVENT, 1000)        pygame.time.set_timer(HERO_FIRE_EVENT, 500)
            1. ?????????????????????????????????
            2. def start_game(self):        print("????...")        while True:            self.clock.tick(FRAME_PRE_SEC)            self.__event_handler()            self.__check_collide()            self.__update_sprites()            pygame.display.update()
              1. ???????????????????????????????
              2. def __event_handler(self):        for event in pygame.event.get():            if event.type == pygame.QUIT:                PlaneGame.__game__over()            elif event.type == CREATE_ENEMY_EVENT:                enemy = Enemy()                self.enemy_group.add(enemy)            elif event.type == HERO_FIRE_EVENT:                self.hero.fire()        keys_pressed = pygame.key.get_pressed()        if keys_pressed[pygame.K_RIGHT]:            self.hero.speed = 2        elif keys_pressed[pygame.K_LEFT]:            self.hero.speed = -2        else:            self.hero.speed = 0
                1. ?????????????????????????
                2. def __check_collide(self):        pygame.sprite.groupcollide(self.hero.bullets_group, self.enemy_group, True, True)        enemies = pygame.sprite.spritecollide(self.hero, self(enemy_group), True)        if len(enemies) > 0:            self.hero.kill()            PlaneGame.__game__over()
                  1. ??????????????????????????
                  2. def __update_sprites(self):        self.back_group.update()        self.back_group.draw(self.screen)        self.enemy_group.update()        self.enemy_group.draw(self.screen)        self.hero_group.update()        self.hero_group.draw(self.screen)        self.hero.bullets_group.update()        self.hero.bullets_group.draw(self.screen)

                    ??????????????????????

                    @staticmethod    def __game__over():        print("????")        pygame.quit()        exit()

                    ????????????????????????????????????????????????????????????????????????

    转载地址:http://dildz.baihongyu.com/

    你可能感兴趣的文章
    PgSQL · 特性分析 · PG主备流复制机制
    查看>>
    phoenix连接hbase报错Can not resolve hadoop120, please check your network_记录026---大数据工作笔记0187
    查看>>
    PHP
    查看>>
    Regular Expression Notes
    查看>>
    PHP $FILES error码对应错误信息
    查看>>
    PHP $_FILES函数详解
    查看>>
    php & 和 & (主要是url 问题)
    查看>>
    php -- 魔术方法 之 判断属性是否存在或为空:__isset()
    查看>>
    php -- 魔术方法 之 获取属性:__get()
    查看>>
    php -树-二叉树的实现
    查看>>
    PHP -算法-二路归并
    查看>>
    php aes sha1解密,PHP AES加密/解密
    查看>>
    php csv 导出
    查看>>
    PHP imap 远程命令执行漏洞复现(CVE-2018-19518)
    查看>>
    php include和require
    查看>>
    ref 和out 区别
    查看>>
    php JS 导出表格特殊处理
    查看>>
    php json dom解析
    查看>>
    php laravel请求处理管道(装饰者模式)
    查看>>
    PHP mongoDB 操作
    查看>>