From 151a50fba91b819a382d2b447d9cb2d16ff43227 Mon Sep 17 00:00:00 2001 From: Karma Riuk Date: Tue, 4 Feb 2025 21:51:14 +0100 Subject: [PATCH] made move str better (includes promotion) --- cpp/src/move.hpp | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/cpp/src/move.hpp b/cpp/src/move.hpp index b52f006..68a8d92 100644 --- a/cpp/src/move.hpp +++ b/cpp/src/move.hpp @@ -5,6 +5,7 @@ #include "pieces/piece.hpp" #include +#include struct Move { int8_t source_square; @@ -14,10 +15,34 @@ struct Move { CastleSide castle_side = CastleSide::NeitherSide; bool en_passant = false; int8_t promoting_to = Piece::None; + + std::string to_string() const { + std::stringstream ss; + ss << Coords::from_index(source_square) + << Coords::from_index(target_square); + if (promoting_to != Piece::None) { + switch (promoting_to & 0b00111) { + case Queen: + ss << 'q'; + break; + case Bishop: + ss << 'b'; + break; + case Knigt: + ss << 'n'; + break; + case Rook: + ss << 'r'; + break; + default: + break; + } + } + return ss.str(); + } }; inline std::ostream& operator<<(std::ostream& os, const Move& m) { - os << Coords::from_index(m.source_square) - << Coords::from_index(m.target_square); + os << m.to_string(); return os; }