前言:
贪吃蛇是一款非常经典的小游戏,相信很多小伙伴肯定上手过。鉴于自己最近学了C语言,想检验一下自己的学习成果,同时给自己之前的学习做个巩固,故整理了一个简易的C语言贪吃蛇小游戏。对于这次的小游戏开发我会分阶段进行记录,使得小白也能看懂,尽量使思路更加完整清晰。
说明:
想要用C语言做出一个用户界面,我们就要谈谈Ncurses编程库,可以说它提供了一系列的函数以便使用者调用来生成基于文本的用户界面,Ncurses名字中的n代表着“new”,是curses的自由软件版本。这次的Ncurses库的安装是在ubuntu系统上,虽然这个小游戏能在Ubuntu系统正确运行,并且达到想要的效果,但很遗憾的是当我把它放在Windows下vs code的环境下运行时,却没有成功,它的报错如下图所示。我的猜测是我未能在Windows下成功安装上Ncurses库,并且一直到我写这篇文章时,也没有得到解决。如以后能解决掉它,我将即时对这篇文章进行更新,也希望看到这篇文章的小伙伴,有解决方法的话,请在下方留言,感谢!因此下面我将介绍只是在Unbutu操作系统下的安装。
Ubuntu下的Ncurses库的安装:只需运行下面这条指令即可(请保证你的Unbuntu可以连接网络。)
apt-get install libncurses5-dev
安装完之后简单介绍一下这次开发所会调用的头文件curses.h。你可以通过如下命令对它进行查看:
vi /usr/include/curses.h
在这里我们可以看到控制🐍移动用的功能按键
当然以上定义例如0402让人看的莫名其妙,后面我们也可以对它重新定义,可以通过下面的代码来直观感受一下:
#include<stdio.h>
#include<curses.h>
int main(){
int key;
initscr();
keypad(stdscr,1);
while(1){
key=getch();
switch(key){
case 0402:
printw("KEY_DOWN\n");
break;
case 0403:
printw("KEY_UP\n");
break;
case 0404:
printw("KEY_LEFT\n");
break;
case 0405:
printw("KEY_RIGHT\n");
break;
}
}
endwin();
return 0;
}
运行代码后,当你按动键盘上的上下左右键时,将会打印出如图所示的效果。(ps:为了能够使用ncurses库,就必须在源程序中将curses.h包括(include)进来,而且在编译的需要与它连接起来. 在gcc中使用参数-lcurses进行编译.)
上述代码还有一些函数我们可以来说一下:
initscr();
首先调用initscr函数(初始化工作),它会给一些变量比如 stdscr,curscr等分配内存,并且让ncurses库处于准备使用状态,换句话说,所有ncurses函数必须跟在initscr后面。
keypad(stdscr,1);
这里stdscr表示的是当前屏幕,函数keypad设置stdscr中接受键盘功能键(快捷键),这里1可以理解为TRUE.
key=getch();
getch从键盘上读取键值,这是因为我们在程序开始时使用了keypad(stdscr,1) 并且将返回值赋给一个int型变量而不是char型变量,原因就是int型变量能表示比char型更大的值.
printw();
如同printf()输出内容。
endwin();
用来释放所有ncurses使用的内存.在使用endwin()后,将不能在使用任何ncurses的函数,除非再一次调用initscr()函数.
结语:
今天就简单介绍到这里了,当然在整个开发过程中,我们要调用的肯定不只是上述这些函数,再后续的开发过程中,我们将会对遇到一些函数调用再做进一步介绍。