Chess::Position
Inherits Struct < Value < Object
Constants
BLACK_KING_SIDE_CASTLE_FLAG = 1_u8 << 2
BLACK_QUEEN_SIDE_CASTLE_FLAG = 1_u8 << 3
EP_SQUARE_DIRECTION = [8, -8]
INITIAL = new(INITIAL_POSITION_IN_FEN)
INITIAL_POSITION_IN_FEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"
KING_CASTLE_FLAGS = [BLACK_QUEEN_SIDE_CASTLE_FLAG | BLACK_KING_SIDE_CASTLE_FLAG, WHITE_QUEEN_SIDE_CASTLE_FLAG | WHITE_KING_SIDE_CASTLE_FLAG]
PIECE_CHARS = "pnbrqk."
ROOK_CASTLE_FLAGS = Array(UInt8).new(64) do |idx|
case idx
when Square::A1.value
WHITE_QUEEN_SIDE_CASTLE_FLAG
when Square::H1.value
WHITE_KING_SIDE_CASTLE_FLAG
when Square::A8.value
BLACK_QUEEN_SIDE_CASTLE_FLAG
when Square::H8.value
BLACK_KING_SIDE_CASTLE_FLAG
else
0_u8
end
end
WHITE_KING_SIDE_CASTLE_FLAG = 1_u8
WHITE_QUEEN_SIDE_CASTLE_FLAG = 1_u8 << 1
Constructors
new(fen)
Sourcenew
SourceInstance methods
bishops
Sourceblacks
Sourcecolours
Sourcecolours=(colours : Array(UInt64))
Sourceep_square
Sourceep_square=(ep_square : Chess::Square)
Sourcefifty_move
Sourcefifty_move=(fifty_move : Int32)
Sourceflags
Sourceflags=(flags : UInt8)
Sourcegenerate_moves
Sourcegenerate_pseudolegal_moves
Sourcegenerate_wrapped_moves
Sourceinsufficient_material?
Sourceis_in_check?
Sourceis_square_attacked?(square, colour)
Sourcekey
Sourcekey=(key : UInt64)
Sourcekings
Sourceknights
Sourcelast_move
Sourcelast_move=(last_move : Int32)
Sourcemake_legal_move(move : MoveWrapper)
Sourcemake_move(move : MoveWrapper)
Sourcemake_move(move : Int32) : Position | Nil
Sourcemove_count
Sourcemove_count=(move_count : Int32)
Sourcepawn_key
Sourcepawn_key=(pawn_key : UInt64)
Sourcepawns
Sourcepieces
Sourcepieces=(pieces : Array(UInt64))
Sourcepretty
Sourcequeens
Sourcerooks
Sourceside_to_move
Sourceside_to_move=(side_to_move : Chess::Colour)
Sourceto_fen
Sourcetype_on_square(idx)
Sourcewhites
Source