没有界限的蛇游戏

时间:2014-12-07 18:24:27

标签: javascript jquery logic 2d-games

我正在尝试调整这个蛇游戏: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;
}

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

我认为这段代码部分会检查蛇是否会触及边界。他将保留一系列砖块,蛇x,y不能到达(如果击中“游戏结束”)。在每个层级中,运行蛇的线程将更新其位置。新职位将作为x&amp;年。如果它是边界单元格(数组)中的任何位置,那么函数将返回真实意味着它击中了boudary。其他明智的错误

答案 1 :(得分:0)

让我们考虑一下这一点。在游戏的原始版本中,如果蛇离开棋盘,游戏就结束了。我们如何实现这一点?由于我们使用的是矩形网格,因此我们知道了板边缘的坐标。如果蛇的头部超出这些范围,游戏结束。

Simple snake board

在上面的示例中,蛇无法前往(-50,-50),因为这不是棋盘上的有效位置。因此,当蛇移动时,我们需要检查它的下一个'x'和'y'位置是否有效。如果'x'低于0或高于100,或者如果'y'低于0或高于200,则蛇不能移动到那里。在游戏的常规版本中,游戏将结束。

一旦你开始工作,只需做一些改动就可以实现环绕式边框。首先,您需要确定边框的坐标并将其绘制在板上。现在,您将获得新的“禁区”坐标。但是当蛇越过那些边界时,你不需要结束游戏,你只需要改变蛇的'x'或'y'坐标。

Wrap-around snake board

例如,假设蛇正向右行进。当他击中边界时,他的'x'位置将是95.当发生这种情况时,我们将其改为5以使他出现在屏幕的左侧。同样,如果蛇向上行进并撞击边界,他的'y'位置将为5.为了让他出现在屏幕的底部,我们只需要将该位置改为195.

相关问题