[Piece] Refactor PieceType
This commit is contained in:
34
Piece.cpp
34
Piece.cpp
@@ -23,15 +23,13 @@ PieceType Piece::type() const {
|
|||||||
return mType;
|
return mType;
|
||||||
}
|
}
|
||||||
std::optional<PieceType> Piece::pieceTypeFromSymbol(char symbol) {
|
std::optional<PieceType> Piece::pieceTypeFromSymbol(char symbol) {
|
||||||
auto tryType = static_cast<PieceType>(toupper(symbol));
|
switch (toupper(symbol)) {
|
||||||
|
case 'P': return PieceType::Pawn;
|
||||||
switch (tryType) {
|
case 'N': return PieceType::Knight;
|
||||||
case PieceType::Pawn: return PieceType::Pawn;
|
case 'B': return PieceType::Bishop;
|
||||||
case PieceType::Knight: return PieceType::Knight;
|
case 'R': return PieceType::Rook;
|
||||||
case PieceType::Bishop: return PieceType::Bishop;
|
case 'Q': return PieceType::Queen;
|
||||||
case PieceType::Rook: return PieceType::Rook;
|
case 'K': return PieceType::King;
|
||||||
case PieceType::Queen: return PieceType::Queen;
|
|
||||||
case PieceType::King: return PieceType::King;
|
|
||||||
default: return std::nullopt;
|
default: return std::nullopt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -41,7 +39,23 @@ bool operator==(const Piece &lhs, const Piece &rhs) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::ostream &operator<<(std::ostream &os, const Piece &piece) {
|
std::ostream &operator<<(std::ostream &os, const Piece &piece) {
|
||||||
int typeNum = static_cast<int>(piece.type());
|
int typeNum;
|
||||||
|
|
||||||
|
switch (piece.type()) {
|
||||||
|
case PieceType::Pawn: typeNum = 'P';
|
||||||
|
break;
|
||||||
|
case PieceType::Knight: typeNum = 'N';
|
||||||
|
break;
|
||||||
|
case PieceType::Bishop: typeNum = 'B';
|
||||||
|
break;
|
||||||
|
case PieceType::Rook:typeNum = 'R';
|
||||||
|
break;
|
||||||
|
case PieceType::Queen: typeNum = 'Q';
|
||||||
|
break;
|
||||||
|
case PieceType::King: typeNum = 'K';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (piece.color() == PieceColor::Black) {
|
if (piece.color() == PieceColor::Black) {
|
||||||
typeNum = std::tolower(typeNum);
|
typeNum = std::tolower(typeNum);
|
||||||
}
|
}
|
||||||
|
12
Piece.hpp
12
Piece.hpp
@@ -10,12 +10,12 @@ enum class PieceColor {
|
|||||||
};
|
};
|
||||||
|
|
||||||
enum class PieceType {
|
enum class PieceType {
|
||||||
Pawn = 'P',
|
Pawn = 0b000,
|
||||||
Knight = 'N',
|
Knight = 0b010,
|
||||||
Bishop = 'B',
|
Bishop = 0b100,
|
||||||
Rook = 'R',
|
Rook = 0b110,
|
||||||
Queen = 'Q',
|
Queen = 0b1000,
|
||||||
King = 'K'
|
King = 0b1010
|
||||||
};
|
};
|
||||||
|
|
||||||
class Piece {
|
class Piece {
|
||||||
|
Reference in New Issue
Block a user