示例#1
0
文件: Utility.py 项目: 000alen/nChess
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()
示例#2
0
    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])
示例#3
0
    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])