博客
关于我
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/

    你可能感兴趣的文章
    PHP中implode()和explode()
    查看>>
    PHP中serialize和json序列化与反序列化的区别
    查看>>
    Redis事务处理
    查看>>
    php中使用ajax进行前后端json数据交互
    查看>>
    Redis事务和锁操作
    查看>>
    php中引入文件几种方式的区别
    查看>>
    PHP中把stdClass Object转array的几个方法
    查看>>
    PHP中替换换行符
    查看>>
    PHP中有关正则表达式的函数集锦
    查看>>
    Redis 集群搭建详细指南
    查看>>
    php中的cookie用法
    查看>>
    php中的session用法
    查看>>
    php中级联,php实现三级级联下拉框_PHP
    查看>>
    PHP中获取星期的几种方法
    查看>>
    Redis 限速器及问题
    查看>>
    php中高级基础知识点
    查看>>
    php中,如何将编译后的代码,反编译回去。
    查看>>
    php之aop实践
    查看>>
    PHP之APC缓存详细介绍(转)
    查看>>
    php之memcache,memcached
    查看>>