无边界蛇游戏

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。

【讨论】:

以上是关于无边界蛇游戏的主要内容,如果未能解决你的问题,请参考以下文章

贪食蛇游戏入门

Python人工智能在贪吃蛇游戏中的运用与探索

结对-结对编项目贪吃蛇-设计文档

计算机软件技术实习 项目二 贪吃蛇的游戏开发(实验准备)1-

React-Redux自制简易贪吃蛇小游戏

React-Redux自制简易贪吃蛇小游戏