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