将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())[0]
- print(items)
- x = items[0]
- y = items[1][0]
- # 玩家爆炸图片
- 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()
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |