Я работаю над проектом для своего класса C++, и мы делаем покерную программу с ИИ и пользователями. Использование QT для разработки.
Что мне нужно сделать, так это внутри функции DECISION(), если игрок не является ИИ, программа приостанавливается до тех пор, пока пользователь не нажмет кнопки, чтобы сбросить карты, уравнять или поднять ставку.
В основном мне нужно приостановить программу в середине выполнения функции, пока пользователь не нажмет кнопку. Затем он продолжит остальную часть функции
if (Player[pp].ai == true){
//A bunch of code for AI decision making for folding, calling, raising.
}
else{ //If Player is NOT an AI
ENABLEUSERINPUT(true);
//Need to pause program here until the user has done something to the GUI
ENABLESERINPUT(false);
}
Вы не можете структурировать программу с графическим интерфейсом так же, как программу командной строки. Вам нужно изменить свою точку зрения с «спросить пользователя, что делать сейчас» на «реагировать на то, что делает пользователь».
Можно дождаться ввода пользователя с помощью QEventLoop
например, нажатие на кнопку приведет к выходу из цикла событий.
//Need to pause program here until the user has done something to the GUI
QEventLoop oLoop;
// user click on button will release the event loop.
connect(pYoutrBtn , &QPushButton::clicked,
&oLoop, &QEventLoop::quit);
// wait.
oLoop.exec();
Это сработало, спасибо! Раньше я изучал QEventLoops, но, поскольку я все еще новичок в использовании QT, не совсем понял их, это очень помогло! Спасибо!
Не блокировать, а продолжать следить за событиями. Загляните в конечные автоматы