最近呆在家里,学STM32学的太自闭了,然后突然从别人手上拿到了一个基于C语言的贪吃蛇的课设,所以闲下来写这一系列文章,给对这个项目感兴趣,却无从下手的童鞋们参考下。我会讲的非常详细,来方便大家理解,理论上只要学过c语言基础的童鞋都木的问题!
emmm,,,前提是我讲的够好,,红火火恍恍惚惚。。。。
源码自取,原版的注释大多都是英文的而且超级少,,所以我加了点注释
链接:https://pan.baidu.com/s/1eQIGYKTYEQFM5iy3BzgpKg
提取码:m36y
大家可以先大概看下这个图,心里大概有个底,这样写起程序来才不会无从下手。
通过上面这个图,我们可以大致了解到,这次的东西并不怎么复杂,主要难度都集中在蛇的移动上面。
大家刚学完c语言基础的童鞋可能现在会有些懵逼了,怎么才能在用c语言输入能动的东西欸。以前都没学过这种东西啊,,,毫无头绪欸。。。
其实我们遇到的大多数的课设都会用到一些windows提供的API来帮助我们达到更好的效果。所以如大家所想,我们这次就用到了一些这种函数。。。(大家就把他们当成是c的普通函数使用就可以了。。)
下面我把这些函数整理出来,告诉大家怎么使用的。。
C语言标准库中没有sleep这个函数,它实际上是一个系统API函数。 SLEEP是一种函数,作用是延时。
说白了,就是一个延时函数,括号里面输入的是int型变量,延时的单位是毫秒。
使用它之前,要在文件顶部包含windows.h文件。
这样:
#include
使用样例:
sleep(500)//就是休眠0.5s
这个函数我们在贪吃蛇中主要用于控制蛇的速度,,大家可以试试用for循环输出一个数,然后每次循环都sleep下,随着sleep括号内的数值减少,输出的东西就看上去越快,嘿嘿嘿。。
system是一个C语言和C++下的函数。windows操作系统下system () 函数详解主要是在C语言中的应用,system函数需加头文件后方可调用。
我们这个项目使用这个函数只干一件事——清屏。
和上一个一样需要导入windows.h头文件
system("cls");//效果清屏
至于为啥子要清屏,嘿嘿,当然是把之前显示的东西清理掉,实时更新画面,达到“动态”的效果啦。。
getch()函数使用前也要导入头文件: conio.h。主要作用从控制台读取一个字符,但不显示在屏幕上。emmm可以理解为getchar()的升级版吧。。。
emm,,,我也不知道怎么说他,,功能就是无条件跳转。应该属于c语言里的语法,这里提下,免主要是怕大家忘记了。
在游戏中,食物是要随机生成的,怎么随机生成嘞?其实有这样的函数,我们只要调用就可以了。
我们使用的下面的模板:
记得包含下time.h的头文件哦!
srand(time(NULL));//使用时间作为随机的种子
food = rand() ;//使用变量food接收
或许大家会有疑问,万一rand()函数返回的值特别大什么的,怎么办?我们可以使用取余符号“%”来把它的随机出来的值进行处理没从卡在地图内。这个后面写到了再详细解释叭。。。
这个主要用于顶点输出东西,从而实现可视化的操作,它也是window.h里面的函数,我们还是一样套用模板就可以了。
HANDLE hout; //Defining handle objects
COORD cor; //Defining coordinate objects
hout = GetStdHandle(STD_OUTPUT_HANDLE); //Get the handle of the output screen buffer
cor.X = y;
cor.Y = x;
SetConsoleCursorPosition(hout, cor); //Move Cursor
其中,x,y是窗口中点的坐标。
#include
#include
#include
#include
using namespace std;
int main() {
for(int i=0;i<5;i++){
HANDLE hout; //Defining handle objects
COORD cor; //Defining coordinate objects
hout = GetStdHandle(STD_OUTPUT_HANDLE); //Get the handle of the output screen buffer
cor.X = i;
cor.Y = i;
SetConsoleCursorPosition(hout, cor); //Move Cursor
cout<<"<-此点坐标为 "<<i<<","<<i;
}
return 0;
}
效果图:
大家看代码可以发现,我没有使用\n这种换行的代码,也没有在开头空格,它就达到了这种效果。大家可以现在去试试。
关于准备知识就讲到这里,下一章会大致介绍下c语言的结构体的使用,以及怎么自己写.h文件,之后就可以开始愉快的写代码啦~~