贪吃蛇的进阶——智能贪吃蛇

首先让我们来看一下一个别人做好的成品:最终可以填满屏幕的终极贪吃蛇:这里写图片描述
这个图以前一度在微博上非常火热。
那么看了这个图之后,可不可以给我们做AL贪吃蛇一点小小的启示呢?
在写这个代码之前,最最重要的是找到一种“不会死”的算法,让写好的AL贪吃蛇可以“顾全大局”,而不是为了眼前的食物将自己赶上绝路。
比如说,如果你想出来的算法是计算蛇头到食物的最短距离,那么估计吃个几个食物就会把自己困死,可以看到上面GIF动图中,蛇做了一些为了自己的下一步能吃到食物的准备工作:比如说,尽量贴着自己的身体走,在地图旁边留出一条能“回头”的路等等。
当然了,这种AL贪吃蛇也会有一种无脑模式:那就是按照“S”型路线走到底,这种算法虽然会让填满屏幕的时间大大加长,但仍然不失为填满屏幕的方法。上GIF图显然不是通过这种算法实现的,它在考虑下一步的时候,也同时考虑进去了这一步所花费的最短路程,也就是以最短的时间吃到食物。显然这种无脑模式只保证了第一个条件,而并没有考虑到第二个条件。
所以,在考虑到下一步吃食物的时候,能给自己找到后路,总结出了做AL贪吃蛇的策略:首先需要判断,如果吃完食物还可以找到到自己的退路(尾巴路线)的话,才去吃食物;如果没有这个路线,那么下一步应该考虑往旁边走一格,且要求走了这一格之后满足之前的判断。但如果往旁边走有多种选择都可以满足判断的时候该怎么办呢?那么应该是选择“绕远”而不是“择近”,这样的选择应该是最优的。
通过这样一种“保障”,智能蛇在不无脑的模式下应该是会比选择最短距离这种算法吃到的食物更多,不过呢,中间可能会还有一些因素没有考虑到,铺满屏幕还不是很现实。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值