69,512
社区成员
![](https://csdnimg.cn/release/cmsfe/public/img/topic.427195d5.png)
![](https://csdnimg.cn/release/cmsfe/public/img/me.40a70ab0.png)
![](https://csdnimg.cn/release/cmsfe/public/img/task.87b52881.png)
![](https://csdnimg.cn/release/cmsfe/public/img/share-circle.3e0b7822.png)
void start()
{
char answer1[18]= "--> yes No";
char answer2[18] = " yes --> No";
char k_a = 'a', k_d = 'd';//设置响应键
while (1)
{
if (status == 0)//status是在函数外面设置的静态变量,初始化为0
{
cout << "wanna start ?" << endl;
cout << answer1;
}
else
{
cout << " wanna start?" << endl;
cout << answer2;
}
char ch1, ch2;//
if (_kbhit())//读取a或者d按键来改变输出界面
{
ch1 = _getch();
if (ch1 == (k_a || k_d))
if (status == 0)
status = 1;
else
status = 0;//
}
delay(200);//延时响应的函数,不设置的话画面会一直闪
if (_kbhit())
{
ch2 = _getch();
if (ch2 == 27)//读取到esc键退出循环
break;
}
system("cls");//清屏的函数
}
}
如上代码,我是想做一个可以通过输入a d然后来改变箭头位置的函数,但是写完后运行很奇怪的是————我输入a或者d后,输出界面就是不会及时的响应啊,要么就是我按两下没什么反应,要么就是我一直连点后一段时间里一直在变,很奇怪,大家有人能告知下是为什么吗,然后就是我要改得怎么改,谢谢大家了
以下是修改后的代码:
void start()
{
char answer1[18]= "--> yes No";
char answer2[18] = " yes --> No";
char k_a = 'a', k_d = 'd';//设置响应键
while (1)
{
if (status == 0)//status是在函数外面设置的静态变量,初始化为0
{
cout << "wanna start ?" << endl;
cout << answer1;
}
else
{
cout << " wanna start?" << endl;
cout << answer2;
}
char ch = _getch();
if (ch == k_a)
status = 1;
else if (ch == k_d)
status = 0;
else if (ch == 27)
break;
system("cls");
}
}
修改后的代码中,我们使用_getch()函数来立即读取按键。这样,当您按下a或d键时,程序会立即响应并改变输出界面。
void start()
{
char answer1[18]= "--> yes No";
char answer2[18] = " yes --> No";
char k_a = 'a', k_d = 'd';//设置响应键
while (1)
{
if (status == 0)//status是在函数外面设置的静态变量,初始化为0
{
cout << "wanna start ?" << endl;
cout << answer1;
}
else
{
cout << " wanna start?" << endl;
cout << answer2;
}
char ch = _getch();
if (ch == k_a)
status = 1;
else if (ch == k_d)
status = 0;
else if (ch == 27)
break;
delay(100);
system("cls");
}
}
if(ch1==(k_a||k_d))
改成
if (ch1 == k_a ||ch1== k_d)
if(ch1==(k_a||k_d))
改成if (ch1 == k_a ||ch1== k_d)