Пример #1
0
 def test_corners(self):
     peter = Bishop(0);
     self.assertEqual(peter.type(), 'a')
     peter = Bishop(16);
     self.assertEqual(peter.type(), 'b')
     peter = Bishop(136);
     self.assertEqual(peter.type(), 'c')
     peter = Bishop(152);
     self.assertEqual(peter.type(), 'd')
Пример #2
0
 def test_multiple_movments(self):
     peter = Bishop(76)
     peter.move(0)
     peter.move(1)
     peter.move(3)
     peter.move(2)
     self.assertEqual(peter.location(), 76)
Пример #3
0
 def test_top(self):
     peter = Bishop(151)
     self.assertEqual(peter.type(), 'B')
Пример #4
0
    def __init__(self, mateInOne = False, castleBoard = False, pessant = False, promotion = False) :
        self.pieces = []
        self.history = []
        self.points = 0
        self.currentSide = WHITE
        self.movesMade = 0
        self.checkmate = False

        if not mateInOne and not castleBoard and not pessant and not promotion:
            self.pieces.extend([Rook(self, BLACK, C(0,7)), Knight(self, BLACK, C(1,7)), Bishop(self, BLACK, C(2,7)), King(self, BLACK, C(3,7)), Queen(self, BLACK, C(4,7)), Bishop(self, BLACK, C(5,7)), Knight(self, BLACK, C(6,7)), Rook(self, BLACK, C(7,7))])
            for x in range(8) :
                self.pieces.append(Pawn(self, BLACK, C(x, 6)))
            for x in range(8) :
                self.pieces.append(Pawn(self, WHITE, C(x, 1)))
            self.pieces.extend([Rook(self, WHITE, C(0,0)), Knight(self, WHITE, C(1,0)), Bishop(self, WHITE, C(2,0)), King(self, WHITE, C(3,0)), Queen(self, WHITE, C(4,0)), Bishop(self, WHITE, C(5,0)), Knight(self, WHITE, C(6,0)), Rook(self, WHITE, C(7,0))])

        elif promotion :
            pawnToPromote = Pawn(self, WHITE, C(1,6))
            pawnToPromote.movesMade = 1
            kingWhite = King(self, WHITE, C(4,0))
            kingBlack = King(self, BLACK, C(3, 2))
            self.pieces.extend([pawnToPromote, kingWhite, kingBlack])

        elif pessant :
            pawn = Pawn(self, WHITE, C(1,4))
            pawn2 = Pawn(self, BLACK, C(2,6))
            kingWhite = King(self, WHITE, C(4,0))
            kingBlack = King(self, BLACK, C(3, 2))
            self.pieces.extend([pawn, pawn2, kingWhite, kingBlack])
            self.history = []
            self.currentSide = BLACK
            self.points = 0
            self.movesMade = 0
            self.checkmate = False
            firstMove = Move(pawn2, C(2,4))
            self.makeMove(firstMove)
            self.currentSide = WHITE
            return
