我已经从事网络开发多年了,我正在慢慢地参与游戏开发,对于我目前的项目,我有这张等距地图,我需要使用算法来检测正在点击的字段。顺便说一句,这一切都在带有 Javascript 的浏览器中。
地图
看起来像这样,我添加了一些数字来向您展示字段(图块)的结构及其 ID。所有字段都有一个中心点(x,y 数组),四个角在绘制时基于该中心点。
如您所见,它不是菱形,而是锯齿形地图并且没有角度(自上而下的视图),这就是为什么考虑到所有文章和计算通常都基于菱形,我自己找不到答案的原因有一个角度。
数字
这是一张动态地图,所有大小和数字都可以更改以生成新地图。
我知道这不是很多数据,但地图是根据地图和字段大小生成的。
- 地图大小:x:800 y:400
- 区域大小:80x80(角落之间)
- 所有区域的中心位置(x,y)
目标
提出一种算法,告诉客户端(游戏)在任何给定事件(点击、移动等)中鼠标位于哪个字段。
免责声明
我确实想提一下,我自己已经提出了一个可行的解决方案,但是我 100% 肯定它可以以更好的方式编写(我的解决方案涉及很多嵌套的 if 语句和循环),并且这就是我在这里问的原因。
这是我的解决方案的一个示例,我基本上在最近的 4 个已知位置找到一个带角的正方形,然后根据两个最近的字段之间的最小正方形得到我的结果。这有任何意义吗?
问我是否遗漏了什么。