我正在用 c++ 编写一个使用pdcurses的游戏从用户那里获取输入并在命令行终端上显示播放器不断变化的状态。我使用 while 循环来不断更新玩家的健康状况(一个数字值),它会打印到屏幕上并带有一个小状态栏。它每秒循环多次,这给游戏带来了实时的感觉。在程序运行时,即使我与游戏交互,我也希望此值不断更新。例如,我想在不中断我的小状态显示循环的情况下发出“吃食物”或“砍柴”之类的命令。我在设计这部分的功能时遇到了麻烦。我如何在与游戏互动时保持状态更新?我担心当用户在终端中输入内容时,while 循环暂停,状态不再继续更新。我正在寻找一些通用指针而不是实际代码。对此,我真的非常感激。我对编程很陌生。
我是否必须使用多个线程,或者当用户在屏幕中输入文本时,while 循环是否可以继续运行?感谢您提供的任何指示。我希望这不是一个太令人困惑的问题。
FWIW,这是我到目前为止的伪代码:
#include //....some files....
int main() {
// Initialize game objects and graphics
bool programRunning = true;
float playerEnergy = 3000.0;
initscr(); /* Start curses mode */
while (programRunning)
{
// Display some graphics
// Display playerEnergy
// Set the while loop speed using std::this_thread::sleep_for...
playerEnergy -= 0.01;
int ch;
ch = getch();
switch (ch) {
case 'e': //eat food
playerEnergy += 1000;
// Do some stuff
break;
case 'w': //do some work
playerEnergy -= 1000;
// Do some stuff
break;
/* Etc, Etc. */
default:
break;
}
// If player quits, set programRunning to false
}
endwin(); /* End curses mode */
return 0;
}