0

有没有办法让我的 C++ 程序在cout<<"Instructions";每次按下 h 时显示一条消息(如快速指南,使用),但保持顺序?

例子:

#include <everything>
using namespace std;
int main{
    {Event 1}
    {Event 2}
    {Event 3}
}


~Program running~
(Event 1) runs
*user presses h*
*shows help automatically*
(event 2) runs
(event 3) runs
exit

我已经搜索但找不到如何在 C++ 中执行此操作。

4

3 回答 3

1

如果您在任何类似 Linux/Unix 的系统上运行,您可以在主程序中使用信号中断处理程序处理“h”按键,例如:

#include <csignal>
// ...
void signalHandler( int signum ) {
    cout << "Here your help...\n";
}
int main() {
    // kick off your other thread to run select()...
    signal(USER1, signalHandler);
    // ...
}

然后在您启动的另一个线程中运行,运行调用select()的代码,stdin然后(当有输入时)read()获取已输入的字符,如果hUSER1信号发送到您的主线程。

于 2013-11-08T17:01:36.910 回答
1

因为我最近加入了 SO 并且没有足够的声誉来评论现有答案,所以我必须开始一个新的答案。

我同意@paul-evans 的回答,如果您想学习操作系统进程管理和信号处理的基础知识,我想分享幻灯片:https ://www.cs.drexel.edu/~wmm24/cs283/lectures /procmgt.ppt,它基于经典 CSAPP(计算机系统程序员的专业)的第 8 章

于 2013-11-08T17:18:18.127 回答
0

这是游戏内菜单的一些代码。用户按ESC键调出菜单,按F8退出游戏

#include <iostream> 
#include <conio.h>

using namespace std;

#define KB_UP 72
#define KB_DOWN 80
#define KB_LEFT 75
#define KB_RIGHT 77
#define KB_ESCAPE 27
#define KB_F8 66

void gamemenu()
{
    cout<<"  \n";
    cout<<"[1] Resume Game  \n";
    cout<<"[2] Save Game  \n";
    cout<<"[3] Exit Game  \n";
}

int main()
{
   int KB_code=0;

   cout<<"Game menu 0.01 beta\n\n";
   cout<<"press F8 to Exit\n";
   cout<<"press ESC for Game menu \n";

   while(KB_code != KB_F8 )
   { 
     if (kbhit())
      {
            KB_code = getch();
            //cout<<"KB_code = "<<KB_code<<"\n";

            switch (KB_code)
            {

                case KB_ESCAPE:

                    gamemenu();

                break;

                case KB_LEFT:
                           //Do something
                break;

                case KB_RIGHT:
                           //Do something                     
                break;

                case KB_UP:
                           //Do something                     
                break;

                case KB_DOWN:
                           //Do something                     
                break;

            }        

      }
  }

  return 0;
}

输出:

Game menu 0.01 beta

press F8 to Exit
press ESC for Game menu

[1] Resume Game
[2] Save Game
[3] Exit Game
于 2014-05-17T19:07:47.797 回答