在进行游戏制作前,我们先回想一下我们玩过的贪吃蛇游戏有那些功能。首先需要一个游戏界面(在我的C语言图形化操作有该图片),接着在进入游戏时,需要一个地图,一条蛇以及随机出现的食物。同时我们需要判断是否撞墙,是否咬到自己。并且需要控制前进方向,通过键盘按键实现蛇的移动。接着我们需要存储每次游戏的成绩,以及读取最高成绩。接下来我们以此为框架进行代码实现(这里只提供思路,不提供具体代码)。
在制作游戏前我们需要用到两个自定义函数,分别为color(int n)进行颜色的更改,以及gotoxy(int x,int y)定位当前光标位置( 在我的C语言图形化操作中有这两个函数详细介绍)。
首先进行游戏界面的制作:该界面包含两个函数,第一个函数为void printsnake()。该函数运用printf语句,color(n)以及gotoxy(x,y)实现图形化蛇的打印。接着需要一个进行游戏选择的函数void choose(),通过用户输入来实现用户所想要的代码,所以比不可少的需要switch 语句。该段代码如下:
switch (n){
case 1:system(“cls”); //清屏
break; //暂时不必填具体函数,后面的函数写好后,进行填充即可
case 2:
break;
case 3:
exit(0); //退出程序
break;
default: //输入除1——3以外的数字重新进行输入
color(12);
gotoxy(40, 28);
printf("请输入1~3之间的数!");
getch();
system(“cls”); //清屏
printsnake();
choose();
}
在完成游戏界面函数后即可在主函数内填充,代码如下:
int main(){
system(“mode con cols=100 lines=30”); //限定窗口大小
printsnake();
choose();
}
这样我们就可以打印出游戏的界面。
接下来进行游戏开始部分:
首先进行地图制作,自定义函数void map():
通过两层循坏实现地图的打印,地图制作好后图片如下:
值得注意的是,在横向打印时横坐标每次递增2,因为中间的间隙也占长度。最后将该地图加入choose()函数中的case 1语句中。
接下来进行初始化蛇的绘制:
我们需要运用到链表的头插法实现蛇的绘制,所以必不可少的需要运用结构体,该结构体存储横坐标、纵坐标以及指向下一个结构体的指针。自定义函数 void initsnake(),将蛇尾坐标设为(24,5),然后开始绘制蛇头,蛇头坐标坐标为(24+2*i,5),i的值在1~4之间。运用头插法,每分配一个新节点那么它就变为蛇头。然后在进行蛇的绘制,该段代码如下:
while (tail != NULL)
{
gotoxy(tail->x, tail->y);
color(4);
printf("☆");
tail = tail->next;
}
最后将该函数加入choose()函数中的case 1语句中。最后效果如下:
今日分析就到这里了,请各位实现上述代码,且听下次分析。