一、为什么需要用到ncurse?
1. c语言中哪些自带函数可以获得用户的键盘输入?
e.g.getchar(); char dir; dir=getchar();
gets(); char *dir=NULL; gets(dir);
scanf(); char dir; dir=scanf("%c",dir);
都有个共同的特点:输完数据+回车结束函数调用。
2.贪吃蛇游戏特点是什么?
蛇前进的方向是由键盘的上下左右键所控制的。
实时性强,速度快,按键响应厉害。
二、如何使用和启用ncurse?
1.由于不是C语言本身所自带的,所以必须安装对应的库函数
2.安装ncurse库:sudo apt-get install libncurses5-dev libncursesw5-dev
3.ncurse基本模板:
1 #include<curses.h>
2
3 int main()
4 {
5 initscr();
6 printw("hello,world\n");
7 getch();
8 endwin();
9
10 return 0;
11 }
编译:gcc demo.c -lcurses
./a.out
4.getch();相当于getchar(),scanf().但是函数结束不需要按回车
e.g.获取一个字符输入
1 #include<curses.h>
2
3 int main()
4 {
5 initscr();
6 char mark;
7 mark=getch();
8 printw("mark=%c\n",mark);
9 getch();
10 endwin();
11
12 return 0;
13 }
三、如何捕获ncurse的上下左右键值?
对于ncurse来说,它安排了这些值:(阅读性差)
0403 0402 0404 0405
上 下 左 右
所以ncurse 头文件进行了宏定义,也就是起别名。(阅读性强)
vi /usr/include/curses.h
命令行模式下输入(/KEY_UP)
1 #include<curses.h>
2
3 int main()
4 {
5 initscr();
6 int key;
7 keypad(stdscr,1);
8
9 while(1){ //alway input keyboard.
10 key=getch();
11 // printw("key=%d\n",key);
12
13 switch(key){
14 case KEY_DOWN:
15 printw("DOWN\n");
16 break;
17 case KEY_UP:
18 printw("UP\n");
19 break;
20 case KEY_LEFT:
21 printw("LEFT\n");
22 break;
23 case KEY_RIGHT:
24 printw("RIGHT\n");
25 break;
26 }
27 }
28 getch();
29 endwin();
30
31 return 0;
32 }
经典错误语句:
改为break;记住没有括号。