any_move_valid
This commit is contained in:
parent
77f5e74785
commit
246d1ac44a
10
board.py
10
board.py
|
@ -121,6 +121,16 @@ class Board:
|
||||||
no_block_at_to_idx(),
|
no_block_at_to_idx(),
|
||||||
can_bear_off() if bearing_off else True ])
|
can_bear_off() if bearing_off else True ])
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def any_move_valid(board, player, roll):
|
||||||
|
for die in roll:
|
||||||
|
idxs = Board.idxs_with_checkers_of_player(board, player)
|
||||||
|
for idx in idxs:
|
||||||
|
if Board.is_move_valid(board, player, die,
|
||||||
|
(idx, idx + (die * player))):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def is_winner(board, player):
|
def is_winner(board, player):
|
||||||
return Board.idxs_with_checkers_of_player(board, player) == []
|
return Board.idxs_with_checkers_of_player(board, player) == []
|
||||||
|
|
29
test.py
29
test.py
|
@ -219,5 +219,34 @@ class TestDoMove(unittest.TestCase):
|
||||||
self.assertEqual(Board.do_move(board, -1, (1, -1)), expected_board)
|
self.assertEqual(Board.do_move(board, -1, (1, -1)), expected_board)
|
||||||
self.assertEqual(Board.do_move(board, -1, (1, -4)), expected_board)
|
self.assertEqual(Board.do_move(board, -1, (1, -4)), expected_board)
|
||||||
|
|
||||||
|
class TestAnyMoveValid(unittest.TestCase):
|
||||||
|
def test_bear_in_but_blocked(self):
|
||||||
|
board = [ 0,
|
||||||
|
0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0,
|
||||||
|
2, 2, 0, 2, 2, 2,
|
||||||
|
-1 ]
|
||||||
|
self.assertEqual(Board.any_move_valid(board, -1, (3,6)), False)
|
||||||
|
self.assertEqual(Board.any_move_valid(board, -1, (6,3)), False)
|
||||||
|
self.assertEqual(Board.any_move_valid(board, -1, (3,4)), True)
|
||||||
|
self.assertEqual(Board.any_move_valid(board, -1, (4,1)), True)
|
||||||
|
|
||||||
|
def test_simple_block(self):
|
||||||
|
board = [ 0,
|
||||||
|
0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0,
|
||||||
|
2, 2, -1, 0, 0, 0,
|
||||||
|
0 ]
|
||||||
|
self.assertEqual(Board.any_move_valid(board, -1, (1,1)), False)
|
||||||
|
self.assertEqual(Board.any_move_valid(board, -1, (2,2)), False)
|
||||||
|
self.assertEqual(Board.any_move_valid(board, -1, (2,1)), False)
|
||||||
|
self.assertEqual(Board.any_move_valid(board, -1, (1,2)), False)
|
||||||
|
self.assertEqual(Board.any_move_valid(board, -1, (3,1)), True)
|
||||||
|
self.assertEqual(Board.any_move_valid(board, -1, (1,3)), True)
|
||||||
|
self.assertEqual(Board.any_move_valid(board, -1, (4,4)), True)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user