mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-19 08:36:33 +08:00
Retire UCI_Chess960 option
We don't need that ! We can infere from starting fen string if we are in a Chess960 game or not. And note that this is a per-position property, not an application wide one. A nice trick is to use a custom manipulator (that is an enum actually) to keep using the handy operator<<() on the move when sending to std::cout, yes, I have indulged a bit here ;-) Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
21
src/move.cpp
21
src/move.cpp
@@ -104,11 +104,11 @@ Move move_from_string(const Position& pos, const std::string& str) {
|
||||
|
||||
|
||||
/// move_to_string() converts a move to a string in coordinate notation
|
||||
/// (g1f3, a7a8q, etc.). The only special case is castling moves, where we
|
||||
/// (g1f3, a7a8q, etc.). The only special case is castling moves, where we
|
||||
/// print in the e1g1 notation in normal chess mode, and in e1h1 notation in
|
||||
/// Chess960 mode.
|
||||
|
||||
const std::string move_to_string(Move move) {
|
||||
const std::string move_to_string(Move move, bool chess960) {
|
||||
|
||||
std::string str;
|
||||
Square from = move_from(move);
|
||||
@@ -120,14 +120,12 @@ const std::string move_to_string(Move move) {
|
||||
str = "0000";
|
||||
else
|
||||
{
|
||||
if (!Chess960)
|
||||
{
|
||||
if (move_is_short_castle(move))
|
||||
return (from == SQ_E1 ? "e1g1" : "e8g8");
|
||||
if (move_is_short_castle(move) && !chess960)
|
||||
return (from == SQ_E1 ? "e1g1" : "e8g8");
|
||||
|
||||
if (move_is_long_castle(move) && !chess960)
|
||||
return (from == SQ_E1 ? "e1c1" : "e8c8");
|
||||
|
||||
if (move_is_long_castle(move))
|
||||
return (from == SQ_E1 ? "e1c1" : "e8c8");
|
||||
}
|
||||
str = square_to_string(from) + square_to_string(to);
|
||||
if (move_is_promotion(move))
|
||||
str += piece_type_to_char(move_promotion_piece(move), false);
|
||||
@@ -138,9 +136,10 @@ const std::string move_to_string(Move move) {
|
||||
|
||||
/// Overload the << operator, to make it easier to print moves.
|
||||
|
||||
std::ostream &operator << (std::ostream& os, Move m) {
|
||||
std::ostream& operator << (std::ostream& os, Move m) {
|
||||
|
||||
return os << move_to_string(m);
|
||||
bool chess960 = (os.iword(0) != 0); // See set960()
|
||||
return os << move_to_string(m, chess960);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user