[Piece] Implement Piece::fromSymbol

This commit is contained in:
2022-12-18 16:13:10 +01:00
parent 8091771f62
commit 4eb596a9a0
2 changed files with 35 additions and 8 deletions

View File

@@ -6,8 +6,35 @@ Piece::Piece(PieceColor color, PieceType type) : _color(color), _type(type) {
} }
Piece::Optional Piece::fromSymbol(char symbol) { Piece::Optional Piece::fromSymbol(char symbol) {
(void)symbol; PieceType type;
PieceColor color = std::isupper(symbol) ? PieceColor::White : PieceColor::Black;
auto tryType = static_cast<PieceType>(toupper(symbol));
switch (tryType) {
case PieceType::Pawn:
type = PieceType::Pawn;
break;
case PieceType::Knight:
type = PieceType::Knight;
break;
case PieceType::Bishop:
type = PieceType::Bishop;
break;
case PieceType::Rook:
type = PieceType::Rook;
break;
case PieceType::Queen:
type = PieceType::Queen;
break;
case PieceType::King:
type = PieceType::King;
break;
default:
return std::nullopt; return std::nullopt;
}
return Piece(color, type);
} }
PieceColor Piece::color() const { PieceColor Piece::color() const {

View File

@@ -10,12 +10,12 @@ enum class PieceColor {
}; };
enum class PieceType { enum class PieceType {
Pawn, Pawn = 'P',
Knight, Knight = 'N',
Bishop, Bishop = 'B',
Rook, Rook = 'R',
Queen, Queen = 'Q',
King King = 'K'
}; };
class Piece { class Piece {