Пример #5
0
    def getPossibleMoves(self):
        currentPosition = self.position

        # Движение пешки вперед на 1 клетку
        movement = C(0, 1) if self.side == WHITE else C(0, -1)
        advanceOnePosition = currentPosition + movement
        if self.board.isValidPos(advanceOnePosition):
            # Продвижение
            if self.board.pieceAtPosition(advanceOnePosition) is None:
                col = advanceOnePosition[1]
                if col == 7 or col == 0:
                    piecesForPromotion = \
                        [Rook(self.board, self.side, advanceOnePosition),
                         Knight(self.board, self.side, advanceOnePosition),
                         Bishop(self.board, self.side, advanceOnePosition),
                         Queen(self.board, self.side, advanceOnePosition)]
                    for piece in piecesForPromotion:
                        move = Move(self, advanceOnePosition)
                        move.promotion = True
                        move.specialMovePiece = piece
                        yield move
                else:
                    yield Move(self, advanceOnePosition)

        # Пешка ходит вперед на 2 клетки
        if self.movesMade == 0:
            movement = C(0, 2) if self.side == WHITE else C(0, -2)
            advanceTwoPosition = currentPosition + movement
            if self.board.isValidPos(advanceTwoPosition):
                if self.board.pieceAtPosition(advanceTwoPosition) is None and \
                   self.board.pieceAtPosition(advanceOnePosition) is None:
                    yield Move(self, advanceTwoPosition)

        # Пешка ест фигуру противника
        movements = [C(1, 1), C(-1, 1)] \
            if self.side == WHITE else [C(1, -1), C(-1, -1)]

        for movement in movements:
            newPosition = self.position + movement
            if self.board.isValidPos(newPosition):
                pieceToTake = self.board.pieceAtPosition(newPosition)
                if pieceToTake and pieceToTake.side != self.side:
                    col = newPosition[1]
                    # достижения другого конца доски, выбор новой фигуры
                    if col == 7 or col == 0:
                        piecesForPromotion = \
                            [Rook(self.board, self.side, newPosition),
                             Knight(self.board, self.side, newPosition),
                             Bishop(self.board, self.side, newPosition),
                             Queen(self.board, self.side, newPosition)]
                        for piece in piecesForPromotion:
                            move = Move(self, advanceOnePosition)
                            move.promotion = True
                            move.specialMovePiece = piece
                            yield move
                    else:
                        yield Move(self, newPosition,
                                   pieceToCapture=pieceToTake)

        #
        movements = [C(1, 1), C(-1, 1)] \
            if self.side == WHITE else [C(1, -1), C(-1, -1)]
        for movement in movements:
            posBesidePawn = self.position + C(movement[0], 0)
            if self.board.isValidPos(posBesidePawn):
                pieceBesidePawn = self.board.pieceAtPosition(posBesidePawn)
                lastPieceMoved = self.board.getLastPieceMoved()
                lastMoveWasAdvanceTwo = False
                lastMove = self.board.getLastMove()

                if lastMove:
                    if lastMove.newPos - lastMove.oldPos == C(0, 2) or \
                       lastMove.newPos - lastMove.oldPos == C(0, -2):
                        lastMoveWasAdvanceTwo = True

                if pieceBesidePawn and \
                   pieceBesidePawn.stringRep == 'p' and \
                   pieceBesidePawn.side != self.side and \
                   lastPieceMoved is pieceBesidePawn and \
                   lastMoveWasAdvanceTwo:
                    move = Move(self, self.position + movement,
                                pieceToCapture=pieceBesidePawn)
                    move.pessant = True
                    move.specialMovePiece = pieceBesidePawn
                    yield move
 def test_move_up_left(self):
     peter = Bishop(76)
     peter.move(0)
     self.assertEqual(peter.location(), 58)
Пример #7
0
def initializePieces(board):
    row = 1
    for col in range(8):
        board.squares[row][col].piece = Pawn(x=row,
                                             y=col,
                                             path='../img/black/pawn.png',
                                             square=board.squares[row][col],
                                             isWhite=False)

    row = 0
    board.squares[row][0].piece = Rook(x=row,
                                       y=0,
                                       path='../img/black/rook.png',
                                       square=board.squares[row][0],
                                       isWhite=False)
    board.squares[row][7].piece = Rook(x=row,
                                       y=7,
                                       path='../img/black/rook.png',
                                       square=board.squares[row][7],
                                       isWhite=False)
    board.squares[row][1].piece = Knight(x=row,
                                         y=1,
                                         path='../img/black/knight.png',
                                         square=board.squares[row][1],
                                         isWhite=False)
    board.squares[row][6].piece = Knight(x=row,
                                         y=6,
                                         path='../img/black/knight.png',
                                         square=board.squares[row][6],
                                         isWhite=False)
    board.squares[row][2].piece = Bishop(x=row,
                                         y=2,
                                         path='../img/black/bishop.png',
                                         square=board.squares[row][2],
                                         isWhite=False)
    board.squares[row][5].piece = Bishop(x=row,
                                         y=5,
                                         path='../img/black/bishop.png',
                                         square=board.squares[row][5],
                                         isWhite=False)
    board.squares[row][3].piece = Queen(x=row,
                                        y=3,
                                        path='../img/black/queen.png',
                                        square=board.squares[row][3],
                                        isWhite=False)
    board.squares[row][4].piece = King(x=row,
                                       y=4,
                                       path='../img/black/king.png',
                                       square=board.squares[row][4],
                                       isWhite=False)

    row = 6
    for col in range(8):
        board.squares[row][col].piece = Pawn(x=row,
                                             y=col,
                                             path='../img/white/pawn.png',
                                             square=board.squares[row][col],
                                             isWhite=True)

    row = 7
    board.squares[row][0].piece = Rook(x=row,
                                       y=0,
                                       path='../img/white/rook.png',
                                       square=board.squares[row][0],
                                       isWhite=True)
    board.squares[row][7].piece = Rook(x=row,
                                       y=7,
                                       path='../img/white/rook.png',
                                       square=board.squares[row][7],
                                       isWhite=True)
    board.squares[row][1].piece = Knight(x=row,
                                         y=1,
                                         path='../img/white/knight.png',
                                         square=board.squares[row][1],
                                         isWhite=True)
    board.squares[row][6].piece = Knight(x=row,
                                         y=6,
                                         path='../img/white/knight.png',
                                         square=board.squares[row][6],
                                         isWhite=True)
    board.squares[row][2].piece = Bishop(x=row,
                                         y=2,
                                         path='../img/white/bishop.png',
                                         square=board.squares[row][2],
                                         isWhite=True)
    board.squares[row][5].piece = Bishop(x=row,
                                         y=5,
                                         path='../img/white/bishop.png',
                                         square=board.squares[row][5],
                                         isWhite=True)
    board.squares[row][3].piece = Queen(x=row,
                                        y=3,
                                        path='../img/white/queen.png',
                                        square=board.squares[row][3],
                                        isWhite=True)
    board.squares[row][4].piece = King(x=row,
                                       y=4,
                                       path='../img/white/king.png',
                                       square=board.squares[row][4],
                                       isWhite=True)
