用 js 写个自动寻路的贪吃蛇

媒介

偶然看到两年前写的贪吃蛇,当时没把自动寻路的算法写好,蛇轻易挂,周末找了个时候把昔时的坑填上,写了个不会挂的贪吃蛇。

两年前的版本_点击检察

此次更新的版本_点击检察

代码比较简单,运用 canvas 完成游戏的绘图,抛开 A* 算法的完成,全部 html 代码在 300 行之内~
源码 :
https://github.com/myfjdthink…

道理申明

不死的要领

首先要找出一个形式能够坚持蛇不挂,这个形式就是
“随着尾巴跑”

假如蛇头和蛇尾是能够连通的,那末就不会挂。
所以只需保证恣意时候蛇头和蛇尾能连通即可。
寻路的伪代码以下:

if(head to  flood){ // 蛇头能连通食品
    模仿蛇吃到食品后的状况
    if(newHead to tail){   // 吃到食品后还能衔接尾巴 平安
        eat flood
    }  else {
        // 吃到食品后没法衔接尾巴 摒弃
        flow tail
    }
} else {
    flow tail   // 随着尾巴跑
}

在吃食品之前,须要模仿吃到食品后蛇的状况,推断此时蛇是不是还能衔接尾巴,由此决议是不是吃掉食品。

怎样找到最短途径

运用 A* 算法能够疾速找到俩点之间的最短途径,网上找了个完成,就直接扒下来运用啦。
http://devpro.it/examples/ast…

TODO

现在只是完成了不死,在某些条件下,顺序照样会堕入一个轮回,这个有空在革新吧,迎接提 PR。

    原文作者:Jude
    原文地址: https://segmentfault.com/a/1190000007675862
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