aboutsummaryrefslogtreecommitdiff
path: root/src/evaluate.cpp
diff options
context:
space:
mode:
authorAdam <adammegarules1@gmail.com>2026-07-31 12:46:48 +0200
committerAdam <adammegarules1@gmail.com>2026-07-31 12:46:48 +0200
commit6af6acefdece08bb786640f5f3e9618ae04881da (patch)
tree9724cbf42a8f32e0fda4a817a22a614c80d317a7 /src/evaluate.cpp
parenta550620aa894e218a738b62b9ecd042b03f7858f (diff)
making evaluate file
Diffstat (limited to 'src/evaluate.cpp')
-rw-r--r--src/evaluate.cpp76
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);