Пример #1
0
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 )