-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkiller.c
38 lines (38 loc) · 1.7 KB
/
killer.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "chess.h"
#include "data.h"
/* last modified 01/14/09 */
/*
*******************************************************************************
* *
* Killer() is used to maintain the two killer moves for each ply. the most *
* recently used killer is always first in the list. *
* *
*******************************************************************************
*/
void Killer(TREE * RESTRICT tree, int ply, int move) {
/*
************************************************************
* *
* If the best move so far is a capture or a promotion, *
* return, since we try good captures and promotions *
* before searching killer heuristic moves anyway. *
* *
************************************************************
*/
if (CaptureOrPromote(move))
return;
/*
************************************************************
* *
* Now, add this move to the current killer moves if it *
* is not already there. If the move is already first in *
* the list, leave it there, otherwise move the first one *
* down to slot two and insert this move into slot one. *
* *
************************************************************
*/
if (tree->killers[ply].move1 != move) {
tree->killers[ply].move2 = tree->killers[ply].move1;
tree->killers[ply].move1 = move;
}
}