Rev 108 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 108 | Rev 154 | ||
|---|---|---|---|
| Line 1... | Line 1... | ||
| 1 | #include "chess.h" |
1 | #include "chess.h" |
| 2 | #include "data.h" |
2 | #include "data.h" |
| 3 | /* last modified |
3 | /* last modified 08/03/16 */ |
| 4 | /* |
4 | /* |
| 5 | ******************************************************************************* |
5 | ******************************************************************************* |
| 6 | * * |
6 | * * |
| 7 | * Repeat() is used to detect a draw by repetition. The repetition list is * |
7 | * Repeat() is used to detect a draw by repetition. The repetition list is * |
| 8 | * a simple 1d array that contains the Zobrist signatures for each position * |
8 | * a simple 1d array that contains the Zobrist signatures for each position * |
| Line 47... | Line 47... | ||
| 47 | */ |
47 | */ |
| 48 | tree->rep_list[rep_index + ply] = HashKey; |
48 | tree->rep_list[rep_index + ply] = HashKey; |
| 49 | if (Reversible(ply) < 4) |
49 | if (Reversible(ply) < 4) |
| 50 | return 0; |
50 | return 0; |
| 51 | if (Reversible(ply) > 99) |
51 | if (Reversible(ply) > 99) |
| 52 | return |
52 | return 3; |
| 53 | /* |
53 | /* |
| 54 | ************************************************************ |
54 | ************************************************************ |
| 55 | * * |
55 | * * |
| 56 | * Now we scan the right part of the repetition list, * |
56 | * Now we scan the right part of the repetition list, * |
| 57 | * which is to search backward from the entry for 2 plies * |
57 | * which is to search backward from the entry for 2 plies * |
| Line 66... | Line 66... | ||
| 66 | ************************************************************ |
66 | ************************************************************ |
| 67 | */ |
67 | */ |
| 68 | count = Reversible(ply) / 2 - 1; |
68 | count = Reversible(ply) / 2 - 1; |
| 69 | for (where = rep_index + ply - 4; count; where -= 2, count--) { |
69 | for (where = rep_index + ply - 4; count; where -= 2, count--) { |
| 70 | if (HashKey == tree->rep_list[where]) |
70 | if (HashKey == tree->rep_list[where]) |
| 71 | return |
71 | return 2; |
| 72 | } |
72 | } |
| 73 | return 0; |
73 | return 0; |
| 74 | } |
74 | } |
| 75 | 75 | ||
| 76 | /* last modified |
76 | /* last modified 08/03/16 */ |
| 77 | /* |
77 | /* |
| 78 | ******************************************************************************* |
78 | ******************************************************************************* |
| 79 | * * |
79 | * * |
| 80 | * Repeat3x() is used to detect a real draw by repetition. This routine is * |
80 | * Repeat3x() is used to detect a real draw by repetition. This routine is * |
| 81 | * only called from Main() and simply scans the complete list searching for * |
81 | * only called from Main() and simply scans the complete list searching for * |