利用链表和结构体来编写贪吃蛇小游戏,这边还会用点线程,分别有以下模块:
1、地图规划
2、蛇身体的初始化
3、蛇的方向移动
4、食物的初始化和随机出现
5、蛇撞墙和咬自己的尾巴
地图规划
我们在设计地图的时候,需要用到ncurses,头文件 #include
ncurses(new curses)是一个程序库,它提供了API,可以允许程序员编写独立于终端的基于文本的用户界面。它是一个虚拟终端中的“类GUI”应用软件工具箱。它还优化了屏幕刷新方法,以减少使用远程shell时遇到的延迟。我们需要在虚拟机中装以下ncurses库
sudo apt-get install libncurses5-dev
sudo apt-get install ncurses-doc//这是ncurses的文件内容 可以查看ncurse的函数说明
man endwin//查看endwin函数的说明
使用ncurses的主要语句:
initscr(); //使用ncurses首先要初始化一下
printw(“hello”);//输出语句
getch();//等待用户输入
endwin();//结束并退出ncurses
move(y,x); // 将光标移动至(x,y)处。
refresh() ; //经过refresh()函数刷新之后才能够显示到屏幕上。
设计一个20×20的地图,我们可以使用两个for循环输出我们的行和列
void gamepic(){ //地图规划
int col;//lie
int row;//行
for (row = 0; row
if (row == 0) {
for (col = 0; col
printw(“–“);
}
}
printw(“n”);
for (col = 0; col
if (col == 0 || col == 20) {
printw(“|”);
} else{
printw(” “);
}
if (row == 19) {
printw(“n”);
for (col = 0; col
printw(“–“);
}
}
}
}
3、蛇方向的移动
那么蛇的方向移动是怎么回事呢,假如我们向右移动,就是将我们的链表在右边添加一个节点,然后将最左边的节点删除,再通过更新我们的地图,来达到移动的效果。所以我们要写一个删除节点的函数
void deleteNode() {
struct Snake *p;
p = head;
head = head->next; //将头结点进行移动
free(p);
}
void movesnake() { //蛇身子的移动
addNode();
deleteNode();
}
文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览115896 人正在系统学习中 相关资源:snake:蛇-恶意软件存储动物园-其它代码类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!