围住神经猫 - html5/vue版本

avatarplhDigital nomad

前言

无论是写静态页面,还是写vue静态页面,真的写腻了呢。。 最近在学习JavaScript算法与数据结构,感觉刚好可以用上。

坐标系

x,y,z三系别坐标与dx,dy正交坐标轴转换,为什么这样做呢,谁叫它么就是6边形。 dx = -x+(y+z)/2; dy = (y-z)*1.714/2 dx和dy用于神经猫相对于中心点的相对距离。到此为止,dx,dy算是完成了他们的计算使命,不需要再管他了。

image

神经猫周围6个点的表述方法

1 :::: {x: 1, y: 0, z: 1} 2 :::: {x: 1, y: 0, z: 0} 3 :::: {x: 1, y: 1, z: 0} 4 :::: {x: 0, y: 1, z: 0} 5 :::: {x: 0, y: 1, z: 1} 6 :::: {x: 0, y: 0, z: 1} 为了避免坐标点的歧义表述法。规定3个轴坐标只能为正。这样才会有唯一3轴坐标。

x,y,z三坐标系的移动

循环遍历6个周边点,先将障碍物体剔除,那么我要如何知道该位置是否有障碍呢? 障碍的描述。{x:?,y:?,z:?}用三点表述障碍,障碍位于坐标中心点,他们根据三个x,y,z坐标位移到相应位置。

image

关于路径搜索

遍历四周6个点,先排除有障碍的,然后依次找出最可能的一条路,举个例子,其中某一个点的搜索,提供一个数组容器,里面收集它曾经走过的路,我的意思是不走重复的路,然后围绕四周进行路径搜索。一旦到达终点,就结束。

关于如何判断被围住了。

同样是遍历搜索四周的点,不走重复的,看能否到达边界值。有则没被围住,游戏继续,如果无法到达边界,则被围住。

关于爬虫

如果你有爬过网站,同样的道理,为你曾经爬过的网站提供储存容器,不要重复爬取曾经爬过的网站。

A-star algorithms

传送门