坡琨 发表于 5 天前

pygame小游戏飞机大战_11管理类创建

将main函数改为管理类函数
class Manager(object):
    def __init__(self):
      # 创建窗口
      self.screen = pygame.display.set_mode((480, 852), 0, 32)
      # 创建背景图片
      self.background = pygame.image.load("./feiji/background.png")
      # 初始化一个装玩家精灵的group
      self.players = pygame.sprite.Group()
      # 初始化一个装敌机精灵的group
      self.enemys = pygame.sprite.Group()
      # 初始化一个玩家爆炸的对象
      self.player_bomb = Bomb(self.screen, 'player')
      # 初始化一个敌机爆炸的对象
      self.enemy_bomb = Bomb(self.screen, 'enemy')
      # 初始化一个声音播放的对象
      self.sound = GameSound()

    def exit(self):
      print('退出')
      pygame.quit()
      exit()

    def new_player(self):
      # 创建飞机对象 添加到玩家的组
      player = Plane(self.screen)
      self.players.add(player)

    def new_enemy(self):
      # 创建敌机的对象 添加到敌机的组
      enemy = Enemy(self.screen)
      self.enemys.add(enemy)

    def main(self):
      # 播放背景音乐
      self.sound.PlayMusic()
      # 创建一个玩家
      self.new_player()
      # 创建一个敌机
      self.new_enemy()

      while True:
            # 把背景图片贴到窗口
            self.screen.blit(self.background, (0, 0))

            # 遍历所有的事件
            for event in pygame.event.get():
                # 判断事件类型如果是pygame的退出
                if event.type == pygame.QUIT:
                  self.exit()

            # 玩家飞机和子弹的显示
            self.players.update()
            # 敌机和子弹的显示
            self.enemys.update()

            # 刷新窗口内容
            pygame.display.update()
            time.sleep(0.01)

            # 判断碰撞
            iscollide = pygame.sprite.groupcollide(self.players, self.enemys, True, True)

            # 调用爆炸的对象
            self.player_bomb.draw()
            self.enemy_bomb.draw()
            if iscollide:
                items = list(iscollide.items())
                print(items)
                x = items
                y = items
                # 玩家爆炸图片
                self.player_bomb.action(x.rect)
                # 敌机爆炸图片
                self.enemy_bomb.action(y.rect)

            # 玩家飞机和子弹的显示
            self.players.update()
            # 敌机和子弹的显示
            self.enemys.update()

    # 刷新窗口内容
    pygame.display.update()
if __name__ == "main":
    manager = Manager()
    manager.main()
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: pygame小游戏飞机大战_11管理类创建