pdcursesを使用する C++ でゲームを書いています。ユーザーからの入力を取得し、コマンドライン端末でプレイヤーの継続的に変化するステータスを表示します。while ループを使用して、プレーヤーの健康状態 (数値) を継続的に更新します。これは小さなステータス バーと共に画面に表示されます。1 秒間に複数回ループするため、ゲームにリアルタイム感が生まれます。プログラムの実行中は、ゲームを操作しているにもかかわらず、この値が継続的に更新されるようにしたいと考えています。たとえば、小さなステータス表示ループを中断することなく、「食べ物を食べる」や「木を切る」などのコマンドを発行したいと考えています。この部分の機能を設計するのに問題があります。ゲームの操作中にステータスを更新し続けるにはどうすればよいですか? ユーザーが端末に何かを入力している間に、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;
}