fix _moves_gen_eval_sort()

This commit is contained in:
2023-07-12 21:34:04 +02:00
parent e2a3563fce
commit 754b011d05
2 changed files with 10 additions and 7 deletions

View File

@@ -24,6 +24,7 @@
#include "piece.h" #include "piece.h"
#include "move.h" #include "move.h"
#include "eval.h" #include "eval.h"
#include "eval-simple.h"
static pool_t *moves_pool; static pool_t *moves_pool;
@@ -226,6 +227,8 @@ void move_del(struct list_head *ptr)
FILE2C(F88(move->to)), RANK2C(R88(move->to))); FILE2C(F88(move->to)), RANK2C(R88(move->to)));
# endif # endif
if (move->pos)
pos_del(move->pos);
list_del(ptr); list_del(ptr);
pool_add(moves_pool, move); pool_add(moves_pool, move);
return; return;
@@ -670,7 +673,7 @@ static int moves_cmp_eval(__unused void *data, const struct list_head *h1, const
{ {
move_t *m1 = list_entry(h1, move_t, list); move_t *m1 = list_entry(h1, move_t, list);
move_t *m2 = list_entry(h2, move_t, list); move_t *m2 = list_entry(h2, move_t, list);
return m1->eval > m2->eval ? -1: m1->eval < m2->eval? 1: 0; return m2->eval_simple - m1->eval_simple;
} }
/** /**
@@ -698,12 +701,13 @@ void moves_gen_eval_sort(pos_t *pos)
list_for_each_entry(move, &pos->moves[pos->turn], list) { list_for_each_entry(move, &pos->moves[pos->turn], list) {
newpos = move_do(pos, move); newpos = move_do(pos, move);
moves_gen_all(newpos);
move->pos = newpos; move->pos = newpos;
move->eval = eval(newpos); //move_print(0, move, 0);
//log(1, "eval=%d\n", move->eval); move->eval_simple = eval_simple(newpos);
newpos->eval_simple = move->eval_simple;
} }
moves_sort(pos); moves_sort(pos);
//moves_print(pos, 0);
} }
/** /**
@@ -716,7 +720,7 @@ void moves_gen_all(pos_t *pos)
{ {
//log_f(1, "turn=%d opponent=%d\n", pos->turn, OPPONENT(pos->turn)); //log_f(1, "turn=%d opponent=%d\n", pos->turn, OPPONENT(pos->turn));
if (!pos->moves_generated) { if (!pos->moves_generated) {
if (!pos->moves_counted) if (!pos->moves_counted) {}
moves_gen(pos, OPPONENT(pos->turn), false, false); moves_gen(pos, OPPONENT(pos->turn), false, false);
moves_gen(pos, pos->turn, true, true); moves_gen(pos, pos->turn, true, true);
if (!pos->moves_counted) if (!pos->moves_counted)
@@ -761,8 +765,6 @@ pos_t *move_do(pos_t *pos, move_t *move)
square_t from = move->from, to = move->to; square_t from = move->from, to = move->to;
u64 bb_from = SQ88_2_BB(from), bb_to = SQ88_2_BB(to); u64 bb_from = SQ88_2_BB(from), bb_to = SQ88_2_BB(to);
pos->node_count++;
if (move->capture || piece == PAWN) /* 50 moves */ if (move->capture || piece == PAWN) /* 50 moves */
new->clock_50 = 0; new->clock_50 = 0;
else else

View File

@@ -48,6 +48,7 @@ typedef struct move_s {
move_flags_t flags; move_flags_t flags;
eval_t negamax; eval_t negamax;
eval_t eval; eval_t eval;
eval_t eval_simple;
pos_t *pos; pos_t *pos;
struct list_head list; /* next move */ struct list_head list; /* next move */
} move_t; } move_t;