static void decide_move(void) { mtx_lock(&game_mutex); if (game_started && !is_end() && !is_force_mode) { if (game_started && has_single_response()) { move m = get_single_response(); print_computer_move(m); add_move(m); engine_move_count_inc(); } else { move m = book_get_move(book, current_position()); if (m != none_move) { print_computer_move(m); add_move(m); engine_move_count_inc(); } else { set_thinking_done_cb(computer_move, ++callback_key); start_thinking(); } } } else { game_started = false; } mtx_unlock(&game_mutex); }
bool UCIController::proc_go(const string& cmdstr) { StringTokenizer tokens(cmdstr," "); int i; m_meclock.enable(); m_opclock.enable(); for (i = 1; i < tokens.size(); i++) { if (tokens[i] == "wtime") { if (m_board.turn() == BB_WHITE) m_meclock.setTimeLeft(atoi(tokens[i+1].c_str())/10); else if (m_board.turn() == BB_BLACK) m_opclock.setTimeLeft(atoi(tokens[i+1].c_str())/10); } else if (tokens[i] == "btime") { if (m_board.turn() == BB_BLACK) m_meclock.setTimeLeft(atoi(tokens[i+1].c_str())/10); else if (m_board.turn() == BB_WHITE) m_opclock.setTimeLeft(atoi(tokens[i+1].c_str())/10); } else if (tokens[i] == "winc") { if (m_board.turn() == BB_WHITE) m_meclock.setIncrement(atoi(tokens[i+1].c_str())/10); else if (m_board.turn() == BB_BLACK) m_opclock.setIncrement(atoi(tokens[i+1].c_str())/10); } else if (tokens[i] == "binc") { if (m_board.turn() == BB_BLACK) m_meclock.setIncrement(atoi(tokens[i+1].c_str())/10); else if (m_board.turn() == BB_WHITE) m_opclock.setIncrement(atoi(tokens[i+1].c_str())/10); } else if (tokens[i] == "movestogo") { m_meclock.setMovesLeft(atoi(tokens[i+1].c_str())); m_opclock.setMovesLeft(atoi(tokens[i+1].c_str())); } else if (tokens[i] == "infinite" || tokens[i] == "ponder") { m_meclock.disable(); m_opclock.disable(); } else if (tokens[i] == "mate" || tokens[i] == "movetime" || tokens[i] == "nodes" || tokens[i] == "searchmoves") WRITEPIPE("UCICONTROLLER: Operation Not Supported\n"); } start_thinking(); return true; }