Пример #8
0
 def test_middle(self):
     peter = Bishop(76);
     self.assertEqual(peter.type(), 'M')
Пример #9
0
 def test_centre(self):
     peter = Bishop(76)
     self.assertEqual(peter.coords(), [8, 4])
Пример #10
0
 def test_hits_floor(self):
     peter = Bishop(144);
     peter.move(3)
     self.assertEqual(peter.location(), 145)
Пример #11
0
 def test_hits_ceiling(self):
     peter = Bishop(8);
     peter.move(1)
     self.assertEqual(peter.location(), 9)
Пример #12
0
 def test_hits_left(self):
     peter = Bishop(85);
     peter.move(2)
     self.assertEqual(peter.location(), 102)
Пример #13
0
 def test_hits_wall(self):
     peter = Bishop(84);
     peter.move(3)
     self.assertEqual(peter.location(), 101)
Пример #14
0
 def test_move_down_right(self):
     peter = Bishop(76)
     peter.move(3)
     self.assertEqual(peter.location(), 94)
Пример #15
0
 def test_move_down_left(self):
     peter = Bishop(76)
     peter.move(2)
     self.assertEqual(peter.location(), 92)
Пример #16
0
 def test_middle(self):
     peter = Bishop(76)
     self.assertEqual(peter.type(), 'M')
Пример #17
0
 def test_print_start(self):
     peter = Bishop(76)
     atrium = Atrium(peter, 'RSA 2048', 'MD5')
     emptyAtrium = open('blank_atrium.txt', 'r').read()
     self.assertEqual(str(atrium), emptyAtrium)
Пример #18
0
 def test_hits_corner(self):
     peter = Bishop(152);
     peter.move(1)
     self.assertEqual(peter.location(), 135)
Пример #19
0
 def test_top(self):
     peter = Bishop(151);
     self.assertEqual(peter.type(), 'B')
Пример #20
0
 def test_move_up_left(self):
     peter = Bishop(76)
     peter.move(0)
     self.assertEqual(peter.location(), 58)
Пример #21
0
 def test_centre(self):
     peter = Bishop(76);
     self.assertEqual(peter.coords(), [8 ,4])
 def test_PieceUpgradeCommand_Bishop_undo(self):
   upgradeType = PieceType.BISHOP
   upgradePiece = Bishop( self.color )
   self.upgradeUndo( upgradeType, upgradePiece )
Пример #23
0
 def test_hits_corner(self):
     peter = Bishop(152)
     peter.move(1)
     self.assertEqual(peter.location(), 135)
Пример #24
0
def main():
    run = True
    clock = pygame.time.Clock()

    bishop_black_pos = [5, 2]
    bishop_white_pos = [3, 5]
    goal_pos = [6, 1]

    steps_knight = []
    steps_bishop_black = []
    steps_bishop_white = []

    display_pause = False
    game_over = False

    knight = Knight.Knight()
    bishop_black = Bishop(bishop_black_pos)
    bishop_white = Bishop(bishop_white_pos)

    move = 1

    knight_pos = knight.pos

    while run:
        clock.tick(FPS)

        if not display_pause:
            draw_window(knight_pos, bishop_black_pos, bishop_white_pos,
                        goal_pos, steps_knight, steps_bishop_black,
                        steps_bishop_white)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False
                pygame.quit()

            if not game_over:
                if event.type == pygame.KEYDOWN:
                    # if event.key == pygame.K_DOWN:
                    #     bishop_pos[1] += 1
                    # if event.key == pygame.K_UP:
                    #     bishop_pos[1] -= 1
                    # if event.key == pygame.K_LEFT:
                    #     bishop_pos[0] -= 1
                    # if event.key == pygame.K_RIGHT:
                    #     bishop_pos[0] += 1
                    if event.key == pygame.K_s:
                        knight_pos[1] += 1
                        knight.pos[1] += 1
                    if event.key == pygame.K_w:
                        knight_pos[1] -= 1
                        knight.pos[1] -= 1
                    if event.key == pygame.K_a:
                        knight_pos[0] -= 1
                        knight.pos[0] -= 1
                    if event.key == pygame.K_d:
                        knight_pos[0] += 1
                        knight.pos[0] += 1

                    if event.key == pygame.K_SPACE:
                        if move == 1:
                            print("knight move")
                            steps_knight = knight.nextMove(goal_pos)
                            if (knight.pos[0] == goal_pos[0] and knight.pos[1] == goal_pos[1]) or \
                                    (knight.pos[0] == knight_pos[0] and knight.pos[1] == knight_pos[1]):
                                knight_pos = knight.pos
                                game_over = True
                            else:
                                knight_pos = knight.pos
                                print(knight_pos)
                                move = 0
                        elif move == 0:
                            print("black bishop move")
                            steps_bishop_black = bishop_black.nextMove(
                                knight_pos)
                            bishop_black_pos = bishop_black.pos

                            print("white bishop move")
                            steps_bishop_white = bishop_white.nextMove(
                                knight_pos)
                            bishop_white_pos = bishop_white.pos

                            move = 1

                    if event.key == pygame.K_z:
                        display_pause = not display_pause

                    if event.key == pygame.K_x:
                        knight.nextMove(goal_pos)

        bishop_black.fillRange()
        bishop_white.fillRange()

        knight.fillObstacles(bishop_black.range, bishop_white.range)
