[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,10 +6,37 @@ Piece::Piece(PieceColor color, PieceType type) : _color(color), _type(type) {
}
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 Piece(color, type);
}
PieceColor Piece::color() const {
return _color;
}

View File

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