利用链表和结构体来编写贪吃蛇小游戏,这边还会用点线程,分别有以下模块:

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进行处理,非常感谢!

上一篇 2021年4月8日
下一篇 2021年4月8日

相关推荐