Пример #25
0
                                pawnPromotingPos[1]].totalMoves + 1, False)

                elif newPiece == 'queen':
                    tempBoard[pawnPromotingPos[0]][
                        pawnPromotingPos[1]] = Queen(
                            pawnPromotingPos[0], pawnPromotingPos[1],
                            tempBoard[pawnPromotingPos[0]][
                                pawnPromotingPos[1]].color,
                            tempBoard[pawnPromotingPos[0]][
                                pawnPromotingPos[1]].totalMoves + 1, False)

                elif newPiece == 'bishop':
                    tempBoard[pawnPromotingPos[0]][
                        pawnPromotingPos[1]] = Bishop(
                            pawnPromotingPos[0], pawnPromotingPos[1],
                            tempBoard[pawnPromotingPos[0]][
                                pawnPromotingPos[1]].color,
                            tempBoard[pawnPromotingPos[0]][
                                pawnPromotingPos[1]].totalMoves + 1, False)

                displayer.pawnPromoting = False
                justChanged = True
                oneSelected = False
                selectedPos = ()
                entireGameStates.append(makeCopy(tempBoard))

        # Update and draw the clock
        if not timeOver and not checkMate:
            clock.update(turn)
            clock.drawClocks(screen)

        # check if the player clicked the reset the game button and reset it
Пример #26
0
class Queen(Piece.Piece):
    def __init__(self, c, px, py):
        self.color = c
        self.posX = px
        self.posY = py
        self.first_move = True
        self.bishop = Bishop(self.color, px, py)
        self.castle = Castle(self.color, px, py)
        self.table = None
        self.material = 800
        if self.color == "W":
            self.string_rep = "QW"
        else:
            self.string_rep = "QB"
        self.available_moves = None
        self.attacking = None
        self.refresh_on_change_squares = None
        self.table = [
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
        ]

    def refresh_state(self, board):
        self.bishop.posX = self.posX
        self.castle.posX = self.posX
        self.bishop.posY = self.posY
        self.castle.posY = self.posY
        self.bishop.refresh_state(board)
        self.castle.refresh_state(board)
        self.available_moves = self.bishop.available_moves + self.castle.available_moves
        self.attacking = self.bishop.attacking + self.castle.attacking
        self.refresh_on_change_squares = self.bishop.refresh_on_change_squares + self.castle.refresh_on_change_squares
