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