pygame小游戲飛機大戰(zhàn)_11管理類創(chuàng)建
將main函數(shù)改為管理類函數(shù)
class Manager(object):
def __init__(self):
# 創(chuàng)建窗口
self.screen = pygame.display.set_mode((480, 700), 0, 32)
# 創(chuàng)建背景圖片
self.background = pygame.image.load("./images/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):
# 創(chuàng)建飛機對象 添加到玩家的組
player = Plane(self.screen)
self.players.add(player)
def new_enemy(self):
# 創(chuàng)建敵機的對象 添加到敵機的組
enemy = Enemy(self.screen)
self.enemys.add(enemy)
def main(self):
# 播放背景音樂
self.sound.PlayMusic()
# 創(chuàng)建一個玩家
self.new_player()
# 創(chuàng)建一個敵機
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()
# 繪制爆炸效果
self.player_bomb.draw()
self.enemy_bomb.draw()
# 刷新窗口內(nèi)容
pygame.display.update()
time.sleep(0.01)
# 判斷碰撞
iscollide = pygame.sprite.groupcollide(self.players, self.enemys, True, True)
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)
# 重新創(chuàng)建玩家和敵機
self.new_player()
self.new_enemy()
if __name__ == "__main__":
# 初始化pygame
pygame.init()
manager = Manager()
manager.main()
浙公網(wǎng)安備 33010602011771號