Пример #27
0
 black_bishop_list = []
 black_rook_list = []
 for i in range(8):
     black_pawn_list.append(Pawn('black', 1, i))
     white_pawn_list.append(Pawn('white', 6, i))
     (chessBoard.get_board())[1][i] = black_pawn_list[i]
     (chessBoard.get_board())[6][i] = white_pawn_list[i]
 black_knight_list.append(Knight('black', 0, 1))
 black_knight_list.append(Knight('black', 0, 6))
 white_knight_list.append(Knight('white', 7, 1))
 white_knight_list.append(Knight('white', 7, 6))
 (chessBoard.get_board())[0][1] = black_knight_list[0]
 (chessBoard.get_board())[0][6] = black_knight_list[1]
 (chessBoard.get_board())[5][2] = Queen('black', 5, 2)
 # (chessBoard.get_board())[2][4] = Knight('white', 2, 4)
 (chessBoard.get_board())[3][3] = Bishop('black', 3, 3)
 (chessBoard.get_board())[7][1] = white_knight_list[0]
 (chessBoard.get_board())[7][6] = white_knight_list[1]
 black_bishop_list.append(Bishop('black', 0, 2))
 black_bishop_list.append(Bishop('black', 0, 5))
 white_bishop_list.append(Bishop('white', 7, 2))
 white_bishop_list.append(Bishop('white', 7, 5))
 (chessBoard.get_board())[0][2] = black_bishop_list[0]
 (chessBoard.get_board())[0][5] = black_bishop_list[1]
 (chessBoard.get_board())[7][2] = white_bishop_list[0]
 (chessBoard.get_board())[7][5] = white_bishop_list[1]
 black_rook_list.append(Rook('black', 0, 0))
 black_rook_list.append(Rook('black', 0, 7))
 white_rook_list.append(Rook('white', 7, 0))
 white_rook_list.append(Rook('white', 7, 7))
 (chessBoard.get_board())[0][0] = black_rook_list[0]
Пример #28
0
 def __init__(self, c, px, py):
     self.color = c
     self.posX = px
     self.posY = py
     self.first_move = True
     self.bishop = Bishop(self.color, px, py)
     self.castle = Castle(self.color, px, py)
     self.table = None
     self.material = 800
     if self.color == "W":
         self.string_rep = "QW"
     else:
         self.string_rep = "QB"
     self.available_moves = None
     self.attacking = None
     self.refresh_on_change_squares = None
     self.table = [
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
         0,
     ]
Пример #29
0
 def test_top(self):
     peter = Bishop(8)
     self.assertEqual(peter.type(), 'T')
