aboutsummaryrefslogtreecommitdiff
path: root/src/evaluate.cpp
diff options
context:
space:
mode:
authorAdam <adammegarules1@gmail.com>2026-08-01 08:14:20 +0200
committerAdam <adammegarules1@gmail.com>2026-08-01 08:14:20 +0200
commit839b4740af77743c7141e113eb7f110b4f6a9983 (patch)
tree4d9e6ac57e6ecdace3c1e86dc26afd87bc4a863d /src/evaluate.cpp
parent1b006985ba2381a29dd9aa34aec1dafbae224897 (diff)
optimalization and naming changes
Diffstat (limited to 'src/evaluate.cpp')
-rw-r--r--src/evaluate.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/evaluate.cpp b/src/evaluate.cpp
index a777e0c..3e4f72f 100644
--- a/src/evaluate.cpp
+++ b/src/evaluate.cpp
@@ -1,7 +1,9 @@
#include "evaluate.hpp"
#include "board/board.hpp"
#include "moves.hpp"
+#include <cassert>
#include <cstdlib>
+#include <iostream>
constexpr int PAWN_VALUE = 100;
constexpr int KNIGHT_VALUE = 320;
@@ -105,10 +107,18 @@ static int ForceKingToEdgeBonus(const Position enemyKing,
int CountBoardMaterial(Game *g) {
int score = 0;
- for (int i = 0; i < 64; i++) {
+ uint64_t piece_bitboard = g->PieceBitboard;
+ while (piece_bitboard != 0) {
+ int i = __builtin_ctzll(piece_bitboard);
+ piece_bitboard &= piece_bitboard - 1;
+
const Piece piece = g->pieces[i];
- if (piece.type == NONEPIECE)
- continue;
+
+ if (piece.type == NONEPIECE) {
+ assert(false && "in piece bitboard found none piece");
+ std::cout << "Internal error\n";
+ exit(1);
+ }
int value = 0;