def test_player_powerup_pickup(self):
        self.brd = board.Board(3)
        self.brd.assign_player_with_location(0, 1, 2)
        self.brd.assign_player_with_location(1, 2, 2)

        self.brd.set_player_movement_direction(0, ["L"])
        self.brd.set_player_movement_direction(1, ["U"])

        # Make a hole where player with id 1 is going.
        self.brd.change_block(1, 2)

        # Make a powerup where player with id 0 is going.
        self.brd.add_powerup(1, 1)
        self.brd.complete_turn()

        self.assertEqual(self.brd.get_player_by_id(0).current_location, (1, 1))
        self.assertEqual(self.brd.get_player_by_id(0).power, 1)

        # 1 because one was picked up, and one was spawned.
        self.assertEqual(len(self.brd.powerup_locations), 1)
        self.assertFalse(1 in self.brd.player_list)

        # Two new cracked locations were spawned, and one location was turned into a hole!
        self.assertEqual(len(self.brd.cracked_locations), 2)

        self.brd.complete_turn()
    def test_gamestate_move_players_down(self):
        self.brd = board.Board(5)
        self.brd.assign_player_with_location(0, 0, 4)
        self.brd.set_player_movement_direction(0, ["D"])
        self.assertEqual(
            self.brd.get_player_by_id(0).intended_movement(), ["D"])
        self.brd.calculate_player_finished_positions()
        self.assertEqual(self.brd.get_player_by_id(0).current_location, (1, 4))

        self.brd.set_player_movement_direction(0, ["D"])
        self.assertEqual(
            self.brd.get_player_by_id(0).intended_movement(), ["D"])
        self.brd.calculate_player_finished_positions()
        self.assertEqual(self.brd.get_player_by_id(0).current_location, (2, 4))

        self.brd.set_player_movement_direction(0, ["D"])
        self.assertEqual(
            self.brd.get_player_by_id(0).intended_movement(), ["D"])
        self.brd.calculate_player_finished_positions()
        self.assertEqual(self.brd.get_player_by_id(0).current_location, (3, 4))

        self.brd.set_player_movement_direction(0, ["D"])
        self.assertEqual(
            self.brd.get_player_by_id(0).intended_movement(), ["D"])
        self.brd.calculate_player_finished_positions()
        self.assertEqual(self.brd.get_player_by_id(0).current_location, (4, 4))

        self.brd.set_player_movement_direction(0, ["D"])
        self.assertEqual(
            self.brd.get_player_by_id(0).intended_movement(), ["D"])
        self.brd.calculate_player_finished_positions()
        self.assertEqual(self.brd.get_player_by_id(0).current_location, (4, 4))
 def test_gamestate_powerup_addition_to_cracked(self):
     # Initialize game size
     self.brd = board.Board(10)
     # Set the block to cracked
     self.brd.change_block(1, 1)
     self.assertFalse(self.brd.check_block(1, 1).has_powerup)
     self.brd.add_powerup(1, 1)
     self.assertTrue(self.brd.check_block(1, 1).has_powerup)
 def test_gamestate_transition_stable_with_powerup(self):
     # Initialize game size
     self.brd = board.Board(10)
     self.assertFalse(self.brd.check_block(1, 1).has_powerup)
     self.brd.add_powerup(1, 1)
     self.assertTrue(self.brd.check_block(1, 1).has_powerup)
     self.brd.change_block(1, 1)
     self.assertTrue(self.brd.check_block(1, 1).has_powerup)
    def test_gamestate_regular_block_is_stable_20x20(self):
        # Initialize game size
        self.brd = board.Board(20)

        # Ensure that the two corners are both stable, and the stable_locations set is equal to 100
        self.assertEqual(self.brd.check_block_state(0, 0),
                         board.BlockState.STABLE)
        self.assertEqual(self.brd.check_block_state(19, 19),
                         board.BlockState.STABLE)
        self.assertEqual(len(self.brd.stable_locations), 400)
 def test_gamestate_powerup_addition_to_hole(self):
     # Initialize game size
     self.brd = board.Board(10)
     # Set the block to hole
     self.brd.change_block(1, 1)
     self.brd.change_block(1, 1)
     self.assertFalse(self.brd.check_block(1, 1).has_powerup)
     self.brd.add_powerup(1, 1)
     # Doesnt work because the powerup cannot exist over a hole
     self.assertFalse(self.brd.check_block(1, 1).has_powerup)
    def test_gamestate_transition_cracked_with_powerup(self):
        # Initialize game size
        self.brd = board.Board(10)

        # Set two blocks to cracked, then run transition function
        self.brd.change_block(1, 1)
        self.brd.add_powerup(1, 1)
        self.assertTrue(self.brd.check_block(1, 1).has_powerup)
        self.brd.transition_blocks()
        self.assertFalse(self.brd.check_block(1, 1).has_powerup)
    def test_gamestate_move_with_collisions_of_same_power(self):
        self.brd = board.Board(3)
        self.brd.assign_player_with_location(0, 0, 2)
        self.brd.assign_player_with_location(1, 2, 2)
        self.brd.assign_player_with_location(2, 1, 1)

        self.brd.set_player_movement_direction(0, ["D"])
        self.brd.set_player_movement_direction(1, ["U"])
        self.brd.set_player_movement_direction(2, ["R"])
        self.brd.calculate_player_finished_positions()
        self.assertEqual(self.brd.get_player_by_id(0).current_location, (0, 2))
        self.assertEqual(self.brd.get_player_by_id(1).current_location, (2, 2))
        self.assertEqual(self.brd.get_player_by_id(2).current_location, (1, 1))
    def test_gamestate_move_into_lower_power_squish_from_wall(self):
        self.brd = board.Board(2)
        self.brd.assign_player_with_location(0, 0, 2)
        self.brd.assign_player_with_location(1, 1, 2)

        # Player 1 is stronger, and will go first.
        self.brd.get_player_by_id(1).add_power(1)

        self.brd.set_player_movement_direction(0, ["S"])
        self.brd.set_player_movement_direction(1, ["U"])

        self.brd.calculate_player_finished_positions()

        self.assertTrue(self.brd.get_player_by_id(0).dead)
        self.assertEqual(self.brd.get_player_by_id(1).current_location, (0, 2))
    def test_gamestate_transition_cracked_states(self):
        # Initialize game size
        self.brd = board.Board(10)

        # Set two blocks to cracked, then run transition function

        self.brd.change_block(1, 1)
        self.brd.change_block(1, 2)

        self.assertEqual(len(self.brd.cracked_locations), 2)
        self.assertEqual(len(self.brd.hole_locations), 0)

        self.brd.transition_blocks()

        self.assertEqual(len(self.brd.hole_locations), 2)
        self.assertEqual(len(self.brd.cracked_locations), 0)
    def test_gamestate_move_players_left(self):
        self.brd = board.Board(3)
        self.brd.assign_player_with_location(0, 0, 2)

        self.brd.set_player_movement_direction(0, ["L"])
        self.assertEqual(
            self.brd.get_player_by_id(0).intended_movement(), ["L"])
        self.brd.calculate_player_finished_positions()
        self.assertEqual(self.brd.get_player_by_id(0).current_location, (0, 1))

        self.brd.set_player_movement_direction(0, ["L"])
        self.assertEqual(
            self.brd.get_player_by_id(0).intended_movement(), ["L"])
        self.brd.calculate_player_finished_positions()
        self.assertEqual(self.brd.get_player_by_id(0).current_location, (0, 0))

        self.brd.set_player_movement_direction(0, ["L"])
        self.assertEqual(
            self.brd.get_player_by_id(0).intended_movement(), ["L"])
        self.brd.calculate_player_finished_positions()
        self.assertEqual(self.brd.get_player_by_id(0).current_location, (0, 0))
    def test_gamestate_complete_transition_of_block(self):
        # Initialize game size
        self.brd = board.Board(10)

        # Checking the inital gamestate initialization
        self.assertEqual(self.brd.check_block_state(2, 2),
                         board.BlockState.STABLE)
        self.assertTrue((2, 2) in self.brd.stable_locations)

        # Checking the state after we do another change to cracked
        self.brd.change_block(2, 2)
        self.assertEqual(self.brd.check_block_state(2, 2),
                         board.BlockState.CRACKED)
        self.assertFalse((2, 2) in self.brd.stable_locations)
        self.assertEqual(self.brd.cracked_locations, {(2, 2)})

        # Checking the state after we do the final change to hole
        self.brd.change_block(2, 2)
        self.assertEqual(self.brd.check_block_state(2, 2),
                         board.BlockState.HOLE)
        self.assertFalse(self.brd.cracked_locations)
        self.assertEqual(self.brd.hole_locations, {(2, 2)})