Пример #30
0
    def initialize_board(self):
        i = 0
        j = 0
        pawn_labels = ["P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8"]
        queen_label = "Q"
        rook_labels = ["R1", "R2"]
        bishop_labels = ["B1", "B2"]
        king_label = "K"
        knight_labels = ["N1", "N2"]

        #White Pawns
        for n in range(8):
            i, j = self.xy_to_ij(n, 1)
            self.board[i][j].change_square_state()
            self.board[i][j].set_piece(Pawn())
            self.board[i][j].return_piece().set_labelp(pawn_labels[n])
            self.board[i][j].return_piece().set_locp(n, 1)
            self.board[i][j].return_piece().set_color_string("White")

        #White Queen

        i, j = self.xy_to_ij(3, 0)
        self.board[i][j].change_square_state()
        self.board[i][j].set_piece(Queen())
        self.board[i][j].return_piece().set_labelp(queen_label)
        self.board[i][j].return_piece().set_locp(3, 0)
        self.board[i][j].return_piece().set_color_string("White")

        #White Rooks

        i, j = self.xy_to_ij(0, 0)
        self.board[i][j].change_square_state()
        self.board[i][j].set_piece(Rook())
        self.board[i][j].return_piece().set_labelp(rook_labels[0])
        self.board[i][j].return_piece().set_locp(0, 0)
        self.board[i][j].return_piece().set_color_string("White")

        i, j = self.xy_to_ij(7, 0)
        self.board[i][j].change_square_state()
        self.board[i][j].set_piece(Rook())
        self.board[i][j].return_piece().set_labelp(rook_labels[1])
        self.board[i][j].return_piece().set_locp(7, 0)
        self.board[i][j].return_piece().set_color_string("White")

        #White Bishops

        i, j = self.xy_to_ij(2, 0)
        self.board[i][j].change_square_state()
        self.board[i][j].set_piece(Bishop())
        self.board[i][j].return_piece().set_labelp(bishop_labels[0])
        self.board[i][j].return_piece().set_locp(2, 0)
        self.board[i][j].return_piece().set_color_string("White")

        i, j = self.xy_to_ij(5, 0)
        self.board[i][j].change_square_state()
        self.board[i][j].set_piece(Bishop())
        self.board[i][j].return_piece().set_labelp(bishop_labels[1])
        self.board[i][j].return_piece().set_locp(5, 0)
        self.board[i][j].return_piece().set_color_string("White")

        #White King

        i, j = self.xy_to_ij(4, 0)
        self.board[i][j].change_square_state()
        self.board[i][j].set_piece(King())
        self.board[i][j].return_piece().set_labelp(king_label)
        self.board[i][j].return_piece().set_locp(4, 0)
        self.board[i][j].return_piece().set_color_string("White")

        #White Knights
        i, j = self.xy_to_ij(1, 0)
        self.board[i][j].change_square_state()
        self.board[i][j].set_piece(Knight())
        self.board[i][j].return_piece().set_labelp(knight_labels[0])
        self.board[i][j].return_piece().set_locp(1, 0)
        self.board[i][j].return_piece().set_color_string("White")

        i, j = self.xy_to_ij(6, 0)
        self.board[i][j].change_square_state()
        self.board[i][j].set_piece(Knight())
        self.board[i][j].return_piece().set_labelp(knight_labels[1])
        self.board[i][j].return_piece().set_locp(6, 0)
        self.board[i][j].return_piece().set_color_string("White")

        #Black Pawns

        for n in range(8):
            i, j = self.xy_to_ij(7 - n, 6)
            self.board[i][j].change_square_state()
            self.board[i][j].set_piece(Pawn())
            self.board[i][j].return_piece().change_colorp()
            self.board[i][j].return_piece().set_labelp(pawn_labels[n])
            self.board[i][j].return_piece().set_locp(7 - n, 6)
            self.board[i][j].return_piece().set_color_string("Black")

        #Black Queen

        i, j = self.xy_to_ij(3, 7)
        self.board[i][j].change_square_state()
        self.board[i][j].set_piece(Queen())
        self.board[i][j].return_piece().set_labelp(queen_label)
        self.board[i][j].return_piece().set_locp(3, 7)
        self.board[i][j].return_piece().set_color_string("Black")

        #Black Rooks

        i, j = self.xy_to_ij(0, 7)
        self.board[i][j].change_square_state()
        self.board[i][j].set_piece(Rook())
        self.board[i][j].return_piece().set_labelp(rook_labels[1])
        self.board[i][j].return_piece().set_locp(0, 7)
        self.board[i][j].return_piece().set_color_string("Black")

        i, j = self.xy_to_ij(7, 7)
        self.board[i][j].change_square_state()
        self.board[i][j].set_piece(Rook())
        self.board[i][j].return_piece().set_labelp(rook_labels[0])
        self.board[i][j].return_piece().set_locp(7, 7)
        self.board[i][j].return_piece().set_color_string("Black")

        #Black Bishops

        i, j = self.xy_to_ij(2, 7)
        self.board[i][j].change_square_state()
        self.board[i][j].set_piece(Bishop())
        self.board[i][j].return_piece().set_labelp(bishop_labels[1])
        self.board[i][j].return_piece().set_locp(2, 7)
        self.board[i][j].return_piece().set_color_string("Black")

        i, j = self.xy_to_ij(5, 7)
        self.board[i][j].change_square_state()
        self.board[i][j].set_piece(Bishop())
        self.board[i][j].return_piece().set_labelp(bishop_labels[0])
        self.board[i][j].return_piece().set_locp(5, 7)
        self.board[i][j].return_piece().set_color_string("Black")

        #White King

        i, j = self.xy_to_ij(4, 7)
        self.board[i][j].change_square_state()
        self.board[i][j].set_piece(King())
        self.board[i][j].return_piece().set_labelp(king_label)
        self.board[i][j].return_piece().set_locp(4, 7)
        self.board[i][j].return_piece().set_color_string("Black")

        #White Knights
        i, j = self.xy_to_ij(1, 7)
        self.board[i][j].change_square_state()
        self.board[i][j].set_piece(Knight())
        self.board[i][j].return_piece().set_labelp(knight_labels[1])
        self.board[i][j].return_piece().set_locp(1, 7)
        self.board[i][j].return_piece().set_color_string("Black")

        i, j = self.xy_to_ij(6, 7)
        self.board[i][j].change_square_state()
        self.board[i][j].set_piece(Knight())
        self.board[i][j].return_piece().set_labelp(knight_labels[0])
        self.board[i][j].return_piece().set_locp(6, 7)
        self.board[i][j].return_piece().set_color_string("Black")
Пример #31
0
 def test_left(self):
     peter = Bishop(102)
     self.assertEqual(peter.type(), 'L')
