self.position = new_position
return True
return False
+
+ def legal_moves(self):
+ positions = []
+ for direction in [BITS.NORTH, BITS.SOUTH, BITS.EAST, BITS.WEST]:
+ position = self.get_adjacent_position(direction)
+ if position is not None and self.bits.check_bit(direction):
+ positions.append(position)
+ return positions
player = Player(0x0f, (4, 2))
self.assertEqual(player.move(BITS.EAST), False)
self.assertEqual(player.position, (4, 2))
+
+ def test_legal_moves_all_available(self):
+ player = Player(0x0f, (2, 2))
+ self.assertEqual(
+ player.legal_moves(), [(2, 1), (2, 3), (3, 2), (1, 2)])
+
+ def test_legal_moves_some_unavailable(self):
+ player = Player(0x0f, (0, 2))
+ player.bits.clear_bit(BITS.NORTH)
+ self.assertEqual(player.legal_moves(), [(0, 3), (1, 2)])