Пример #13
0
 def setUp(self):
     self.brd = board.Board(10, 10)
 def test_gamestate_generate_powerup_with_no_stable(self):
     # Initialize game size
     self.brd = board.Board(1)
     self.brd.change_block(0, 0)
     self.brd.randomly_generate_powerups(3)
     self.assertEqual(len(self.brd.powerup_locations), 0)
 def test_gamestate_generate_player_positions(self):
     self.brd = board.Board(10)
     self.brd.assign_players(5)
     self.assertEqual(len(self.brd.get_player_locations()), 5)
 def test_gamestate_generate_powerups_with_many_players(self):
     self.brd = board.Board(2)
     self.brd.assign_players(3)
     # Try to gen more powerups then there is space.
     self.brd.randomly_generate_powerups(3)
     self.assertEqual(len(self.brd.powerup_locations), 1)
 def test_gamestate_powerup_addition_to_stable(self):
     # Initialize game size
     self.brd = board.Board(10)
     self.assertFalse(self.brd.check_block(1, 1).has_powerup)
     self.brd.add_powerup(1, 1)
     self.assertTrue(self.brd.check_block(1, 1).has_powerup)
 def test_gamestate_generate_3_powerups(self):
     # Initialize game size
     self.brd = board.Board(10)
     self.brd.randomly_generate_powerups(3)
     self.assertEqual(len(self.brd.powerup_locations), 3)