4.必备知识点-不卡死控制台的输入检测
4.1 知识点
知识回顾:不显示输入内容在控制台上,直接获取单键输入
引用一个系统写好的程序文件
#include <conio.h>
其中有一个写好的方法
_getch()
- 可以通过它获取到输入的字符
- 无需按回车键,输入内容也不会显示在控制台上
这种方法会等待玩家输入,输入完毕后才能继续执行后面的逻辑
/* int input = _getch();
cout << "后面的逻辑执行"; */
- 存在的问题:如果卡死了,贪吃蛇动不了了
不卡死控制台的输入检测
在
#include <conio.h>
中还有一个系统写好的方法_kbhit()
- 返回值类型为
int
- 当玩家有输入时返回
1
,没有输入时返回0
- 返回值类型为
可以将其和
_getch()
方法配合使用,达到不卡死控制台的效果
while (true)
{
if (_kbhit())
{
int input = _getch();
switch (input)
{
case 'W':
case 'w':
cout << 'W' << endl;
break;
case 'S':
case 's':
cout << 'S' << endl;
break;
case 'A':
case 'a':
cout << 'A' << endl;
break;
case 'D':
case 'd':
cout << 'D' << endl;
break;
}
}
cout << "执行逻辑" << endl;
}
4.2 知识点代码
必备知识点4_不卡死控制台的输入检测.cpp
#include <iostream>
using namespace std;
#include <conio.h>
int main()
{
#pragma region 知识回顾 不显示输入内容在控制台上,直接获取单键输入
//引用一个系统写好的程序文件
//#include <conio.h>
//其中有一个写好的方法
// _getch()
//可以通过它获取到输入的字符,并且无需按回车键,输入内容也不会显示在控制台上
//这种方法会等待玩家输入,输入完毕后才能继续执行后面的逻辑
/* int input = _getch();
cout << "后面的逻辑执行";*/
//存在的问题 如果卡死了 贪吃蛇动不了了
#pragma endregion
#pragma region 知识点 不卡死控制台的输入检测
//在#include <conio.h>
//中还有一个系统写好的方法
// _kbhit()
//它的返回值是int
//作用是当玩家有输入时才会返回1,没有输入时返回0
//我们可以将其和_getch()方法配合使用
//达到不卡死控制台的作用
while (true)
{
if (_kbhit())
{
int input = _getch();
switch (input)
{
case 'W':
case 'w':
cout << 'W' << endl;
break;
case 'S':
case 's':
cout << 'S' << endl;
break;
case 'A':
case 'a':
cout << 'A' << endl;
break;
case 'D':
case 'd':
cout << 'D' << endl;
break;
}
}
cout << "执行逻辑" << endl;
}
#pragma endregion
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com