Python chess.PAWN Examples
The following are 6
code examples of chess.PAWN().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
chess
, or try the search function
.
Example #1
Source File: proc.py From fastchess with GNU General Public License v3.0 | 6 votes |
def binary_encode(board): """ Returns the board as a binary vector, for eval prediction purposes. """ rows = [] for color in [chess.WHITE, chess.BLACK]: for ptype in range(chess.PAWN, chess.KING + 1): mask = board.pieces_mask(ptype, color) rows.append(list(map(int, bin(mask)[2:].zfill(64)))) ep = [0] * 64 if board.ep_square: ep[board.ep_square] = 1 rows.append(ep) rows.append([ int(board.turn), int(bool(board.castling_rights & chess.BB_A1)), int(bool(board.castling_rights & chess.BB_H1)), int(bool(board.castling_rights & chess.BB_A8)), int(bool(board.castling_rights & chess.BB_H8)), int(board.is_check()) ]) return np.concatenate(rows)
Example #2
Source File: utilities.py From reconchess with BSD 3-Clause "New" or "Revised" License | 6 votes |
def pawn_capture_moves_on(board: chess.Board) -> List[chess.Move]: """Generates all pawn captures on `board`, even if there is no piece to capture. All promotion moves are included.""" pawn_capture_moves = [] no_opponents_board = without_opponent_pieces(board) for pawn_square in board.pieces(chess.PAWN, board.turn): for attacked_square in board.attacks(pawn_square): # skip this square if one of our own pieces are on the square if no_opponents_board.piece_at(attacked_square): continue pawn_capture_moves.append(chess.Move(pawn_square, attacked_square)) # add in promotion moves if attacked_square in chess.SquareSet(chess.BB_BACKRANKS): for piece_type in chess.PIECE_TYPES[1:-1]: pawn_capture_moves.append(chess.Move(pawn_square, attacked_square, promotion=piece_type)) return pawn_capture_moves
Example #3
Source File: leastsq.py From fastchess with GNU General Public License v3.0 | 5 votes |
def print_tables(w): for i, color in enumerate([chess.WHITE, chess.BLACK]): for j, ptype in enumerate(range(chess.PAWN, chess.KING + 1)): table = w[j * 64 + i * 64 * 6:(j + 1) * 64 + i * 64 * 6].reshape(8, 8) print(chess.Piece(ptype, color)) if add_counts: print('Val:', w[12 * 64 + 6 * i + j]) print(table.round(2))
Example #4
Source File: utilities.py From reconchess with BSD 3-Clause "New" or "Revised" License | 5 votes |
def add_pawn_queen_promotion(board: chess.Board, move: chess.Move) -> chess.Move: piece = board.piece_at(move.from_square) if piece is not None and piece.piece_type == chess.PAWN and move.to_square in BACK_RANKS and move.promotion is None: move = chess.Move(move.from_square, move.to_square, chess.QUEEN) return move
Example #5
Source File: game_state.py From Zerofish with MIT License | 5 votes |
def parse_action (self, action): move = adapter.label_flat_to_move(action) # TODO: Fix this promotion stuff moving_piece = self.state.piece_at(move.from_square) if moving_piece.piece_type == chess.PAWN: rank, _ = adapter.square_to_index(move.to_square) # If pawn moves to edge promote to queen if rank == 0 or rank == 7: move.promotion = chess.QUEEN return move
Example #6
Source File: fastchess.py From fastchess with GNU General Public License v3.0 | 4 votes |
def apply(self, vec, board, move): """ Should be called prior to pushing move to board. Applies the move to the vector. """ # Remove from square. piece_type = board.piece_type_at(move.from_square) color = board.turn vec -= self.piece_to_vec[piece_type, color, move.from_square] # Update castling rights. old_castling_rights = board.clean_castling_rights() new_castling_rights = old_castling_rights & ~chess.BB_SQUARES[ move.to_square] & ~chess.BB_SQUARES[move.from_square] if piece_type == chess.KING: new_castling_rights &= ~chess.BB_RANK_1 if color else ~chess.BB_RANK_8 # Castling rights can only have been removed for sq in chess.scan_forward(old_castling_rights ^ new_castling_rights): vec -= self.castling[sq] # Remove pawns captured en passant. if piece_type == chess.PAWN and move.to_square == board.ep_square: down = -8 if board.turn == chess.WHITE else 8 capture_square = board.ep_square + down vec -= self.piece_to_vec[chess.PAWN, not board.turn, capture_square] # Move rook during castling. if piece_type == chess.KING: if move.from_square == chess.E1: if move.to_square == chess.G1: vec -= self.piece_to_vec[chess.ROOK, color, chess.H1] vec += self.piece_to_vec[chess.ROOK, color, chess.F1] if move.to_square == chess.C1: vec -= self.piece_to_vec[chess.ROOK, color, chess.A1] vec += self.piece_to_vec[chess.ROOK, color, chess.D1] if move.from_square == chess.E8: if move.to_square == chess.G8: vec -= self.piece_to_vec[chess.ROOK, color, chess.H8] vec += self.piece_to_vec[chess.ROOK, color, chess.F8] if move.to_square == chess.C8: vec -= self.piece_to_vec[chess.ROOK, color, chess.A8] vec += self.piece_to_vec[chess.ROOK, color, chess.D8] # Capture captured_piece_type = board.piece_type_at(move.to_square) if captured_piece_type: vec -= self.piece_to_vec[captured_piece_type, not color, move.to_square] # Put the piece on the target square. vec += self.piece_to_vec[move.promotion or piece_type, color, move.to_square] return vec