Chess::Move ChessGame::bookMove(Chess::Side side) { Q_ASSERT(!side.isNull()); if (m_book[side] == nullptr || m_moves.size() >= m_bookDepth[side] * 2) return Chess::Move(); Chess::GenericMove bookMove = m_book[side]->move(m_board->key()); Chess::Move move = m_board->moveFromGenericMove(bookMove); if (move.isNull()) return Chess::Move(); if (!m_board->isLegalMove(move)) { qWarning("Illegal opening book move for %s: %s", qPrintable(side.toString()), qPrintable(m_board->moveString(move, Chess::Board::LongAlgebraic))); return Chess::Move(); } if (m_board->isRepetition(move)) return Chess::Move(); return move; }
NewGameDialog::PlayerType NewGameDialog::playerType(Chess::Side side) const { Q_ASSERT(!side.isNull()); if (side == Chess::Side::White) return (ui->m_whitePlayerHumanRadio->isChecked()) ? Human : CPU; else return (ui->m_blackPlayerHumanRadio->isChecked()) ? Human : CPU; }
int NewGameDialog::selectedEngineIndex(Chess::Side side) const { Q_ASSERT(!side.isNull()); int i; if (side == Chess::Side::White) i = ui->m_whiteEngineComboBox->currentIndex(); else i = ui->m_blackEngineComboBox->currentIndex(); return m_proxyModel->mapToSource(m_proxyModel->index(i, 0)).row(); }
void ChessGame::setOpeningBook(const OpeningBook* book, Chess::Side side, int depth) { Q_ASSERT(!m_gameInProgress); if (side.isNull()) { setOpeningBook(book, Chess::Side::White, depth); setOpeningBook(book, Chess::Side::Black, depth); } else { m_book[side] = book; m_bookDepth[side] = depth; } }
void ChessGame::setPlayer(Chess::Side side, ChessPlayer* player) { Q_ASSERT(!side.isNull()); Q_ASSERT(player != nullptr); m_player[side] = player; }