void ChessGame::stop(bool emitMoveChanged) { if (m_finished) return; m_finished = true; emit humanEnabled(false); if (!m_gameInProgress) { m_result = Chess::Result(); finish(); return; } initializePgn(); m_gameInProgress = false; const QVector<PgnGame::MoveData>& moves(m_pgn->moves()); int plies = moves.size(); m_pgn->setTag("PlyCount", QString::number(plies)); m_pgn->setResult(m_result); m_pgn->setResultDescription(m_result.description()); if (emitMoveChanged && plies > 1) { const PgnGame::MoveData& md(moves.at(plies - 1)); emit moveChanged(plies - 1, md.move, md.moveString, md.comment); } m_player[Chess::Side::White]->endGame(m_result); m_player[Chess::Side::Black]->endGame(m_result); connect(this, SIGNAL(playersReady()), this, SLOT(finish()), Qt::QueuedConnection); syncPlayers(); }
void ChessGame::stop() { if (m_finished) return; m_finished = true; emit humanEnabled(false); if (!m_gameInProgress) { m_result = Chess::Result(); finish(); return; } m_gameInProgress = false; m_pgn->setTag("PlyCount", QString::number(m_pgn->moves().size())); m_pgn->setResult(m_result); m_pgn->setResultDescription(m_result.description()); m_player[Chess::Side::White]->endGame(m_result); m_player[Chess::Side::Black]->endGame(m_result); connect(this, SIGNAL(playersReady()), this, SLOT(finish()), Qt::QueuedConnection); syncPlayers(); }
void ChessGame::startTurn() { if (m_paused) return; Chess::Side side(m_board->sideToMove()); Q_ASSERT(!side.isNull()); emit humanEnabled(m_player[side]->isHuman()); Chess::Move move(bookMove(side)); if (move.isNull()) m_player[side]->go(); else m_player[side]->makeBookMove(move); }
void ChessGame::startTurn() { if (m_paused) return; Chess::Side side(m_board->sideToMove()); Q_ASSERT(!side.isNull()); emit humanEnabled(m_player[side]->isHuman()); Chess::Move move(bookMove(side)); if (move.isNull()) { m_player[side]->go(); m_player[side.opposite()]->startPondering(); } else { m_player[side.opposite()]->clearPonderState(); m_player[side]->makeBookMove(move); } }