def scnene_game( gameDisplay ): # create game object # map play_map = GameMap(res.position_game_map, res.size_game_map, res.color_map, res.size_grid, res.game_map_grids, res.width_game_map_wall, res.color_wall) play_map.kit_reset( res.kit_max, res.kit_freq ) play_map.kit_gen() play_map.kit_gen() # player arrow arrow_p1 = Arrow(res.size_arrow, play_map.grid_center(res.grid_position_start_p1), (1,0), 2, res.speed_max, res.color_p1) arrow_p2 = Arrow(res.size_arrow, play_map.grid_center(res.grid_position_start_p2), (-1,0), 2, res.speed_max, res.color_p2) # player panel bar_p1 = PowerBar( res.position_panel_p1+res.size_panel_p1, res.speed_max, res.color_p1, (0,0,0) ) bar_p2 = PowerBar( res.position_panel_p2+res.size_panel_p2, res.speed_max, res.color_p2, (0,0,0) ) panel_p1 = PlayerPanel( res.position_panel_p1, res.size_panel_p1, res.color_p1 ) panel_p1.set_item_slot( res.slot_layout ) panel_p1.set_player( arrow_p1 ) panel_p1.set_power_bar( bar_p1 ) panel_p2 = PlayerPanel( res.position_panel_p2, res.size_panel_p2, res.color_p2 ) panel_p2.set_item_slot( res.slot_layout ) panel_p2.set_player( arrow_p2 ) panel_p2.set_power_bar( bar_p2 ) # add object to game gameArrowList = [] gameArrowList.append( ArrowInGame(arrow_p1) ) gameArrowList.append( ArrowInGame(arrow_p2) ) for gameArrow in gameArrowList: gameArrow.set_grid_position( play_map.detect_grid(gameArrow.arrow.position) ) # register key done event key_control = { res.control_p1['right']:lambda :game_map_turn_correct(arrow_p1, play_map, (1,0)), res.control_p1['left']: lambda :game_map_turn_correct(arrow_p1, play_map, (-1,0)), res.control_p1['up']: lambda :game_map_turn_correct(arrow_p1, play_map, (0,-1)), res.control_p1['down']: lambda :game_map_turn_correct(arrow_p1, play_map, (0,1)), res.control_p1['kit']: lambda :arrow_p1.kit_invoke(), res.control_p2['right']:lambda :game_map_turn_correct(arrow_p2, play_map, (1,0)), res.control_p2['left']: lambda :game_map_turn_correct(arrow_p2, play_map, (-1,0)), res.control_p2['up']: lambda :game_map_turn_correct(arrow_p2, play_map, (0,-1)), res.control_p2['down']: lambda :game_map_turn_correct(arrow_p2, play_map, (0,1)), res.control_p2['kit']: lambda :arrow_p2.kit_invoke() } game_over = False while not game_over: # handle event for event in pygame.event.get(): if event.type == pygame.QUIT: return False if event.type == pygame.KEYDOWN: for key in key_control: if key == event.key: key_control[key]() # print(event) # raise game event if (game_arrow_encounter(arrow_p1, arrow_p2) == res.game_brokeback): return True game_arrow_map_event( gameArrowList, play_map ) # progress game play_map.kit_progress() arrow_p1.progress() game_map_bump_correct( arrow_p1, play_map ) arrow_p2.progress() game_map_bump_correct( arrow_p2, play_map ) # render gameDisplay.fill(res.color_background) play_map.draw( gameDisplay ) panel_p1.draw( gameDisplay ) panel_p2.draw( gameDisplay ) arrow_p1.draw( gameDisplay ) arrow_p2.draw( gameDisplay ) pygame.display.update() res.clock.tick( res.tick_game )