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(),
|
||||
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
|
||||
def is_winner(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, -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__':
|
||||
unittest.main()
|
||||
|
|
Loading…
Reference in New Issue
Block a user