Subversion Repositories Games.Chess Giants

Rev

Rev 33 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 33 Rev 108
Line 15... Line 15...
15
 *   entered, advancing the game to the next position.                         *
15
 *   entered, advancing the game to the next position.                         *
16
 *                                                                             *
16
 *                                                                             *
17
 *******************************************************************************
17
 *******************************************************************************
18
 */
18
 */
19
void Analyze() {
19
void Analyze() {
20
  int i, move, back_number, readstat = 1;
20
  int i, v, move, back_number, readstat = 1;
21
  TREE *const tree = block[0];
21
  TREE *const tree = block[0];
22
 
22
 
23
/*
23
/*
24
 ************************************************************
24
 ************************************************************
25
 *                                                          *
25
 *                                                          *
Line 48... Line 48...
48
      last_pv.pathd = 0;
48
      last_pv.pathd = 0;
49
      last_pv.pathl = 0;
49
      last_pv.pathl = 0;
50
      input_status = 0;
50
      input_status = 0;
51
      pondering = 1;
51
      pondering = 1;
52
      tree->status[1] = tree->status[0];
52
      tree->status[1] = tree->status[0];
53
      (void) Iterate(game_wtm, think, 0);
53
      Iterate(game_wtm, think, 0);
54
      pondering = 0;
54
      pondering = 0;
55
      if (book_move)
55
      if (book_move)
56
        moves_out_of_book = 0;
56
        moves_out_of_book = 0;
57
      if (!xboard) {
57
      if (!xboard) {
58
        if (game_wtm)
58
        if (game_wtm)
Line 71... Line 71...
71
 *                                                          *
71
 *                                                          *
72
 ************************************************************
72
 ************************************************************
73
 */
73
 */
74
      if (!input_status)
74
      if (!input_status)
75
        do {
75
        do {
76
          readstat = Read(1, buffer, sizeof (buffer)); // Pierre-Marie Baty -- use safe version
76
          readstat = Read(1, buffer);
77
          if (readstat < 0)
77
          if (readstat < 0)
78
            break;
78
            break;
79
          nargs = ReadParse(buffer, args, "     ;");
79
          nargs = ReadParse(buffer, args, " \t;");
80
          Print(128, "%s\n", buffer);
80
          Print(32, "%s\n", buffer);
81
          if (strstr(args[0], "timeleft") && !xboard) {
81
          if (strstr(args[0], "timeleft") && !xboard) {
82
            if (game_wtm)
82
            if (game_wtm)
83
              printf("analyze.White(%d): ", move_number);
83
              printf("analyze.White(%d): ", move_number);
84
            else
84
            else
85
              printf("analyze.Black(%d): ", move_number);
85
              printf("analyze.Black(%d): ", move_number);
86
            fflush(stdout);
86
            fflush(stdout);
87
          }
87
          }
88
        } while (strstr(args[0], "timeleft"));
88
        } while (strstr(args[0], "timeleft"));
89
      else
89
      else
90
        nargs = ReadParse(buffer, args, "       ;");
90
        nargs = ReadParse(buffer, args, " \t;");
91
      if (readstat < 0)
91
      if (readstat < 0)
92
        break;
92
        break;
93
      move = 0;
93
      move = 0;
94
      if (!strcmp(args[0], "exit"))
94
      if (!strcmp(args[0], "exit"))
95
        break;
95
        break;
Line 115... Line 115...
115
        if (move_number == 0) {
115
        if (move_number == 0) {
116
          move_number = 1;
116
          move_number = 1;
117
          game_wtm = 1;
117
          game_wtm = 1;
118
        }
118
        }
119
        sprintf(buffer, "reset %d", move_number);
119
        sprintf(buffer, "reset %d", move_number);
120
        (void) Option(tree);
120
        Option(tree);
121
        display = tree->position;
121
        display = tree->position;
122
      } else if (Option(tree)) {
122
      } else if (Option(tree)) {
123
        display = tree->position;
123
        display = tree->position;
124
      }
124
      }
125
/*
125
/*
Line 129... Line 129...
129
 *  swap sides, and return to the top of the loop to call   *
129
 *  swap sides, and return to the top of the loop to call   *
130
 *  search from this new position.                          *
130
 *  search from this new position.                          *
131
 *                                                          *
131
 *                                                          *
132
 ************************************************************
132
 ************************************************************
133
 */
133
 */
134
      else if ((move = InputMove(tree, buffer, 0, game_wtm, 1, 0))) {
134
      else if ((move = InputMove(tree, 0, game_wtm, 1, 0, buffer))) {
135
        char *outmove = OutputMove(tree, move, 0, game_wtm);
135
        char *outmove = OutputMove(tree, 0, game_wtm, move);
136
 
136
 
137
        if (history_file) {
137
        if (history_file) {
138
          fseek(history_file, ((move_number - 1) * 2 + 1 - game_wtm) * 10,
138
          fseek(history_file, ((move_number - 1) * 2 + 1 - game_wtm) * 10,
139
              SEEK_SET);
139
              SEEK_SET);
140
          fprintf(history_file, "%9s\n", outmove);
140
          fprintf(history_file, "%9s\n", outmove);
141
        }
141
        }
142
        if (game_wtm)
142
        if (game_wtm)
143
          Print(128, "White(%d): ", move_number);
143
          Print(32, "White(%d): ", move_number);
144
        else
144
        else
145
          Print(128, "Black(%d): ", move_number);
145
          Print(32, "Black(%d): ", move_number);
146
        Print(128, "%s\n", outmove);
146
        Print(32, "%s\n", outmove);
147
        if (speech) {
147
        if (speech) {
148
          char announce[64];
148
          char announce[64];
149
 
149
 
150
          strcpy_s(announce, sizeof (announce), SPEAK); // Pierre-Marie Baty -- use safe version
150
          strcpy(announce, "./speak ");
151
          strcat_s(announce, sizeof (announce), outmove); // Pierre-Marie Baty -- use safe version
151
          strcat(announce, outmove);
-
 
152
          strcat(announce, " &");
152
          system(announce);
153
          v = system(announce);
-
 
154
          if (v != 0)
-
 
155
            perror("Analyze() system() error: ");
153
        }
156
        }
154
        MakeMoveRoot(tree, move, game_wtm);
157
        MakeMoveRoot(tree, game_wtm, move);
155
        display = tree->position;
158
        display = tree->position;
156
        last_mate_score = 0;
159
        last_mate_score = 0;
157
        if (log_file)
160
        if (log_file)
158
          DisplayChessBoard(log_file, tree->position);
161
          DisplayChessBoard(log_file, tree->position);
159
      }
162
      }