我正在尝试改编这个蛇游戏:http://jsfiddle.net/unsign3d/uq6YL/有一个"滚动的网格",在这个意义上,蛇将能够离开网格的任何一边,并将出现在另一边。这种蛇游戏的一个例子可以在这里找到:我确信这个解决方案很简单,但不幸的是,它在概念上和语法上超出了我的理解范围。
这是检测冲突的代码:
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;
}
任何帮助都将不胜感激。
3条答案
按热度按时间0s7z1bwu1#
我认为这段代码检查了蛇是否到达了边界。他将保留一个砖块数组,在那里蛇x,y不应该到达(如果点击“游戏结束”)。在每个intervel中,运行蛇的线程将更新它的位置。新的位置将作为x & y传递。如果它在边界单元格(数组)的任何地方,函数将返回true意味着它到达了边界。否则为false
eqqqjvef2#
让我们思考一下这个问题。在游戏的原始版本中,如果蛇离开棋盘,游戏就结束了。我们如何实现这一点呢?因为我们使用的是矩形网格,所以我们知道棋盘边缘的坐标。如果蛇头超出了这些范围,游戏就结束了。
在上面的例子中,蛇不能移动到(-50,-50),因为这不是棋盘上的有效位置,所以当蛇移动时,我们需要检查它的下一个x和y位置是否有效,如果x小于0或大于100,或者y小于0或大于200,蛇不能移动到那里。在游戏的常规版本中,游戏会结束。
一旦你得到工作,你可以实现环绕风格的边界,只需做一些改变。首先你需要确定边界的坐标,并把它画在棋盘上。现在你会有你的新的'禁区'坐标。但不是结束游戏时,蛇超出这些界限,你只需要改变蛇的'x'或'y'坐标。
例如,假设蛇向右移动。当它碰到边界时,它的“x”位置将是95。当这种情况发生时,我们将其更改为5,使它出现在屏幕的左侧。类似地,如果蛇向上移动并碰到边界,它的“y”位置将是5。要使它出现在屏幕的底部,我们只需要把这个位置改为195。
mwecs4sa3#
只需要用最大窗口坐标对坐标取模。