贪吃蛇(一)

       在进行游戏制作前,我们先回想一下我们玩过的贪吃蛇游戏有那些功能。首先需要一个游戏界面(在我的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语句中。最后效果如下:



今日分析就到这里了,请各位实现上述代码,且听下次分析。

猜你喜欢

转载自blog.csdn.net/wang_zhao_/article/details/80790651