第一篇:ncurse介绍

文章介绍了ncurses库在C语言中的作用,它允许程序无需等待回车就能获取键盘输入,尤其适合实时性强的场景如编写贪吃蛇游戏。ncurses不是C语言标准库的一部分,需要额外安装。通过示例代码展示了启用ncurses的基本步骤,以及如何捕获上下左右箭头键的值进行相应操作。
摘要由CSDN通过智能技术生成

一、为什么需要用到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;记住没有括号。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值