chessmcu/Board.hpp

38 lines
769 B
C++

/*
* File: Board.hpp
* Author: amr
*
* Created on July 30, 2025, 9:20 PM
*/
#ifndef BOARD_HPP
#define BOARD_HPP
#include <vector>
#include <memory>
#include <cstdint>
#include "Piece.hpp"
// why do I have to forward declare all these?!
class Piece;
enum Players { PL_WHITE, PL_BLACK };
struct Square;
class Board {
private:
std::vector<std::vector<std::unique_ptr<Piece>>> boardGrid;
public:
Board();
virtual ~Board();
void setupInitialPosition();
Piece *getPieceAt(Square square) const;
void movePiece(Square from, Square to);
bool isInBounds(Square square) const;
bool isEmpty(Square square) const;
uint64_t serialBoard = 0xFFFF00000000FFFF; // opening position
void deserializeBoard(uint64_t incomingBoard);
};
#endif // BOARD_HPP