def run_game(): #获取游戏参数 game_settings = Settings() #初始化游戏 pygame.init() screen = pygame.display.set_mode( (game_settings.screen_width, game_settings.screen_height)) pygame.display.set_caption("飞机大战") #初始化游戏控制 gs = GameStats(game_settings, screen) #定义玩家 player = Fighter(game_settings, screen, gs.img_role) #存储敌机 enemies1 = pygame.sprite.Group() enemies_down = pygame.sprite.Group() #存储补给 supplies = pygame.sprite.Group() #定义时钟 clock = pygame.time.Clock() while True: # 控制游戏帧数,表示每秒循环60次 clock.tick(60) if gs.bStarted and not gs.bPaused and not gs.bOver and not gs.bWin: #发射子弹 player.shoot(gs) #生成敌机 Enemy.discover(game_settings, gs, enemies1) #生成补给 Supply.discover(game_settings, gs, supplies) #更新敌机并检测碰撞 cf.update_enemies(screen, enemies1, enemies_down, player, gs.sound_gameover) #更新子弹并检测碰撞 cf.update_bullets(game_settings, player, enemies1, enemies_down, supplies) #更新补给并检测碰撞 cf.update_supplies(game_settings, gs, player, enemies1, enemies_down, supplies) #更新画面 cf.update_screen(game_settings, gs, screen, player, enemies1, enemies_down, supplies) #鼠标和键盘事件处理 cf.check_events(gs, player)
def on_exec(self): fight1 = Fighter(self.win, window_size=self.window_size, villian=True) fight2 = Fighter(self.win, window_size=self.window_size, villian=False) ani = Player('aniket', self.win) f_dir = 'w' run = True x_cod, y_cod = 0, 0 while run: pygame.time.delay(100) for event in pygame.event.get(): if event.type == pygame.QUIT: run = False keys = pygame.key.get_pressed() if keys[pygame.QUIT]: run = False if keys[pygame.K_RIGHT]: x, y = fight1.get_xy() f_dir = 'w' x_cod, y_cod = ani.move_right(x, y) elif keys[pygame.K_UP]: x, y = fight1.get_xy() f_dir = 'n' x_cod, y_cod = ani.move_up(x, y) elif keys[pygame.K_DOWN]: x, y = fight1.get_xy() f_dir = 's' x_cod, y_cod = ani.move_down(x, y) elif keys[pygame.K_LEFT]: x, y = fight1.get_xy() f_dir = 'e' x_cod, y_cod = ani.move_left(x, y) elif keys[pygame.K_SPACE]: head, direction, is_v = fight1.shoot() print(head) ani.shoot(head, direction) self.win.fill((0, 0, 0)) fight1.draw_fighter(x_cod, y_cod, f_dir) fight2.draw_fighter(40, 50, 'e') pygame.display.update() pygame.quit()