From 879f5a9c10593335232262b5e51a5741f07ac5fa Mon Sep 17 00:00:00 2001 From: pommicket Date: Sun, 17 Aug 2025 11:21:08 -0400 Subject: Integrate endgame solver --- quacker/macondo.cpp | 10 ++++++++-- quacker/macondo.h | 1 + quacker/macondobackend.cpp | 4 ++-- quacker/quacker.cpp | 1 - 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/quacker/macondo.cpp b/quacker/macondo.cpp index 3048195..a6d5d9d 100644 --- a/quacker/macondo.cpp +++ b/quacker/macondo.cpp @@ -21,7 +21,7 @@ Macondo::Macondo(Quackle::Game *game) : View() { execPath += "/apps/macondo/macondo"; initOptions = std::make_unique(execPath); m_backend = new MacondoBackend(game, *initOptions); - connect(m_backend, SIGNAL(gotMoves(const Quackle::MoveList &)), this, SLOT(gotMoves(const Quackle::MoveList &))); + connectBackendSignals(); m_solve = new QPushButton(tr("Solve")); m_solve->setDisabled(true); QGridLayout *layout = new QGridLayout(this); @@ -70,9 +70,14 @@ void Macondo::solve() { void Macondo::gameChanged(Quackle::Game *game) { delete m_backend; m_backend = new MacondoBackend(game, *initOptions); + connectBackendSignals(); m_game = game; } +void Macondo::connectBackendSignals() { + connect(m_backend, SIGNAL(gotMoves(const Quackle::MoveList &)), this, SLOT(gotMoves(const Quackle::MoveList &))); +} + void Macondo::stop() { m_backend->stop(); m_anyUpdates = false; @@ -85,9 +90,10 @@ bool Macondo::useForSimulation() const { } void Macondo::gotMoves(const Quackle::MoveList &moves) { - printf("aaa moves\n"); m_moves = moves; m_anyUpdates = true; + if (moves.size() == 1) + emit setCandidateMove(&moves[0]); } void Macondo::positionChanged(const Quackle::GamePosition *position) { diff --git a/quacker/macondo.h b/quacker/macondo.h index 638456f..a95a5a7 100644 --- a/quacker/macondo.h +++ b/quacker/macondo.h @@ -39,6 +39,7 @@ public slots: private slots: void gotMoves(const Quackle::MoveList &moves); private: + void connectBackendSignals(); void updateSolveButton(); QCheckBox *m_useMacondo; QPushButton *m_solve; diff --git a/quacker/macondobackend.cpp b/quacker/macondobackend.cpp index 59db5cf..a82d115 100644 --- a/quacker/macondobackend.cpp +++ b/quacker/macondobackend.cpp @@ -74,7 +74,7 @@ static string trimLeft(const string &s) { } -MacondoBackend::MacondoBackend(Quackle::Game *game, const MacondoInitOptions &options) { +MacondoBackend::MacondoBackend(Quackle::Game *game, const MacondoInitOptions &options): QObject() { m_execPath = options.execPath; m_game = game; m_updateTimer = new QTimer(this); @@ -319,12 +319,12 @@ void MacondoBackend::timer() { // give Macondo a bit more time to write out the full sequence QThread::msleep(60); m_processOutput.append(m_process->readAllStandardOutput()); + //printf("%.*s\n",m_processOutput.size(),m_processOutput.data()); } Quackle::Move move; if (extractEndgameMove(m_processOutput, move)) { Quackle::MoveList list; list.push_back(move); - printf("EMIT\n"); emit gotMoves(list); } } diff --git a/quacker/quacker.cpp b/quacker/quacker.cpp index 3d8d8d4..d3945ac 100644 --- a/quacker/quacker.cpp +++ b/quacker/quacker.cpp @@ -1269,7 +1269,6 @@ void TopLevel::incrementSimulation() if (m_macondo->isRunning()) { if (m_macondo->anyUpdates()) { - printf("aaa update\n"); updateMoveViews(); updateSimViews(); } -- cgit v1.2.3