找回密码
 立即注册
首页 业界区 安全 pygame小游戏飞机大战_11管理类创建

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

坡琨 5 天前
将main函数改为管理类函数
  1. class Manager(object):
  2.     def __init__(self):
  3.         # 创建窗口
  4.         self.screen = pygame.display.set_mode((480, 852), 0, 32)
  5.         # 创建背景图片
  6.         self.background = pygame.image.load("./feiji/background.png")
  7.         # 初始化一个装玩家精灵的group
  8.         self.players = pygame.sprite.Group()
  9.         # 初始化一个装敌机精灵的group
  10.         self.enemys = pygame.sprite.Group()
  11.         # 初始化一个玩家爆炸的对象
  12.         self.player_bomb = Bomb(self.screen, 'player')
  13.         # 初始化一个敌机爆炸的对象
  14.         self.enemy_bomb = Bomb(self.screen, 'enemy')
  15.         # 初始化一个声音播放的对象
  16.         self.sound = GameSound()
  17.     def exit(self):
  18.         print('退出')
  19.         pygame.quit()
  20.         exit()
  21.     def new_player(self):
  22.         # 创建飞机对象 添加到玩家的组
  23.         player = Plane(self.screen)
  24.         self.players.add(player)
  25.     def new_enemy(self):
  26.         # 创建敌机的对象 添加到敌机的组
  27.         enemy = Enemy(self.screen)
  28.         self.enemys.add(enemy)
  29.     def main(self):
  30.         # 播放背景音乐
  31.         self.sound.PlayMusic()
  32.         # 创建一个玩家
  33.         self.new_player()
  34.         # 创建一个敌机
  35.         self.new_enemy()
  36.         while True:
  37.             # 把背景图片贴到窗口
  38.             self.screen.blit(self.background, (0, 0))
  39.             # 遍历所有的事件
  40.             for event in pygame.event.get():
  41.                 # 判断事件类型如果是pygame的退出
  42.                 if event.type == pygame.QUIT:
  43.                     self.exit()
  44.             # 玩家飞机和子弹的显示
  45.             self.players.update()
  46.             # 敌机和子弹的显示
  47.             self.enemys.update()
  48.             # 刷新窗口内容
  49.             pygame.display.update()
  50.             time.sleep(0.01)
  51.             # 判断碰撞
  52.             iscollide = pygame.sprite.groupcollide(self.players, self.enemys, True, True)
  53.             # 调用爆炸的对象
  54.             self.player_bomb.draw()
  55.             self.enemy_bomb.draw()
  56.             if iscollide:
  57.                 items = list(iscollide.items())[0]
  58.                 print(items)
  59.                 x = items[0]
  60.                 y = items[1][0]
  61.                 # 玩家爆炸图片
  62.                 self.player_bomb.action(x.rect)
  63.                 # 敌机爆炸图片
  64.                 self.enemy_bomb.action(y.rect)
  65.             # 玩家飞机和子弹的显示
  66.             self.players.update()
  67.             # 敌机和子弹的显示
  68.             self.enemys.update()
  69.     # 刷新窗口内容
  70.     pygame.display.update()
  71. if __name__ == "main":
  72.     manager = Manager()
  73.     manager.main()
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册