字符游戏-智能蛇(代码版)

这篇文章主要是上一篇文章的实际操作部分。

下面是伪代码

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;
            }
        }

智能蛇大体重要的几个实现方法就是这样,感谢阅读。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值