1
0
Fork 0
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:
Marco Costalba 2011-10-30 15:46:00 +01:00
parent 81801d395f
commit e7939f450f

View file

@ -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));