Files
cpl_cpp-project/Piece.cpp

62 lines
1.4 KiB
C++

#include "Piece.hpp"
#include <ostream>
Piece::Piece(PieceColor color, PieceType type) : _color(color), _type(type) {
}
Piece::Optional Piece::fromSymbol(char 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;
}
PieceType Piece::type() const {
return _type;
}
bool operator==(const Piece &lhs, const Piece &rhs) {
(void) lhs;
(void) rhs;
return false;
}
std::ostream &operator<<(std::ostream &os, const Piece &piece) {
(void) piece;
return os;
}
PieceColor operator!(PieceColor color) {
return static_cast<PieceColor>((static_cast<int>(color) + 1) % 2);
}