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
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
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
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))
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 ]
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
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))
def king(): """Setup King start coords. Return King""" game_king = King(Color.BLACK) game_king.coords = Coords(x=1, y=1) return game_king
def _king(self, wanted_color): for piece in self.current_board_pieces(): if piece == King(wanted_color): return piece
def _king_rook_castled_pieces(playing_color): king, rook = King(playing_color), Rook(playing_color) king.moved = True rook.moved = True return king, rook