From 6af6acefdece08bb786640f5f3e9618ae04881da Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 31 Jul 2026 12:46:48 +0200 Subject: making evaluate file --- src/evaluate.cpp | 76 +++++++++++++++++++++++++++++++------------------------- src/evaluate.hpp | 7 +++++- 2 files changed, 48 insertions(+), 35 deletions(-) diff --git a/src/evaluate.cpp b/src/evaluate.cpp index c53e64e..7d0a78e 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -1,4 +1,5 @@ #include "evaluate.hpp" +#include "board/board.hpp" #include "moves.hpp" #include @@ -76,7 +77,7 @@ static int KING_TABLE_EARLY[64] = { }; /* - * i cound some up with better name + * i cound have come up with better name. * this function just takes square and if color is black rotate it */ static int RotateBoardForBlack(const int square, const bool color) { @@ -101,39 +102,7 @@ static int ForceKingToEdgeBonus(const Position enemyKing, return bonus; } - -static bool IsEndgame(Game *g) { - int queens = 0; - int rooks = 0; - - for (const Piece &piece : g->pieces) { - switch (piece.type) { - case QUEEN: - queens++; - break; - case ROOK: - rooks++; - break; - default: - break; - } - } - - return queens == 0 || (queens == 2 && rooks <= 1); -} - -int EvaluateBoardForWhite(Game *g) { - switch (GetNewGameState(g)) { - case WHITE_WON: - return MATE; - case BLACK_WON: - return -MATE; - case DRAW: - return 0; - case TURN: - break; - } - +int CountBoardMaterial(Game *g) { int score = 0; for (int i = 0; i < 64; i++) { @@ -178,6 +147,45 @@ int EvaluateBoardForWhite(Game *g) { } } + return score; +}; + +bool IsEndgame(Game *g) { + int queens = 0; + int rooks = 0; + + for (const Piece &piece : g->pieces) { + switch (piece.type) { + case QUEEN: + queens++; + break; + case ROOK: + rooks++; + break; + default: + break; + } + } + + return queens == 0 || (queens == 2 && rooks <= 1); +} + +int EvaluateBoardForWhite(Game *g) { + switch (GetNewGameState(g)) { + case WHITE_WON: + return MATE; + case BLACK_WON: + return -MATE; + case DRAW: + return 0; + case TURN: + break; + } + + int score = 0; + + score += CountBoardMaterial(g); + Position whiteKing = FindKing(g, true); Position blackKing = FindKing(g, false); diff --git a/src/evaluate.hpp b/src/evaluate.hpp index d0baf14..feeff70 100644 --- a/src/evaluate.hpp +++ b/src/evaluate.hpp @@ -3,7 +3,12 @@ #include "board/board.hpp" +/* + * Return static evaluation of board from white player pespective. + * This function is very expensive for computation. + */ int EvaluateBoardForWhite(Game *g); -bool InEndgame(Game *g); + +bool IsEndgame(Game *g); #endif /* SRC_EVALUATE_H_ */ -- cgit v1.2.3