无边界蛇游戏
Posted
技术标签:
【中文标题】无边界蛇游戏【英文标题】:No boundaries snake game 【发布时间】:2015-02-05 09:50:54 【问题描述】:我正在尝试修改这个蛇游戏:http://jsfiddle.net/unsign3d/uq6YL/,使其具有“滚动网格”,即蛇将能够离开网格的任何一侧并出现在另一侧。可以在此处找到此类蛇游戏的示例:http://codeincomplete.com/projects/snakes/。我确信解决方案是一个简单的解决方案,但不幸的是它在概念上和句法上超出了我的掌握。
这是检测碰撞的代码:
function check_collision(x, y, array)
//This function will check if the provided x/y coordinates exist
//in an array of cells or not
for (var i = 0; i < array.length; i++)
if (array[i].x == x && array[i].y == y) return true;
return false;
任何帮助将不胜感激。
【问题讨论】:
我认为在这里使用循环缓冲区可能会有用,但我不确定如何实现。 【参考方案1】:我认为这个代码部分检查了蛇是否撞到了边界。他将在蛇 x,y 不应该到达的地方保留一系列砖块(如果点击“游戏结束”)。在每个间隔中,运行蛇的线程将更新其位置。新位置将作为 x & y 传递。如果它在边界单元格(数组)中的任何位置,该函数将返回 true 意味着它击中了边界。其他明智的错误
【讨论】:
【参考方案2】:让我们考虑一下。在游戏的原始版本中,如果蛇离开棋盘,游戏就结束了。我们如何实现它?由于我们使用的是矩形网格,我们知道棋盘边缘的坐标。如果蛇的头超出这些范围,则游戏结束。
在上面的示例中,蛇无法移动到 (-50, -50),因为那不是棋盘上的有效位置。所以当蛇移动时,我们需要检查它的下一个'x'和'y'位置是否有效。如果“x”低于 0 或高于 100,或者如果“y”低于 0 或高于 200,则蛇无法移动到那里。在游戏的常规版本中,游戏将结束。
一旦您开始使用,您只需进行一些更改即可实现环绕式边框。首先,您需要确定边界的坐标并将其绘制在板上。现在您将拥有新的“禁区”坐标。但是,当蛇超出这些界限时,无需结束游戏,您只需更改蛇的“x”或“y”坐标。
例如,假设蛇向右移动。当他到达边界时,他的“x”位置将是 95。发生这种情况时,我们会将其更改为 5,以使他出现在屏幕的左侧。同样,如果蛇向上移动并撞到边界,它的 'y' 位置将为 5。为了让他出现在屏幕底部,我们只需将该位置更改为 195。
【讨论】:
以上是关于无边界蛇游戏的主要内容,如果未能解决你的问题,请参考以下文章