ChessNut/engine/core/game_state.cpp
2025-10-13 23:10:11 +02:00

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