while (--t) { if (kbhit() != 0) //若键盘被敲击,则退出循环 break; }改为Linux可运行代码
时间: 2024-02-13 11:02:58 浏览: 154
在Linux下,可以使用ncurses库提供的函数来监测键盘输入,可以使用如下代码:
```
#include <ncurses.h>
#include <unistd.h>
int main()
{
initscr(); // 初始化ncurses
cbreak(); // 禁用行缓冲
noecho(); // 禁用回显
int t = 10;
while (--t) {
if (getch() != ERR) // 若键盘被敲击,则退出循环
break;
sleep(1); // 等待1秒
}
endwin(); // 关闭ncurses
return 0;
}
```
其中,`getch()`函数用于获取用户输入,如果用户没有输入任何内容,`getch()`函数会返回`ERR`,我们可以利用这个特性来判断是否有输入。`sleep()`函数用于等待一段时间,这里我们等待1秒钟。`initscr()`和`endwin()`函数分别用于初始化和关闭ncurses库。
相关问题
if (kbhit() != 0) { ch = getch(); if (ch != 0 && ch != 224) //过滤掉方向键和功能键的第一次返回 { return ; } }
如果程序发现键盘输入了数据,就执行以下操作:
1. 将输入的数据存储在变量ch中。
2. 如果ch的值不等于0,就执行一些操作。
这段代码的意思是,如果用户在键盘上输入了某些数据,程序就会执行一些操作。
你可以使用getch()函数来获取键盘输入的数据。如果键盘输入了数据,getch()函数就会返回输入的数据;如果没有输入数据,getch()函数就会返回0。
kbhit()函数用来检测键盘是否有输入数据。如果有输入数据,kbhit()函数就会返回一个非零值;如果没有输入数据,kbhit()函数就会返回0。
#include"判断方向.h" #include<iostream> #include<conio.h> #include<Windows.h> #include"蛇的移动.h" using namespace std; void updateWithInput(int(*canvas)[30], int Length, int Width, int moveDirection, int moveDirection1, int& newDirection) { char input; while (_kbhit()) { input = _getch(); } if (_kbhit())// 判断是否有输入 { input = _getch(); //根据用户的不同输入来移动,不必输入回车 if (input == 'w') { newDirection = 1;// 位置上移 moveDirection = 2; } else if (input == 's') { newDirection = 2; // 位置下移 moveDirection = 1; } else if (input == 'a') { newDirection = 3; // 位置左移 moveDirection = 4; } else if (input == 'd') { newDirection = 4; // 位置右移 moveDirection = 3; } if (newDirection != 0 && newDirection != moveDirection) { moveDirection = newDirection; } moveSnakeByDirection(canvas, Length, Width, moveDirection); } }严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C2061 语法错误: 标识符“Ckbhit” 贪吃蛇 F:\大一下\实训\贪吃蛇\贪吃蛇\判断方向.cpp 9
这段代码中出现了语法错误,编译器无法识别" _kbhit()"函数。这个函数是conio.h库中的函数,需要在代码开头加上这个头文件,如下所示:
```c++
#include"判断方向.h"
#include<iostream>
#include<conio.h> // 加上这个头文件
#include<Windows.h>
#include"蛇的移动.h"
using namespace std;
void updateWithInput(int(*canvas)[30], int Length, int Width, int moveDirection, int moveDirection1, int& newDirection) {
char input;
while (_kbhit())
{
input = _getch();
}
if (_kbhit())// 判断是否有输入
{
input = _getch(); //根据用户的不同输入来移动,不必输入回车
if (input == 'w')
{
newDirection = 1;// 位置上移
moveDirection = 2;
}
else if (input == 's') {
newDirection = 2; // 位置下移
moveDirection = 1;
}
else if (input == 'a') {
newDirection = 3; // 位置左移
moveDirection = 4;
}
else if (input == 'd') {
newDirection = 4; // 位置右移
moveDirection = 3;
}
if (newDirection != 0 && newDirection != moveDirection) {
moveDirection = newDirection;
}
moveSnakeByDirection(canvas, Length, Width, moveDirection);
}
}
```
阅读全文