mirror of
https://github.com/sockspls/badfish
synced 2025-04-29 16:23:09 +00:00
Code style and 80 chars cols in Position::from_fen()
No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
81801d395f
commit
e7939f450f
1 changed files with 42 additions and 38 deletions
|
@ -120,29 +120,35 @@ void Position::from_fen(const string& fenStr, bool isChess960) {
|
||||||
/*
|
/*
|
||||||
A FEN string defines a particular position using only the ASCII character set.
|
A FEN string defines a particular position using only the ASCII character set.
|
||||||
|
|
||||||
A FEN string contains six fields. The separator between fields is a space. The fields are:
|
A FEN string contains six fields separated by a space. The fields are:
|
||||||
|
|
||||||
1) Piece placement (from white's perspective). Each rank is described, starting with rank 8 and ending
|
1) Piece placement (from white's perspective). Each rank is described, starting
|
||||||
with rank 1; within each rank, the contents of each square are described from file A through file H.
|
with rank 8 and ending with rank 1; within each rank, the contents of each
|
||||||
Following the Standard Algebraic Notation (SAN), each piece is identified by a single letter taken
|
square are described from file A through file H. Following the Standard
|
||||||
from the standard English names. White pieces are designated using upper-case letters ("PNBRQK")
|
Algebraic Notation (SAN), each piece is identified by a single letter taken
|
||||||
while Black take lowercase ("pnbrqk"). Blank squares are noted using digits 1 through 8 (the number
|
from the standard English names. White pieces are designated using upper-case
|
||||||
of blank squares), and "/" separate ranks.
|
letters ("PNBRQK") while Black take lowercase ("pnbrqk"). Blank squares are
|
||||||
|
noted using digits 1 through 8 (the number of blank squares), and "/"
|
||||||
|
separates ranks.
|
||||||
|
|
||||||
2) Active color. "w" means white moves next, "b" means black.
|
2) Active color. "w" means white moves next, "b" means black.
|
||||||
|
|
||||||
3) Castling availability. If neither side can castle, this is "-". Otherwise, this has one or more
|
3) Castling availability. If neither side can castle, this is "-". Otherwise,
|
||||||
letters: "K" (White can castle kingside), "Q" (White can castle queenside), "k" (Black can castle
|
this has one or more letters: "K" (White can castle kingside), "Q" (White
|
||||||
kingside), and/or "q" (Black can castle queenside).
|
can castle queenside), "k" (Black can castle kingside), and/or "q" (Black
|
||||||
|
can castle queenside).
|
||||||
|
|
||||||
4) En passant target square in algebraic notation. If there's no en passant target square, this is "-".
|
4) En passant target square (in algebraic notation). If there's no en passant
|
||||||
If a pawn has just made a 2-square move, this is the position "behind" the pawn. This is recorded
|
target square, this is "-". If a pawn has just made a 2-square move, this
|
||||||
regardless of whether there is a pawn in position to make an en passant capture.
|
is the position "behind" the pawn. This is recorded regardless of whether
|
||||||
|
there is a pawn in position to make an en passant capture.
|
||||||
|
|
||||||
5) Halfmove clock: This is the number of halfmoves since the last pawn advance or capture. This is used
|
5) Halfmove clock. This is the number of halfmoves since the last pawn advance
|
||||||
to determine if a draw can be claimed under the fifty-move rule.
|
or capture. This is used to determine if a draw can be claimed under the
|
||||||
|
fifty-move rule.
|
||||||
|
|
||||||
6) Fullmove number: The number of the full move. It starts at 1, and is incremented after Black's move.
|
6) Fullmove number. The number of the full move. It starts at 1, and is
|
||||||
|
incremented after Black's move.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char col, row, token;
|
char col, row, token;
|
||||||
|
@ -263,20 +269,20 @@ const string Position::to_fen() const {
|
||||||
{
|
{
|
||||||
sq = make_square(file, rank);
|
sq = make_square(file, rank);
|
||||||
|
|
||||||
if (!square_is_empty(sq))
|
if (square_is_empty(sq))
|
||||||
|
emptyCnt++;
|
||||||
|
else
|
||||||
{
|
{
|
||||||
if (emptyCnt)
|
if (emptyCnt > 0)
|
||||||
{
|
{
|
||||||
fen << emptyCnt;
|
fen << emptyCnt;
|
||||||
emptyCnt = 0;
|
emptyCnt = 0;
|
||||||
}
|
}
|
||||||
fen << PieceToChar[piece_on(sq)];
|
fen << PieceToChar[piece_on(sq)];
|
||||||
}
|
}
|
||||||
else
|
|
||||||
emptyCnt++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (emptyCnt)
|
if (emptyCnt > 0)
|
||||||
fen << emptyCnt;
|
fen << emptyCnt;
|
||||||
|
|
||||||
if (rank > RANK_1)
|
if (rank > RANK_1)
|
||||||
|
@ -285,24 +291,23 @@ const string Position::to_fen() const {
|
||||||
|
|
||||||
fen << (sideToMove == WHITE ? " w " : " b ");
|
fen << (sideToMove == WHITE ? " w " : " b ");
|
||||||
|
|
||||||
if (st->castleRights != CASTLES_NONE)
|
if (can_castle(WHITE_OO))
|
||||||
{
|
fen << (chess960 ? char(toupper(file_to_char(file_of(castle_rook_square(WHITE_OO))))) : 'K');
|
||||||
if (can_castle(WHITE_OO))
|
|
||||||
fen << (chess960 ? char(toupper(file_to_char(file_of(castle_rook_square(WHITE_OO))))) : 'K');
|
|
||||||
|
|
||||||
if (can_castle(WHITE_OOO))
|
if (can_castle(WHITE_OOO))
|
||||||
fen << (chess960 ? char(toupper(file_to_char(file_of(castle_rook_square(WHITE_OOO))))) : 'Q');
|
fen << (chess960 ? char(toupper(file_to_char(file_of(castle_rook_square(WHITE_OOO))))) : 'Q');
|
||||||
|
|
||||||
if (can_castle(BLACK_OO))
|
if (can_castle(BLACK_OO))
|
||||||
fen << (chess960 ? file_to_char(file_of(castle_rook_square(BLACK_OO))) : 'k');
|
fen << (chess960 ? file_to_char(file_of(castle_rook_square(BLACK_OO))) : 'k');
|
||||||
|
|
||||||
if (can_castle(BLACK_OOO))
|
if (can_castle(BLACK_OOO))
|
||||||
fen << (chess960 ? file_to_char(file_of(castle_rook_square(BLACK_OOO))) : 'q');
|
fen << (chess960 ? file_to_char(file_of(castle_rook_square(BLACK_OOO))) : 'q');
|
||||||
} else
|
|
||||||
|
if (st->castleRights == CASTLES_NONE)
|
||||||
fen << '-';
|
fen << '-';
|
||||||
|
|
||||||
fen << (ep_square() == SQ_NONE ? " -" : " " + square_to_string(ep_square()))
|
fen << (ep_square() == SQ_NONE ? " - " : " " + square_to_string(ep_square()) + " ")
|
||||||
<< " " << st->rule50 << " " << 1 + (startPosPly - int(sideToMove == BLACK)) / 2;
|
<< st->rule50 << " " << 1 + (startPosPly - int(sideToMove == BLACK)) / 2;
|
||||||
|
|
||||||
return fen.str();
|
return fen.str();
|
||||||
}
|
}
|
||||||
|
@ -318,8 +323,7 @@ void Position::print(Move move) const {
|
||||||
if (move)
|
if (move)
|
||||||
{
|
{
|
||||||
Position p(*this, thread());
|
Position p(*this, thread());
|
||||||
string dd = (sideToMove == BLACK ? ".." : "");
|
cout << "\nMove is: " << (sideToMove == BLACK ? ".." : "") << move_to_san(p, move);
|
||||||
cout << "\nMove is: " << dd << move_to_san(p, move);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Rank rank = RANK_8; rank >= RANK_1; rank--)
|
for (Rank rank = RANK_8; rank >= RANK_1; rank--)
|
||||||
|
@ -329,11 +333,11 @@ void Position::print(Move move) const {
|
||||||
{
|
{
|
||||||
Square sq = make_square(file, rank);
|
Square sq = make_square(file, rank);
|
||||||
Piece piece = piece_on(sq);
|
Piece piece = piece_on(sq);
|
||||||
|
char c = (color_of(piece) == BLACK ? '=' : ' ');
|
||||||
|
|
||||||
if (piece == PIECE_NONE && color_of(sq) == DARK)
|
if (piece == PIECE_NONE && color_of(sq) == DARK)
|
||||||
piece = PIECE_NONE_DARK_SQ;
|
piece = PIECE_NONE_DARK_SQ;
|
||||||
|
|
||||||
char c = (color_of(piece_on(sq)) == BLACK ? '=' : ' ');
|
|
||||||
cout << c << PieceToChar[piece] << c << '|';
|
cout << c << PieceToChar[piece] << c << '|';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -350,7 +354,7 @@ template<bool FindPinned>
|
||||||
Bitboard Position::hidden_checkers() const {
|
Bitboard Position::hidden_checkers() const {
|
||||||
|
|
||||||
// Pinned pieces protect our king, dicovery checks attack the enemy king
|
// Pinned pieces protect our king, dicovery checks attack the enemy king
|
||||||
Bitboard b, result = EmptyBoardBB;
|
Bitboard b, result = 0;
|
||||||
Bitboard pinners = pieces(FindPinned ? flip(sideToMove) : sideToMove);
|
Bitboard pinners = pieces(FindPinned ? flip(sideToMove) : sideToMove);
|
||||||
Square ksq = king_square(FindPinned ? sideToMove : flip(sideToMove));
|
Square ksq = king_square(FindPinned ? sideToMove : flip(sideToMove));
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue