媒介
偶然看到两年前写的贪吃蛇,当时没把自动寻路的算法写好,蛇轻易挂,周末找了个时候把昔时的坑填上,写了个不会挂的贪吃蛇。
代码比较简单,运用 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。