0

我想我只需要对我正在开发的这款游戏重新审视。

这是一个滑动图像拼图(您将图像分成几块并以随机顺序显示它们,然后我删除一块拼图,用户必须单击每个拼图来移动它,从而放置图像重新走到一起)

完整代码在这里:https ://github.com/Integralist/HTML5-Image-Slider-Game

我遇到的错误是在您移动的第一个拼图上,如果您再次单击它 - 当它移回它刚刚来自的位置时 - 拼图变为另一块(在一个实例中,我注意到它是更改为启动游戏而被移除的拼图,但这可能只是巧合)。

起初我认为问题出在异步的 setInterval 方法上(我在想,因为我在一个循环中,可能参考循环迭代搞砸了,但我现在将相关迭代传递给 setInterval 和问题仍然存在,所以不可能那样)。

更新:
我仍然认为问题与 setInterval 有关。主要问题是当我们开始将图像绘制到画布上时,原始 x/y 坐标显然已经与我们预期的有所不同。我注意到,当我们单击同一个拼图以将其移回刚刚所在的位置时,保存我们要移动的拼图坐标的对象是不正确的。我注意到 drawOnCanvasX/Y 属性与它们应有的不同,并且它们现在匹配 empty_space 变量的 x/y 坐标?这种情况并非一直发生的事实让我认为 setInterval 没有通过正确的对象从循环传递到在间隔上执行的函数?

任何帮助表示赞赏。

4

1 回答 1

0

问题是因为我没有从随机数组中删除特定项目。

为了让游戏正常运行,我需要移除 1 个拼图,这允许其他拼图有一个可以移动的空间。问题是我有clearRect我想要的那块,但实际上并没有从阵列中删除它。因此,当我在 Array 中循环查找具有这些确切 X/Y 坐标的项目时,它正在找到应该被移除的拼图项目(并且因为被移除的部分是随机选择的,这就是为什么有时件将首先通过循环找到,其他时候会找到正确的件)。

基督那是痛苦的。

于 2012-04-27T19:21:21.907 回答