48 lines
No EOL
2 KiB
C++
48 lines
No EOL
2 KiB
C++
# include "game_state.hpp"
|
|
|
|
namespace engine {
|
|
|
|
GameState::GameState() : board(8, 8), whiteTeam(nullptr), blackTeam(nullptr), turn(0) {
|
|
|
|
// white pieces
|
|
board.setPiece(0, 0, Piece(PieceColor::WHITE, PieceType::ROOK));
|
|
board.setPiece(1, 0, Piece(PieceColor::WHITE, PieceType::KNIGHT));
|
|
board.setPiece(2, 0, Piece(PieceColor::WHITE, PieceType::BISHOP));
|
|
board.setPiece(3, 0, Piece(PieceColor::WHITE, PieceType::QUEEN));
|
|
board.setPiece(4, 0, Piece(PieceColor::WHITE, PieceType::KING));
|
|
board.setPiece(5, 0, Piece(PieceColor::WHITE, PieceType::BISHOP));
|
|
board.setPiece(6, 0, Piece(PieceColor::WHITE, PieceType::KNIGHT));
|
|
board.setPiece(7, 0, Piece(PieceColor::WHITE, PieceType::ROOK));
|
|
|
|
for (int x = 0; x < 8; ++x) {
|
|
board.setPiece(x, 1, Piece(PieceColor::WHITE, PieceType::PAWN));
|
|
}
|
|
|
|
// black pieces
|
|
board.setPiece(0, 7, Piece(PieceColor::BLACK, PieceType::ROOK));
|
|
board.setPiece(1, 7, Piece(PieceColor::BLACK, PieceType::KNIGHT));
|
|
board.setPiece(2, 7, Piece(PieceColor::BLACK, PieceType::BISHOP));
|
|
board.setPiece(3, 7, Piece(PieceColor::BLACK, PieceType::QUEEN));
|
|
board.setPiece(4, 7, Piece(PieceColor::BLACK, PieceType::KING));
|
|
board.setPiece(5, 7, Piece(PieceColor::BLACK, PieceType::BISHOP));
|
|
board.setPiece(6, 7, Piece(PieceColor::BLACK, PieceType::KNIGHT));
|
|
board.setPiece(7, 7, Piece(PieceColor::BLACK, PieceType::ROOK));
|
|
|
|
for (int x = 0; x < 8; ++x) {
|
|
board.setPiece(x, 6, Piece(PieceColor::BLACK, PieceType::PAWN));
|
|
}
|
|
|
|
whiteTeam = Team{std::make_shared<Piece>(board.getCell(4, 0).piece -> get() -> getColor(), board.getCell(4, 0).piece -> get() -> getType())};
|
|
blackTeam = Team{std::make_shared<Piece>(board.getCell(4, 7).piece -> get() -> getColor(), board.getCell(4, 7).piece -> get() -> getType())};
|
|
}
|
|
GameState::~GameState() = default;
|
|
|
|
bool GameState::hasHisKing(PieceColor color) {
|
|
if (color == PieceColor::WHITE) {
|
|
return whiteTeam.king != nullptr;
|
|
} else {
|
|
return blackTeam.king != nullptr;
|
|
}
|
|
}
|
|
|
|
} // namespace engine
|