def test_king_can_move_around_and_stuff_stays_consistent(self):
     # # # # # # # # # #
     #  0 1 2 3 4 5 6 7#
     #0 _ _ _ _ _ _ _ _#
     #1 x _ x _ _ _ _ _#
     #2 _ t _ _ _ x _ _#
     #3 x _ B _ B _ _ _#
     #4 _ _ _ x _ _ _ _#
     #5 _ _ _ _ _ _ _ _#
     #6 _ _ _ _ _ _ _ _#
     #7 _ _ _ _ _ _ _ _#
     # # # # # # # # # #
     self.tboard.place_king(2, 1, origin.TOP)
     self.tboard.place_piece(3, 2, origin.BOTTOM)
     self.tboard.place_piece(3, 4, origin.BOTTOM)
     calc = Movement(self.tboard.game.board, 2, 1)
     moves = calc.get_available_moves()
     self.assertEqual(4, len(moves))
     self.assertEqual(as_move_list([(2, 1), (1, 0)]), moves[0])
     self.assertEqual(as_move_list([(2, 1), (1, 2)]), moves[1])
     self.assertEqual(as_move_list([(2, 1), (3, 0)]), moves[2])
     self.assertEqual(as_move_list([(2, 1), (4, 3), (2, 5)]), moves[3])
     
     self.tboard.game.move_piece((2, 1), (4, 3))
     self.assertIsNone(self.tboard.game.get_piece(2, 1))
     self.assertIsNotNone(self.tboard.game.get_piece(3, 2))
     self.assertIsNotNone(self.tboard.game.get_piece(4, 3))
     
     self.assertTrue(self.tboard.game.get_piece(4, 3).is_king())
     
     self.tboard.game.move_piece((4, 3), (2, 5))
     self.assertIsNone(self.tboard.game.get_piece(3, 2))
     self.assertIsNone(self.tboard.game.get_piece(3, 4))
     self.assertIsNotNone(self.tboard.game.get_piece(2, 5))
 def test_once_you_move_if_piece_is_adjacent_for_jumping_over_do_not_allow_jump(self):
     # # # # # # # # # #
     #  0 1 2 3 4 5 6 7#
     #0 _ _ _ _ _ _ _ _#
     #1 _ _ _ _ _ _ _ _#
     #2 _ T _ _ _ _ _ _#
     #3 x _ x _ _ _ _ _#
     #4 _ _ _ B _ _ _ _#
     #5 _ _ _ _ _ _ _ _#
     #6 _ _ _ _ _ _ _ _#
     #7 _ _ _ _ _ _ _ _#
     # # # # # # # # # #
     self.tboard.place_piece(2, 1, origin.TOP)
     self.tboard.place_piece(4, 3, origin.BOTTOM)
     calc = Movement(self.tboard.game.board, 2, 1)
     moves = calc.get_available_moves()
     self.assertEqual(as_move_list([(2, 1), (3, 0)]), moves[0])
     self.assertEqual(as_move_list([(2, 1), (3, 2)]), moves[1])
     
     self.tboard.game.move_piece((2, 1), (3, 2))
     self.assertIsNone(self.tboard.game.current_turn.piece)
     self.tboard.game.move_piece((3, 2), (5, 4))
     self.assertIsNone(self.tboard.game.get_piece(5, 4))
     self.assertIsNotNone(self.tboard.game.get_piece(4, 3))
     self.assertIsNotNone(self.tboard.game.get_piece(3, 2))
 def test_once_move_completed_jumped_pieces_eaten(self):
     # # # # # # # # # #
     #  0 1 2 3 4 5 6 7#
     #0 _ _ _ _ _ _ x _#
     #1 _ _ _ _ _ T _ _#
     #2 x _ _ _ x _ _ _#
     #3 _ T _ T _ _ _ _#
     #4 _ _ B _ _ _ _ _#
     #5 _ _ _ x _ _ _ _#
     #6 _ _ _ _ B _ _ _#
     #7 _ _ _ _ _ x _ _#
     # # # # # # # # # #
     self.tboard.place_piece(1, 5, origin.TOP)
     self.tboard.place_piece(3, 1, origin.TOP)
     self.tboard.place_piece(3, 3, origin.TOP)
     self.tboard.place_piece(4, 2, origin.BOTTOM)
     self.tboard.place_piece(6, 4, origin.BOTTOM)
     calc = Movement(self.tboard.game.board, 4, 2)
     moves = calc.get_available_moves()
     self.assertEqual(2, len(moves))
     self.assertEqual(as_move_list([(4, 2), (2, 0)]), moves[0])
     self.assertEqual(as_move_list([(4, 2), (2, 4), (0, 6)]), moves[1])
     self.tboard.game.current_turn = Turn(self.tboard.game, origin.TOP)
     self.tboard.game.move_piece((4, 2), (2, 4))
     self.tboard.game.move_piece((2, 4), (0, 6))
     
     self.assertIsNone(self.tboard.game.get_piece(4, 2))
     self.assertIsNone(self.tboard.game.get_piece(3, 3))
     self.assertIsNone(self.tboard.game.get_piece(2, 4))
     self.assertIsNone(self.tboard.game.get_piece(1, 5))
     self.assertIsNotNone(self.tboard.game.get_piece(0, 6))
 def test_cannot_move_opponent_piece_while_player_move_not_complete(self):
     # # # # # # # # # #
     #  0 1 2 3 4 5 6 7#
     #0 _ _ _ _ _ _ _ _#
     #1 _ _ _ _ _ _ _ _#
     #2 _ _ _ T _ _ _ _#
     #3 _ _ B _ B _ _ _#
     #4 _ x _ _ _ x _ _#
     #5 _ _ B _ _ _ _ _#
     #6 _ _ _ x _ _ _ _#
     #7 _ _ _ _ _ _ _ _#
     # # # # # # # # # #
     self.tboard.place_piece(2, 3, origin.TOP)
     self.tboard.place_piece(3, 2, origin.BOTTOM)
     self.tboard.place_piece(3, 4, origin.BOTTOM)
     self.tboard.place_piece(5, 2, origin.BOTTOM)
     calc = Movement(self.tboard.game.board, 2, 3)
     moves = calc.get_available_moves()
     self.assertEqual(2, len(moves))
     self.assertEqual(as_move_list([(2, 3), (4, 1), (6, 3)]), moves[0])
     self.assertEqual(as_move_list([(2, 3), (4, 5)]), moves[1])
     
     self.tboard.game.move_piece((2, 3), (4, 1))
     self.assertIsNone(self.tboard.game.get_piece(2, 3))
     self.assertIsNotNone(self.tboard.game.get_piece(4, 1))
     
     self.tboard.game.move_piece((3, 2), (2, 1))
     self.assertIsNotNone(self.tboard.game.get_piece(3, 2))
     self.assertIsNone(self.tboard.game.get_piece(2, 1))
 def test_get_avail_moves_with_opponent_piece_returns_jumped_position(self):
     self.tboard.place_piece(1, 5, origin.TOP)
     self.tboard.place_piece(2, 4, origin.BOTTOM)
     calc = Movement(self.tboard.game.board, 1, 5)
     moves = calc.get_available_moves()
     self.assertEqual(2, len(moves))
     self.assertEqual(as_move_list([(1, 5), (3, 3)]), moves[0])
     self.assertEqual(as_move_list([(1, 5), (2, 6)]), moves[1])
 def test_king_moves_case_2(self):
     # # # # # # # # # #
     #  0 1 2 3 4 5 6 7#
     #0 _ _ _ _ _ _ _ _#
     #1 _ _ _ _ _ _ _ _#
     #2 _ _ _ _ _ _ _ _#
     #3 _ _ _ _ _ _ _ _#
     #4 _ _ _ _ _ _ _ _#
     #5 _ _ _ _ _ _ _ _#
     #6 _ _ x _ x _ _ _#
     #7 _ _ _ t _ _ _ _#
     # # # # # # # # # #
     self.tboard.place_king(7, 3, origin.TOP)
     calc = Movement(self.tboard.game.board, 7, 3)
     moves = calc.get_available_moves()
     self.assertEqual(2, len(moves))
     self.assertEqual(as_move_list([(7, 3), (6, 2)]), moves[0])
     self.assertEqual(as_move_list([(7, 3), (6, 4)]), moves[1])
 def test_cannot_jump_over_own_kind(self):
     # # # # # # # # # #
     #  0 1 2 3 4 5 6 7#
     #0 _ _ _ _ _ _ _ _#
     #1 _ _ _ _ _ _ _ _#
     #2 _ _ _ _ _ _ _ _#
     #3 _ _ T _ _ _ _ _#
     #4 _ T _ T _ _ _ _#
     #5 _ _ _ _ _ _ _ _#
     #6 _ _ _ _ _ _ _ _#
     #7 _ _ _ _ _ _ _ _#
     # # # # # # # # # #
     self.tboard.place_piece(3, 2, origin.TOP)
     self.tboard.place_piece(4, 1, origin.TOP)
     self.tboard.place_piece(4, 3, origin.TOP)
     calc = Movement(self.tboard.game.board, 3, 2)
     moves = calc.get_available_moves()
     self.assertEqual(0, len(moves))
 def test_cannot_jump_over_own_kind_case_2(self):
     # # # # # # # # # #
     #  0 1 2 3 4 5 6 7#
     #0 _ _ _ _ _ _ _ _#
     #1 _ _ _ _ _ _ _ _#
     #2 _ _ _ _ _ _ _ _#
     #3 _ _ T _ _ _ _ _#
     #4 _ T _ B _ _ _ _#
     #5 _ _ _ _ x _ _ _#
     #6 _ _ _ _ _ T _ _#
     #7 _ _ _ _ _ _ _ _#
     # # # # # # # # # #
     self.tboard.place_piece(3, 2, origin.TOP)
     self.tboard.place_piece(4, 1, origin.TOP)
     self.tboard.place_piece(4, 3, origin.BOTTOM)
     self.tboard.place_piece(6, 5, origin.TOP)
     calc = Movement(self.tboard.game.board, 3, 2)
     moves = calc.get_available_moves()
     self.assertEqual(1, len(moves))
     self.assertEqual(as_move_list([(3, 2), (5, 4)]), moves[0])
 def test_king_can_move_in_either_direction(self):
     # # # # # # # # # #
     #  0 1 2 3 4 5 6 7#
     #0 _ _ _ _ _ _ _ _#
     #1 _ _ _ _ _ _ _ _#
     #2 _ x _ x _ _ _ _#
     #3 _ _ b _ _ _ _ _#
     #4 _ x _ T _ _ _ _#
     #5 _ _ _ _ x _ _ _#
     #6 _ _ _ _ _ _ _ _#
     #7 _ _ _ _ _ _ _ _#
     # # # # # # # # # #
     self.tboard.place_king(3, 2, origin.BOTTOM)
     self.tboard.place_piece(4, 3, origin.TOP)
     calc = Movement(self.tboard.game.board, 3, 2)
     moves = calc.get_available_moves()
     self.assertEqual(4, len(moves))
     self.assertEqual(as_move_list([(3, 2), (4, 1)]), moves[0])
     self.assertEqual(as_move_list([(3, 2), (5, 4)]), moves[1])
     self.assertEqual(as_move_list([(3, 2), (2, 1)]), moves[2])
     self.assertEqual(as_move_list([(3, 2), (2, 3)]), moves[3])
 def test_moves_case_4(self):
     # # # # # # # # # #
     #  0 1 2 3 4 5 6 7#
     #0 _ _ _ T _ _ _ _#
     #1 _ _ B _ x _ _ _#
     #2 _ x _ _ _ _ _ _#
     #3 _ _ B _ _ _ _ _#
     #4 _ _ _ x _ _ _ _#
     #5 _ _ B _ _ _ _ _#
     #6 _ x _ _ _ _ _ T#
     #7 _ _ _ _ _ _ _ _#
     # # # # # # # # # #
     self.tboard.place_piece(0, 3, origin.TOP)
     self.tboard.place_piece(1, 2, origin.BOTTOM)
     self.tboard.place_piece(3, 2, origin.BOTTOM)
     self.tboard.place_piece(5, 2, origin.BOTTOM)
     calc = Movement(self.tboard.game.board, 0, 3)
     moves = calc.get_available_moves()
     self.assertEqual(2, len(moves))
     self.assertEqual(as_move_list([(0, 3), (2, 1), (4, 3), (6, 1)]), moves[0])
     self.assertEqual(as_move_list([(0, 3), (1, 4)]), moves[1])
 def test_king_moves_doesnt_jump_over_own_dudes(self):
     # # # # # # # # # #
     #  0 1 2 3 4 5 6 7#
     #0 _ _ _ _ _ _ _ _#
     #1 _ _ _ _ x _ _ _#
     #2 _ x _ b _ t _ _#
     #3 _ _ t _ _ _ _ _#
     #4 _ T _ t _ _ _ _#
     #5 _ _ _ _ _ _ _ _#
     #6 _ _ _ _ _ _ _ _#
     #7 _ _ _ _ _ _ _ _#
     # # # # # # # # # #
     self.tboard.place_king(2, 3, origin.BOTTOM)
     self.tboard.place_king(2, 5, origin.TOP)
     self.tboard.place_king(3, 2, origin.TOP)
     self.tboard.place_piece(4, 1, origin.TOP)
     self.tboard.place_king(4, 3, origin.TOP)
     calc = Movement(self.tboard.game.board, 3, 2)
     moves = calc.get_available_moves()
     self.assertEqual(2, len(moves))
     self.assertEqual(as_move_list([(3, 2), (2, 1)]), moves[0])
     self.assertEqual(as_move_list([(3, 2), (1, 4)]), moves[1])
 def test_moves_case_2(self):
     # # # # # # # # # #
     #  0 1 2 3 4 5 6 7#
     #0 _ _ _ _ _ _ _ _#
     #1 _ _ _ _ _ _ _ _#
     #2 _ _ _ T _ _ _ _#
     #3 _ _ B _ B _ _ _#
     #4 _ x _ _ _ B _ _#
     #5 _ _ B _ _ _ _ _#
     #6 _ _ _ x _ _ _ _#
     #7 _ _ _ _ B _ _ _#
     # # # # # # # # # #
     self.tboard.place_piece(2, 3, origin.TOP)
     self.tboard.place_piece(3, 2, origin.BOTTOM)
     self.tboard.place_piece(3, 4, origin.BOTTOM)
     self.tboard.place_piece(4, 5, origin.BOTTOM)
     self.tboard.place_piece(5, 2, origin.BOTTOM)
     self.tboard.place_piece(7, 4, origin.BOTTOM)
     calc = Movement(self.tboard.game.board, 2, 3)
     moves = calc.get_available_moves()
     self.assertEqual(1, len(moves))
     self.assertEqual(as_move_list([(2, 3), (4, 1), (6, 3)]), moves[0])
 def test_king_moves_case_1(self):
     # # # # # # # # # #
     #  0 1 2 3 4 5 6 7#
     #0 _ _ _ _ _ _ _ _#
     #1 _ _ _ _ x _ _ _#
     #2 _ x _ t _ t _ _#
     #3 _ _ b _ _ _ x _#
     #4 _ x _ x _ T _ _#
     #5 _ _ _ _ x _ _ _#
     #6 _ _ _ _ _ t _ _#
     #7 _ _ _ _ _ _ x _#
     # # # # # # # # # #
     self.tboard.place_king(2, 3, origin.TOP)
     self.tboard.place_king(2, 5, origin.TOP)
     self.tboard.place_king(3, 2, origin.BOTTOM)
     self.tboard.place_piece(4, 5, origin.TOP)
     self.tboard.place_king(6, 5, origin.TOP)
     calc = Movement(self.tboard.game.board, 3, 2)
     moves = calc.get_available_moves()
     self.assertEqual(4, len(moves))
     self.assertEqual(as_move_list([(3, 2), (4, 1)]), moves[0])
     self.assertEqual(as_move_list([(3, 2), (4, 3)]), moves[1])
     self.assertEqual(as_move_list([(3, 2), (2, 1)]), moves[2])
     self.assertEqual(as_move_list([(3, 2), (1, 4), (3, 6), (5, 4), (7, 6)]), moves[3])