Пример #32
0
    def __init__(self,
                 mateInOne=False,
                 castleBoard=False,
                 passant=False,
                 promotion=False):
        self.pieces = []
        self.history = []
        self.points = 0
        self.currentSide = WHITE
        self.movesMade = 0
        self.checkmate = False

        if not mateInOne and not castleBoard and not passant and not promotion:
            self.pieces.extend([
                Rook(self, BLACK, C(0, 7)),
                Knight(self, BLACK, C(1, 7)),
                Bishop(self, BLACK, C(2, 7)),
                Queen(self, BLACK, C(3, 7)),
                King(self, BLACK, C(4, 7)),
                Bishop(self, BLACK, C(5, 7)),
                Knight(self, BLACK, C(6, 7)),
                Rook(self, BLACK, C(7, 7))
            ])
            for x in range(8):
                self.pieces.append(Pawn(self, BLACK, C(x, 6)))
            for x in range(8):
                self.pieces.append(Pawn(self, WHITE, C(x, 1)))
            self.pieces.extend([
                Rook(self, WHITE, C(0, 0)),
                Knight(self, WHITE, C(1, 0)),
                Bishop(self, WHITE, C(2, 0)),
                Queen(self, WHITE, C(3, 0)),
                King(self, WHITE, C(4, 0)),
                Bishop(self, WHITE, C(5, 0)),
                Knight(self, WHITE, C(6, 0)),
                Rook(self, WHITE, C(7, 0))
            ])

        elif mateInOne:
            kingW = King(self, WHITE, C(4, 0))
            kingB = King(self, BLACK, C(4, 7))
            rook1 = Rook(self, WHITE, C(3, 0))
            rook2 = Rook(self, WHITE, C(5, 0))
            queen = Queen(self, WHITE, C(7, 1))
            self.pieces.extend([kingW, kingB, rook1, rook2, queen])

        elif castleBoard:
            kingW = King(self, WHITE, C(4, 0))
            kingB = King(self, BLACK, C(4, 7))
            rook1 = Rook(self, WHITE, C(0, 0))
            rook2 = Rook(self, WHITE, C(7, 0))
            pawn1 = Pawn(self, WHITE, C(1, 3))
            pawn2 = Pawn(self, WHITE, C(2, 1))
            bshp = Bishop(self, WHITE, C(3, 3))
            queen = Queen(self, BLACK, C(2, 4))
            self.pieces.extend(
                [kingW, kingB, rook1, rook2, pawn1, pawn2, bshp, queen])

        elif promotion:
            pawn1 = Pawn(self, WHITE, C(1, 6))
            pawn1.movesMade = 1
            pawn2 = Pawn(self, WHITE, C(2, 6))
            pawn3 = Pawn(self, WHITE, C(3, 5))
            pawnB = Pawn(self, BLACK, C(2, 7))
            kingWhite = King(self, WHITE, C(4, 0))
            kingBlack = King(self, BLACK, C(3, 2))
            self.pieces.extend(
                [pawn1, pawn2, pawn3, pawnB, kingWhite, kingBlack])

        elif passant:
            pawn = Pawn(self, WHITE, C(1, 4))
            pawn2 = Pawn(self, BLACK, C(2, 6))
            kingWhite = King(self, WHITE, C(4, 0))
            kingBlack = King(self, BLACK, C(3, 2))
            self.pieces.extend([pawn, pawn2, kingWhite, kingBlack])
            self.history = []
            self.currentSide = BLACK
            self.points = 0
            self.movesMade = 0
            self.checkmate = False
            firstMove = Move(pawn2, C(2, 4))
            self.makeMove(firstMove)
            self.currentSide = WHITE
            return
Пример #33
0
 def test_corners(self):
     peter = Bishop(0)
     self.assertEqual(peter.type(), 'a')
     peter = Bishop(16)
     self.assertEqual(peter.type(), 'b')
     peter = Bishop(136)
     self.assertEqual(peter.type(), 'c')
     peter = Bishop(152)
     self.assertEqual(peter.type(), 'd')
Пример #34
0
 def test_move_down_left(self):
     peter = Bishop(76)
     peter.move(2)
     self.assertEqual(peter.location(), 92)
Пример #35
0
 def test_print_single_move(self):
     peter = Bishop(76)
     atrium = Atrium(peter, 'RSA 2048', 'MD5')
     atrium.move(0)
     dottyAtrium = open('atrium_single_move.txt', 'r').read()
     self.assertEqual(str(atrium), dottyAtrium)
Пример #36
0
 def test_move_down_right(self):
     peter = Bishop(76)
     peter.move(3)
     self.assertEqual(peter.location(), 94)
Пример #37
0
 def test_top(self):
     peter = Bishop(8);
     self.assertEqual(peter.type(), 'T')
Пример #38
0
 def test_hits_wall(self):
     peter = Bishop(84)
     peter.move(3)
     self.assertEqual(peter.location(), 101)
Пример #39
0
 def test_left(self):
     peter = Bishop(102);
     self.assertEqual(peter.type(), 'L')
Пример #40
0
 def test_hits_left(self):
     peter = Bishop(85)
     peter.move(2)
     self.assertEqual(peter.location(), 102)
Пример #41
0
 def test_hits_ceiling(self):
     peter = Bishop(8)
     peter.move(1)
     self.assertEqual(peter.location(), 9)
Пример #42
0
 def test_hits_floor(self):
     peter = Bishop(144)
     peter.move(3)
     self.assertEqual(peter.location(), 145)
