diff options
| author | Adam <adammegarules1@gmail.com> | 2026-07-31 12:46:48 +0200 |
|---|---|---|
| committer | Adam <adammegarules1@gmail.com> | 2026-07-31 12:46:48 +0200 |
| commit | 6af6acefdece08bb786640f5f3e9618ae04881da (patch) | |
| tree | 9724cbf42a8f32e0fda4a817a22a614c80d317a7 /src/evaluate.cpp | |
| parent | a550620aa894e218a738b62b9ecd042b03f7858f (diff) | |
making evaluate file
Diffstat (limited to 'src/evaluate.cpp')
| -rw-r--r-- | src/evaluate.cpp | 76 |
1 files changed, 42 insertions, 34 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 <cstdlib> @@ -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); |
