Subversion Repositories Games.Chess Giants

Rev

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 04/29/15 */
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 2;
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 1;
71
      return 2;
72
  }
72
  }
73
  return 0;
73
  return 0;
74
}
74
}
75
 
75
 
76
/* last modified 05/08/14 */
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  *