我正在尝试调整这个蛇游戏: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;
}
任何帮助将不胜感激。
答案 0 :(得分:0)
我认为这段代码部分会检查蛇是否会触及边界。他将保留一系列砖块,蛇x,y不能到达(如果击中“游戏结束”)。在每个层级中,运行蛇的线程将更新其位置。新职位将作为x&amp;年。如果它是边界单元格(数组)中的任何位置,那么函数将返回真实意味着它击中了boudary。其他明智的错误
答案 1 :(得分:0)
让我们考虑一下这一点。在游戏的原始版本中,如果蛇离开棋盘,游戏就结束了。我们如何实现这一点?由于我们使用的是矩形网格,因此我们知道了板边缘的坐标。如果蛇的头部超出这些范围,游戏结束。
在上面的示例中,蛇无法前往(-50,-50),因为这不是棋盘上的有效位置。因此,当蛇移动时,我们需要检查它的下一个'x'和'y'位置是否有效。如果'x'低于0或高于100,或者如果'y'低于0或高于200,则蛇不能移动到那里。在游戏的常规版本中,游戏将结束。
一旦你开始工作,只需做一些改动就可以实现环绕式边框。首先,您需要确定边框的坐标并将其绘制在板上。现在,您将获得新的“禁区”坐标。但是当蛇越过那些边界时,你不需要结束游戏,你只需要改变蛇的'x'或'y'坐标。
例如,假设蛇正向右行进。当他击中边界时,他的'x'位置将是95.当发生这种情况时,我们将其改为5以使他出现在屏幕的左侧。同样,如果蛇向上行进并撞击边界,他的'y'位置将为5.为了让他出现在屏幕的底部,我们只需要将该位置改为195.