Пример #43
0
    def getPossibleMoves(self):
        currentPosition = self.position

        # Pawn moves one up
        movement = C(0, 1) if self.side == WHITE else C(0, -1)
        advanceOnePosition = currentPosition + movement
        if self.board.isValidPos(advanceOnePosition):
            #Promotion moves
            if self.board.pieceAtPosition(advanceOnePosition) is None:
                col = advanceOnePosition[1]
                if col == 7 or col == 0:
                    piecesForPromotion = [
                        Rook(self.board, self.side, advanceOnePosition),
                        Knight(self.board, self.side, advanceOnePosition),
                        Bishop(self.board, self.side, advanceOnePosition),
                        Queen(self.board, self.side, advanceOnePosition)
                    ]
                    for piece in piecesForPromotion:
                        move = Move(self, advanceOnePosition)
                        move.promotion = True
                        move.specialMovePiece = piece
                        yield move
                else:
                    yield Move(self, advanceOnePosition)

        #Pawn moves two up
        if self.movesMade == 0:
            movement = C(0, 2) if self.side == WHITE else C(0, -2)
            advanceTwoPosition = currentPosition + movement
            if self.board.isValidPos(advanceTwoPosition):
                if self.board.pieceAtPosition(
                        advanceTwoPosition
                ) is None and self.board.pieceAtPosition(
                        advanceOnePosition) is None:
                    yield Move(self, advanceTwoPosition)

        #Pawn takes
        movements = [C(1, 1), C(
            -1, 1)] if self.side == WHITE else [C(1, -1), C(-1, -1)]

        for movement in movements:
            newPosition = self.position + movement
            if self.board.isValidPos(newPosition):
                pieceToTake = self.board.pieceAtPosition(newPosition)
                if pieceToTake and pieceToTake.side != self.side:
                    col = newPosition[1]
                    #Promotions
                    if col == 7 or col == 0:
                        piecesForPromotion = [
                            Rook(self.board, self.side, newPosition),
                            Knight(self.board, self.side, newPosition),
                            Bishop(self.board, self.side, newPosition),
                            Queen(self.board, self.side, newPosition)
                        ]
                        for piece in piecesForPromotion:
                            move = Move(self, advanceOnePosition)
                            move.promotion = True
                            move.specialMovePiece = piece
                            yield move
                    else:
                        yield Move(self,
                                   newPosition,
                                   pieceToCapture=pieceToTake)

        #En pessant
        movements = [C(1, 1), C(
            -1, 1)] if self.side == WHITE else [C(1, -1), C(-1, -1)]
        for movement in movements:
            posBesidePawn = self.position + C(movement[0], 0)
            if self.board.isValidPos(posBesidePawn):
                pieceBesidePawn = self.board.pieceAtPosition(posBesidePawn)
                lastPieceMoved = self.board.getLastPieceMoved()
                lastMoveWasAdvanceTwo = False
                lastMove = self.board.getLastMove()

                if lastMove:
                    if lastMove.newPos - lastMove.oldPos == C(
                            0, 2) or lastMove.newPos - lastMove.oldPos == C(
                                0, -2):
                        lastMoveWasAdvanceTwo = True

                if pieceBesidePawn and pieceBesidePawn.stringRep == 'p' and pieceBesidePawn.side != self.side and lastPieceMoved is pieceBesidePawn and lastMoveWasAdvanceTwo:
                    move = Move(self,
                                self.position + movement,
                                pieceToCapture=pieceBesidePawn)
                    move.pessant = True
                    move.specialMovePiece = pieceBesidePawn
                    yield move
Пример #44
0
blackPawn1 = Pawn("black", (1, 0))
blackPawn2 = Pawn("black", (1, 1))
blackPawn3 = Pawn("black", (1, 2))
blackPawn4 = Pawn("black", (1, 3))
blackPawn5 = Pawn("black", (1, 4))
blackPawn6 = Pawn("black", (1, 5))
blackPawn7 = Pawn("black", (1, 6))
blackPawn8 = Pawn("black", (1, 7))

blackRook1 = Rook("black", (0, 0))
blackRook2 = Rook("black", (0, 7))

blackKnight1 = Knight("black", (0, 1))
blackKnight2 = Knight("black", (0, 6))

blackBishop1 = Bishop("black", (0, 2))
blackBishop2 = Bishop("black", (0, 5))

blackQueen = Queen("black", (0, 3))
blackKing = King("black", (0, 4))

# black pieces

whitePawn1 = Pawn("white", (6, 0))
whitePawn2 = Pawn("white", (6, 1))
whitePawn3 = Pawn("white", (6, 2))
whitePawn4 = Pawn("white", (6, 3))
whitePawn5 = Pawn("white", (6, 4))
whitePawn6 = Pawn("white", (6, 5))
whitePawn7 = Pawn("white", (6, 6))
whitePawn8 = Pawn("white", (6, 7))