有没有办法让我的程序在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 ++中找到该怎么做。
答案 0 :(得分: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()
的代码来获取已输入的字符,如果它是h
然后将USER1
信号发送到您的主线程。
答案 1 :(得分:1)
因为我最近加入了SO并且没有足够的声誉来评论现有的答案,所以我必须开始一个新的答案。
我同意@ paul-evans的回答,如果你想学习操作系统过程管理和信号处理的基础知识,我想分享幻灯片:https://www.cs.drexel.edu/~wmm24/cs283/lectures/procmgt.ppt,它基于经典的第8章CSAPP(计算机系统程序员的预期)
答案 2 :(得分: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