其他分享
首页 > 其他分享> > 贪吃蛇项目(用ncurse捕获键盘的上下左右键)

贪吃蛇项目(用ncurse捕获键盘的上下左右键)

作者:互联网

1.使用ncurse的好处
ncurse封装了一些库,不需要通过按下回车来改变键盘的方向 。

2.如何使用ncurse
头文件:#include <curses.h>
(1)initscr():是ncurse界面的初始化函数

(2)printw:是ncurse模式下的printf

(3)getch():等待用户输入,如果没有这句话,程序就退出了,看不到运行的结果,也就看不到getch上面所打印的话。

(4)endwin():程序退出,调用该函数来恢复shell终端的显示,如果没有这句话,shell终端字乱码。

3.编写代码,体验这三个函数

#include  <curses.h>


int   main()
{
            initscr();
            printw("this is a test");
            getch();
            endwin();
            return  0;
}

运行结果:
在这里插入图片描述
在运行的时候必须连接库:
gcc demo2.c -lcurses

体验getch和printw

#include  <curses.h>


int   main()
{
            char  c;
            initscr();
            c=getch();
            printw("you input:%c\n",c);
            getch();
            endwin();
            return  0;
}

运行结果:
在这里插入图片描述
getch为输入字符,当输入完一个字符后,不需要按下回车程序接着往下面执行;而不像scanf,输入完一个字符后,需要按下回车,程序才往下面执行。

4.用ncurse捕获键盘的上下左右键

(1)打开curse.h文件
在curse.h中可以看到linux系统自带的有关方向的宏定义
在这里插入图片描述
(2)这样在程序当中调用这些宏定义就能直接可以使用了,如下面代码:

#include  <curses.h>


int   main()
{
           int  key;//1 byte  8 bit
            
            initscr();
            keypad(stdscr,1);

            while(1)
        {
            key=getch();

            switch(key)
            {
                     case  KEY_DOWN:
                           printw("DOWN\n");
                           break;
           
             
                     case  KEY_UP:
                           printw("UP\n");
                           break;
           
                     case  KEY_LEFT:
                           printw("LEFT\n");
                           break;
            
                      case KEY_RIGHT:
                           printw("RIGHT\n");
                           break;
            }    
    }    
 
            endwin();
            return  0;
}

运行结果:
在这里插入图片描述
(3)注释:函数keypad设置了可以在stdscr中接受键盘的功能键(快捷键)。
keypad函数:keypad(stdscr,1);stdscr:为接受键盘的功能键(快捷键),1代表是。

——@上官可编程

标签:getch,keypad,printw,stdscr,break,ncurse,贪吃蛇,上下左右
来源: https://blog.csdn.net/weixin_42900834/article/details/114692221