蛇游戏 - 如何计算下一个苹果位置

BeN*_*ErR 5 javascript random algorithm

我正在javascript中实现一个Snake游戏以获得乐趣,我已经成功地实现了蛇,它的动作和蛇生长的东西,因为它吃了一个苹果.

要计算苹果位置,我目前正在执行以下步骤:

  1. 创建一个新的苹果对象
  2. 为苹果创建随机坐标(X和Y,游戏容器边界之间)
  3. 检查苹果的坐标是否等于其中一个蛇块坐标
  4. 如果步骤#3为TRUE,则重新计算苹果的位置,否则在游戏容器中绘制苹果

不幸的是我发现这个算法非常弱..让我说我有一个10 x 10的游戏容器,红色方块是苹果,绿色方块是我的蛇头(初始游戏状态)

在此输入图像描述

随着游戏的进行,蛇吃掉越来越多的苹果,增加它的长度,留下越来越少的空细胞放置苹果

在此输入图像描述

现在假设在吃苹果时蛇的长度等于99.这意味着只剩下一个方格来放置下一个苹果.我的算法(这显然是最糟糕的情况)可能需要永远才能随机化正确的值,因为它丢弃了已经被蛇的头部或尾部占据的任何随机位置,而不是完全关心在一个范围内随机化新位置仅仅是"空单元格",而是在整个10 x 10游戏画布上随机化.

我该如何解决我的公共汽车?你能给我一些关于我可以使用的好算法的建议吗?

谢谢

小智 5

正如评论中所说,我能想到的最简单的解决方案是制作一个自由坐标列表,然后从中随机选择.并且您可以仅在需要时(当您需要添加苹果时)计算自由坐标.