这篇文章主要是上一篇文章的实际操作部分。
下面是伪代码
int main (void)
{
initialization(); //初始化生成蛇和地图,还有金币
judge(); //判断蛇头四周的情况,障碍在哪。通过全局变量返回结果。
if (周围有金币)
eatcoin(); //吃金币具体操作
else
move(); //单纯移动。
}
子函数的具体实现
judge()函数:
通过x,y的加减判断四周是否是墙壁、身体、障碍、抑或是金币;
若是金币,代表该方向的变量赋值为2;
若什么都没有,代表该方向的变量赋值为1;
若不能走,代表该方向的的变量赋值为-1;
move()函数:
首先每一段蛇都要通过malloc函数来构造;
指向头部的变量+1;
移动一次,就将尾部的值变为0,指向尾部的变量+1,free()掉尾部申请的空间。
eatcoin()函数:
eatcoin()函数是move函数的低配版,只需实现生成蛇头,蛇尾不用去掉而已。
实现自动寻找:
其实要设置变量表示金币位置,然后用蛇头位置计算出金币位置,然后蛇头判断金币位置方向能不能走,不能就换地方,具体代码如下:
以方向向右为例:
if (xdirection == 'D')
{
if (D == 1)
next = 'D';
else if (W == 1)
next = 'W';
else if (S == 1)
next = 'S';
else if (A == 1)
next = 'A';
else
{
system("cls");
printf("OH YOUR SNAKE IS TOO STUPID\nGAME OVER!!!\nPRESS ENTER TO QUIT\n");
getchar();
return 0;
}
}
智能蛇大体重要的几个实现方法就是这样,感谢阅读。