javascript - 计算数字字符串是否循环 |六 Angular 网格圆形世界

标签 javascript html 2d game-engine

所以我有一个具有 100x100 网格的十六进制网格...网格是递归的,因此当您向左滚动经过“0,0”位置时,它会绘制“99,0”行等...我的问题是找到一种算法可以让我计算是否要循环...

示例: 96 - 97 - 98 - 99 - 0 - 1 - 2 - 3 - 4

这两个位置的起始位置都小于结束位置 如果我在第 2 行并且屏幕平移到第 98 行:

2 到 98 作品 (98) - 100 = -2 那么 -2-(2) = 4 的距离

96 到 98 失败 (98) - 100 = -2 那么 -2-(96) = 98 的距离(正确的是 2)

两者的结束位置都小于起始位置 然而,这并不适用于两个方向......所以我们这样做...... 从第 98 行到第 2 行:

98 到 2 作品 (2) + 100 = 102 那么 102-(98) = 距离 4

96 到 98 失败 (96) + 100 = 196 那么 196-(98) = 98 的距离(正确的是 2)

正如你所看到的,我不能只说开始<结束或开始>结束,因为数字循环将其拧紧。我需要以某种方式检测何时“越线”...

<小时/>

经过乔纳森的建议,我意识到客户端显示和幕后不必排队。我已经更改了引擎,因此有 2 个十六进制值...其中一个是实际位置,例如 98,2 0,0 2,1。另一个是从视口(viewport)开始的字面位置。

看起来像这样:

 Actual:  96  97  98  99  00  01  02  03  04  <= display in client & reference hexGridModel

 Literal: -4  -3  -2  -1  00  01  02  03  04  <= use to calculate buffer position updates from camera

字面意思只是从“显示”的 Angular 来看。稍后我需要进行修复,看看我们是否通过了 -100 或 +100,但这暂时解决了问题,并且 map 大小是动态的,因此需要稍后进行处理

现在我只是将它用于任何情况。

    var x, y = 0
    x = this.buffer.coords.current.x - this.buffer.coords.last.x;
    y = this.buffer.coords.current.y - this.buffer.coords.last.y;

最佳答案

我想说,如果没有您提供给我们的更多信息,这实际上是不可能的。以从 2 移动到 98 为例。您将无法判断用户是从 2 -> 1 -> 0 -> 99 -> 98 还是 2 -> 3 -> 4 -> ... -> 97 -> 98

因此,能够确定这一点的关键是了解玩家或物体移动的方向

如果你知道这一点,你可以说(假设 0 位于网格的左边界,99 位于网格的右边界):

if ((direction == LEFT && new_pos > old_pos) || (direction == RIGHT && new_pos < old_pos) {
    // The "line" has been crossed.
} else {
    // The "line" was not crossed.
}

如果您还需要知道行驶的距离,可以这样分解:

GRID_SIZE = 100
if (direction == LEFT && new_pos > old_pos) {
    distance = (GRID_SIZE - new_pos) + old_pos;
} else if (direction == RIGHT && new_pos < old_pos) {
    distance = (GRID_SIZE - old_pos) + new_pos;
} else {
    distance = abs(new_pos - old_pos)
}

关于javascript - 计算数字字符串是否循环 |六 Angular 网格圆形世界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8075230/

相关文章:

javascript - 如何检查在表单字段上按下的键是否为数字 (0 - 9)?

javascript - 从 HTML DOM 中选择不同的标签集

java - 等距图形深度处理 Java

c++ - 为什么我不能通过推回将值存储在我的 2D vector 中?

java从具有不同长度的多种数据类型的文件中读取输入

Javascript:转发采用可变数量参数的函数调用

javascript - 为什么 JS 数组接受逗号分隔的索引?

visual-studio-2010 - 元素 'tr' 不能嵌套在元素 'tr' 中

javascript - 获取 div 源代码到 HTTP Post 到 Controller ASP.NET MVC

html - 负边距在 IE 中不起作用