一、为什么要用nurse
C语言中的gets()、scanf()、getchar()等函数是在用户输入后需要按下Enter键才能执行代码,而贪吃蛇要求按下按键后立即对蛇的方向进行操作,所以根据贪吃蛇功能的需求引入ncurse,让用户输入后就能让蛇进行对应的行动。
二、ncurse的使用
查看ncurse宏定义:
cpp
vi /usr/include/curses.h
输入/KEY_UP查找上下左右键功能键的函数
使用这些功能键时,必须要用keypad设置功能键
cpp
keypad(stdscr,1); //stdscr表示从标准屏幕接收功能键,参数1代表是否接收"是"
char为1个字节最多能表示128,而宏定义中表示功能键的数大于128,所以要用字节更大的int(4字节)
cpp
#include <curses.h>
int main(){
int key;
initscr();
keypad(stdscr,1);
while(1){
key= getch();
printw("you input:%c\n",c);
}
endwin();
return 0;
}
光有这些代码,在输入↑ ↓ ← →这些按键时只会输出上面的数字(0402......),我们可以使用switch函数让其输出更具可读性的提示。
cpp
#include <curses.h>
int main(){
int key;
initscr();
keypad(stdscr,1);
while(1){
key= getch();
switch(key){
case 0402:
printw("DOWN");
case 0403:
printw("UP");
case 0404:
printw("LEFT");
case 0405:
printw("RIGHT");
}
}
endwin();
return 0;
}
也可以用ncurse中的宏定义:
cpp
#include <curses.h>
int main(){
int key;
initscr();
keypad(stdscr,1);
while(1){
key= getch();
switch(key){
case KEY_DOWN:
printw("DOWN");
case KEY_UP:
printw("UP");
case KEY_LEFT:
printw("LEFT");
case KEY_RIGHT:
printw("RIGHT");
}
}
endwin();
return 0;
}