#pragma once #include #include #include class Chessboard { public: Chessboard(); std::string processTranscription(const std::string& t); std::string stringifyBoard(); private: using Move = std::pair; std::string stringifyMoves(const std::vector&); void commitMoves(std::vector&); struct Piece { enum Types { Pawn, Knight, Bishop, Rook, Queen, King, Taken, }; enum Colors { Black, White }; Types type; Colors color; int pos; }; using PieceSet = std::array; PieceSet blackPieces; PieceSet whitePieces; int m_moveCounter; using Board = std::array; Board board; bool checkNext(const Piece& piece, int pos, bool kingCheck = false); };