我正在用javascript实现一个Snake游戏,这很有趣,我已经成功实现了蛇,蛇的 Action 和吃苹果的蛇的成长。

要计算苹果位置,我目前正在按照以下步骤操作:

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

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

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

    现在假设蛇在吃一个苹果时的长度等于99。这意味着只剩下一个正方形,可以放置下一个苹果。我的算法(这显然是最坏的情况)可能要花很长时间才能随机化正确的值,因为它会丢弃蛇头或尾部已经占据的任何随机位置,根本不在乎将某个范围内的新位置随机化的“空单元格”,而是在整个10 x 10游戏 Canvas 上随机分配。

    我应该如何解决我的业务问题?您能给我有关我可以使用的良好算法的任何建议吗?

    谢谢

    最佳答案

    如评论中所述,我能想到的最简单的解决方案是列出自由坐标的列表,然后从它们中随机选择。
    而且,只有在需要时(需要添加苹果时),您才可以计算自由坐标。

    关于javascript - 蛇游戏-如何计算下一个苹果位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28685388/

    10-11 12:15