def print_2d_board( board: Board, width: int = 1, empty: str = ".", focus: str = "x", representation=None, focus_position: _Position = None ): assert board.dimension == 2 representation = LetterRepresentation if representation is None else representation if focus_position is not None: assert board.contains(focus_position) focus_color, focus_piece = board.get(focus_position) focus_next = focus_piece.movements(board, focus_position, focus_color, board.is_first_movement(focus_position)) else: focus_next = [] for i in range(board.size): for j in range(board.size): print( "{0:{width}}".format( focus if (i, j) in focus_next else representation[board.get((i, j))] if board.contains((i, j)) else empty, width=width ), end=" " ) print()
def test_promotion(self): board = Board(4, 2) board.add(Pawn, (0, 0), Color.WHITE) for i in range(3): board.move((0, i), (0, i + 1)) board.promote((0, 3), Queen) self.assertEqual(Queen, board.get((0, 3))[1])
def test_get(self): board = Board(4, 2) for i in range(4): for j in range(4): board.add(Piece, (i, j), Color.BLACK if i % 2 else Color.WHITE) for i in range(4): for j in range(4): self.assertEqual(Color.BLACK if i % 2 else Color.WHITE, board.get((i, j))[0])