贪吃蛇游戏其他方法

之前写了一个自动寻路的贪吃蛇,走没多少步就死了,接下来我们在看一下其他方法.

首先我们先看一下,寻路中遇到的问题

1.进入死胡同


黄色的是贪吃蛇的头部,红色是我们要吃的东西,根据寻路算法,黑色的就是最短路线,可以在脑子里脑补下,吃完这个东西,贪吃蛇就挂了!

2.找不到路线
在贪吃蛇足够长的情况下,食物可能会在蛇身体包围的圈中,那么蛇就找不到路线了。

看完问题我们就找一个更好的走法吧.
我们知道追着尾巴跑,蛇就不会死,所以我们以最短路线去吃苹果时,要给自己留条后路。
策略1.如果吃完苹果还可以找到到自己尾巴路线的话,才去吃苹果。
var canFindPath= false;                              //可以找到吃苹果的路线
var canFindTail = false;                             //可以找到自己尾巴的路线
canFindPath = startPathFinding();                    //开始寻找路线
        if(canFindPath){                             //如果可以找到吃苹果的路线
            moveSnake()                              //移动一条看不见的贪吃蛇去吃
            canFindTail = startPathFinding();        //尝试找自己尾巴路线
            if(canFindTail){                         //如果可以找到自己尾巴路线
                return safePathCell;                 //返回吃苹果路线的第一步
            }
        }
策略2.如果找不到吃苹果路线或者吃完苹果后,会发生找不到自己尾巴路线的话,那么就在头部的周围找一个格子,这个格子要满足两个条件,条件1,
走完这个格子要能找到到尾巴的路线,条件2,这个格子到苹果的距离是最远的。
var canFindPath= false;                              //可以找到吃苹果的路线
var canFindTail = false;                             //可以找到自己尾巴的路线
canFindPath = startPathFinding();                    //开始寻找路线
        if(canFindPath){                             //如果可以找到吃苹果的路线
            moveSnake()                              //移动一条看不见的贪吃蛇去吃
            canFindTail = startPathFinding();        //尝试找自己尾巴路线
            if(canFindTail){                         //如果可以找到自己尾巴路线
                return safePathCell;                 //返回吃苹果路线的第一步
            }
        }
if(canFindPath == false || canFindTail == false ){
            return getACellThatIsFarthestToGoal();
   }
除此还有最粗暴的方法, 就是在最后一行空出来,留做逃生的路线,然后像弹簧一样无脑向右推进,吃完后,从底部绕回最左边,继续这样的策略,直到
填满整个游戏区域。无论那种方法,大家都参考一下吧。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值