Exemple #14
0
 def test_cannot_move_a_new_piece_while_move_in_progress_even_if_on_same_side(self):
     # # # # # # # # # #
     #  0 1 2 3 4 5 6 7#
     #0 _ _ _ _ _ _ x _#
     #1 _ _ _ _ _ T _ _#
     #2 _ _ _ _ x _ _ _#
     #3 _ x _ T _ _ _ _#
     #4 _ _ B _ _ _ _ _#
     #5 _ _ _ _ _ _ _ _#
     #6 _ _ _ _ B _ _ _#
     #7 _ _ _ _ _ _ _ _#
     # # # # # # # # # #
     self.tboard.place_piece(1, 5, origin.TOP)
     self.tboard.place_piece(3, 3, origin.TOP)
     self.tboard.place_piece(4, 2, origin.BOTTOM)
     self.tboard.place_piece(6, 4, origin.BOTTOM)
     calc = Movement(self.tboard.game.board, 4, 2)
     moves = calc.get_available_moves()
     self.assertEqual(2, len(moves))
     self.assertEqual(as_move_list([(4, 2), (3, 1)]), moves[0])
     self.assertEqual(as_move_list([(4, 2), (2, 4), (0, 6)]), moves[1])
     self.tboard.game.current_turn = Turn(self.tboard.game, origin.TOP)
     # start move
     self.tboard.game.move_piece((4, 2), (2, 4))
     self.assertIsNone(self.tboard.game.get_piece(4, 2))
     self.assertIsNotNone(self.tboard.game.get_piece(2, 4))
     
     # make sure can't move another piece of same type
     calc = Movement(self.tboard.game.board, 6, 4)
     moves = calc.get_available_moves()
     self.assertEqual(2, len(moves)) 
     self.assertEqual(as_move_list([(6, 4), (5, 3)]), moves[0])
     self.assertEqual(as_move_list([(6, 4), (5, 5)]), moves[1])
     self.tboard.game.move_piece((6, 4), (5, 5))
     self.assertIsNone(self.tboard.game.get_piece(5, 5))
     self.assertIsNotNone(self.tboard.game.get_piece(6, 4))