void KReversiView::onPlayerMove(int row, int col) { if (!m_game) return; emit userMove(KReversiPos(row, col)); }
bool GameEngine::makeMove(int index) { if (getSetupMode()) { return false; } KReversiPos move; int row = index / 8; int col = index % 8; move = KReversiPos(m_curPlayer, row, col ); if( !isMovePossible(move) ) { qDebug() << "No move possible"; return false; } makeMove( move ); m_undoStack.push( m_changedChips ); return true; }
void KReversiView::updateBoard() { for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { QMetaObject::invokeMethod(m_qml_root, "setPreAnimationTime", Q_ARG(QVariant, i), Q_ARG(QVariant, j), Q_ARG(QVariant, m_game ? m_game->getPreAnimationDelay(KReversiPos(i, j)) : 0)); } } for (int i = 0; i < 8; i++) for (int j = 0; j < 8; j++) { QString new_state = ""; if (m_game) // showing empty board if has no game switch (m_game->chipColorAt(KReversiMove(NoColor, i, j))) { case Black: new_state = "Black"; break; case White: new_state = "White"; break; case NoColor: new_state = ""; break; } QMetaObject::invokeMethod(m_qml_root, "setChipState", Q_ARG(QVariant, i), Q_ARG(QVariant, j), Q_ARG(QVariant, new_state)); // clearing legal markers, hints and lastmove QMetaObject::invokeMethod(m_qml_root, "setLegal", Q_ARG(QVariant, i), Q_ARG(QVariant, j), Q_ARG(QVariant, false)); QMetaObject::invokeMethod(m_qml_root, "setHint", Q_ARG(QVariant, i), Q_ARG(QVariant, j), Q_ARG(QVariant, false)); QMetaObject::invokeMethod(m_qml_root, "setLastMove", Q_ARG(QVariant, i), Q_ARG(QVariant, j), Q_ARG(QVariant, false)); } if (m_game && m_showLegalMoves) { MoveList possible_moves = m_game->possibleMoves(); for (int i = 0; i < possible_moves.size(); i++) { QMetaObject::invokeMethod(m_qml_root, "setLegal", Q_ARG(QVariant, possible_moves.at(i).row), Q_ARG(QVariant, possible_moves.at(i).col), Q_ARG(QVariant, true)); } } m_qml_root->setProperty("isBoardShowingLabels", m_showLabels); if (m_hint.isValid()) { QMetaObject::invokeMethod(m_qml_root, "setChipState", Q_ARG(QVariant, m_hint.row), Q_ARG(QVariant, m_hint.col), Q_ARG(QVariant, "Black")); QMetaObject::invokeMethod(m_qml_root, "setHint", Q_ARG(QVariant, m_hint.row), Q_ARG(QVariant, m_hint.col), Q_ARG(QVariant, true)); } if (m_game && m_showLastMove) { KReversiMove lastmove = m_game->getLastMove(); if (lastmove.isValid()) QMetaObject::invokeMethod(m_qml_root, "setLastMove", Q_ARG(QVariant, lastmove.row), Q_ARG(QVariant, lastmove.col), Q_ARG(QVariant, true)); } }