コード例 #1
0
 def _castle_move(self):
     if self.playing_piece == King(Color.WHITE):
         if (self.from_coords == Coords(4, 0)
                 and self.to_coords in (Coords(2, 0), Coords(6, 0))):
             return True
     if self.playing_piece == King(Color.BLACK):
         if (self.from_coords == Coords(4, 7)
                 and self.to_coords in (Coords(2, 7), Coords(6, 7))):
             return True
     return False
コード例 #2
0
def game():
    """Return game with empty board and Kings placed in corners.
       Kings are required so as not to throw errors.
       A game would always have Kings.
    """
    chess_game = Chess(restore_positions={
        '00': King(Color.WHITE),
        '77': King(Color.BLACK)
    })
    return chess_game
コード例 #3
0
def castle_game():
    """Return game with only King/Rook postions pre-set"""
    chess_game = Chess(
        restore_positions={
            '40': King(Color.WHITE),
            '47': King(Color.BLACK),
            '00': Rook(Color.WHITE),
            '70': Rook(Color.WHITE),
            '07': Rook(Color.BLACK),
            '77': Rook(Color.BLACK)
        })
    return chess_game
コード例 #4
0
def chess_pieces(color, *, y_idxs=None):
    """Helper function for new Chess setup.

       Return list of [start_coords, pieces] for given color
    """
    coords = [f'{x_idx}{y_idx}' for y_idx in y_idxs for x_idx in range(8)]
    pieces = [
        Rook(color),
        Knight(color),
        Bishop(color),
        Queen(color),
        King(color),
        Bishop(color),
        Knight(color),
        Rook(color),
        Pawn(color),
        Pawn(color),
        Pawn(color),
        Pawn(color),
        Pawn(color),
        Pawn(color),
        Pawn(color),
        Pawn(color)
    ]
    return list(zip(coords, pieces))
コード例 #5
0
    def _board_pieces(self, color, king_wanted=True):
        king = None if king_wanted else King(color)

        return [
            piece for piece in self.current_board_pieces()
            if piece.color == color and piece != king
        ]
コード例 #6
0
    def _move(self):
        self._move_piece_and_update_coords()

        if self._pawn_two_space_first_move():
            self.last_move_pawn = self.playing_piece
        else:
            self.last_move_pawn = None

        if self.playing_piece in [
                King(self.playing_color),
                Rook(self.playing_color)
        ]:
            self.playing_piece.moved = True
コード例 #7
0
def chess_pieces(color, *, y_idxs=None):
    """Helper method for new_chess_setup."""
    coords = [f'{x_idx}{y_idx}' for y_idx in y_idxs for x_idx in range(8)]
    pieces = [
        Rook(color),
        Knight(color),
        Bishop(color),
        Queen(color),
        King(color),
        Bishop(color),
        Knight(color),
        Rook(color),
        Pawn(color),
        Pawn(color),
        Pawn(color),
        Pawn(color),
        Pawn(color),
        Pawn(color),
        Pawn(color),
        Pawn(color)
    ]
    return list(zip(coords, pieces))
コード例 #8
0
def king():
    """Setup King start coords. Return King"""
    game_king = King(Color.BLACK)
    game_king.coords = Coords(x=1, y=1)
    return game_king
コード例 #9
0
 def _king(self, wanted_color):
     for piece in self.current_board_pieces():
         if piece == King(wanted_color):
             return piece
コード例 #10
0
 def _king_rook_castled_pieces(playing_color):
     king, rook = King(playing_color), Rook(playing_color)
     king.moved = True
     rook.moved = True
     return king, rook