32 computers[turn] = is_computer;
34 players[turn]->allowSpeculativeSearch(is_computer);
46 time_keeper.reset(black_time, white_time);
54 std::cerr <<
"GameManager: game already started, load failure\n";
58 std::cerr <<
"loading " << csa_filename <<
"\n";
59 CsaFile csa_file(csa_filename);
60 state.reset(
new GameState(csa_file.getInitialState()));
61 logger->init(csa_file.getRecord().getPlayer(
BLACK).c_str(),
62 csa_file.getRecord().getPlayer(
WHITE).c_str(), state->state());
64 player(
BLACK)->setInitialState(state->state());
66 player(
WHITE)->setInitialState(state->state());
69 csa_file.getRecord().getMoves(moves, times);
70 assert(moves.size() == times.size());
71 for (
size_t i=0; i<moves.size(); ++i)
75 <<
"T" << times[i] <<
"\n";
76 if ((! state->state().isValidMove(moves[i]))
77 || (! pushMove(MoveWithComment(moves[i]), times[i]).isNormal()))
79 std::cerr <<
"invalid move " << i <<
" " << moves[i] <<
"\n";
88 const Player turn = state->state().turn();
90 const MoveWithComment best_move
91 = player(turn)->selectBestMove(*state, time_keeper.timeLimit(turn), time_keeper.timeElapsed(turn), byoyomi);
92 consumed = timer.
read();
99 assert(state->state().isValidMove(move.move));
100 time_keeper.pushMove(move.move.player(), seconds);
101 logger->pushMove(move, seconds);
102 logger->showTimeLeft(time_keeper);
105 player(
BLACK)->pushMove(move.move);
107 player(
WHITE)->pushMove(move.move);
114 time_keeper.popMove();
116 logger->showTimeLeft(time_keeper);
119 player(
BLACK)->popMove();
121 player(
WHITE)->popMove();