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

时间:2015-02-23 23:11:54

标签: javascript algorithm random

我在javascript中实现了一个Snake游戏以获得乐趣,我已经成功实现了蛇,它的动作以及它吃掉苹果时的蛇生长

要计算当前遵循以下步骤的苹果位置:

  1. 创建一个新的苹果对象
  2. 为apple
  3. 创建随机坐标(游戏容器边界之间的X和Y)
  4. 检查苹果的坐标是否等于其中一个蛇块坐标
  5. 如果步骤#3为TRUE,则重新计算苹果的位置,否则在游戏容器中绘制苹果
  6. 不幸的是我发现这个算法很弱..让我说我有一个10 x 10游戏容器,红色方块是苹果,绿色方块是我的蛇头(初始游戏状态)< / p>

    enter image description here

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

    enter image description here

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

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

    谢谢

1 个答案:

答案 0 :(得分:5)

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