#include "board.hpp" #include #include #include bool WHITE = true; bool BLACK = false; Piece createPiece(pieceType type, bool color, bool moved) { Piece piece; piece.type = type; piece.color = color; piece.moved = moved; return piece; }; void printBoard(board *b) { for (int i = 0; i < 64; i++) { Piece currentPiece = b->pieces[i]; std::printf("%d%d%d ", currentPiece.type, currentPiece.moved, currentPiece.color); if (i % 8 == 7 && i != 0) { std::printf("\n"); } } } void setBoardFen(std::string fen, board *b) { // example fen rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 int file = 0; int rank = 0; for (int i = 0; i < fen.length(); i++) { if (fen[i] == '/') { file = 0; rank++; continue; } if (isdigit(fen[i])) { int move = fen[i] - '0'; file += move; continue; } if (toupper(fen[i]) == 'W') { b->turn = WHITE; } if (toupper(fen[i]) == 'B') { b->turn = BLACK; } if (toupper(fen[i]) == 'N') { Piece piece = createPiece(KNIGHT, isupper(i)); b->pieces[rank * 8 + file] = piece; file++; continue; } if (toupper(fen[i]) == 'R') { Piece piece = createPiece(ROOK, isupper(i)); b->pieces[rank * 8 + file] = piece; file++; continue; } if (toupper(fen[i]) == 'Q') { Piece piece = createPiece(QUEEN, isupper(i)); b->pieces[rank * 8 + file] = piece; file++; continue; } if (toupper(fen[i]) == 'B') { Piece piece = createPiece(BISHOP, isupper(i)); b->pieces[rank * 8 + file] = piece; file++; continue; } if (toupper(fen[i]) == 'P') { Piece piece = createPiece(PAWN, isupper(i)); b->pieces[rank * 8 + file] = piece; file++; continue; } if (toupper(fen[i]) == 'K') { Piece piece = createPiece(KING, isupper(i)); b->pieces[rank * 8 + file] = piece; file++; continue; } break; } }