如何在Javascript中为激光游戏生成关卡?

如何在Javascript中为激光游戏生成关卡?,javascript,generator,Javascript,Generator,我试图为我愚蠢的游戏生成一个随机等级。游戏包括在一个正方形的可能的镜子区域周围放置激光/探测器对。像这样: /* LLLLLLLLLL LmmmmmmmmL LmmmmmmmmL LmmmmmmmmL LLLLLLLLLL */ 现在,我有一个算法,它通过依赖随机放置和拒绝坏位置来生成一个级别,非常糟糕。这不是很快,也不能真正生成我想要的字段类型。请随时尝试在 欢迎提出任何建议 当前的算法如下所示: function createLevel: for i=0 to mirrors:

我试图为我愚蠢的游戏生成一个随机等级。游戏包括在一个正方形的可能的镜子区域周围放置激光/探测器对。像这样:

/*

LLLLLLLLLL
LmmmmmmmmL
LmmmmmmmmL
LmmmmmmmmL
LLLLLLLLLL

*/
现在,我有一个算法,它通过依赖随机放置和拒绝坏位置来生成一个级别,非常糟糕。这不是很快,也不能真正生成我想要的字段类型。请随时尝试在

欢迎提出任何建议

当前的算法如下所示:

function createLevel:
  for i=0 to mirrors:
    mirrorLocation = pickRandomPosition
    mirrorType = pickRandomType

    if (verifyPosition(mirrorLocation, mirrorType)):
       i = i - 1
       next
    else:
       storeMirror(mirrorLocation, mirrorType)

在verifyPosition中,我们测试反射镜是否在所有四个方向都能到达激光,以避免无法检测到的反射镜。这是一段有点无聊的代码,所以我在这里省略了它

确保它不会多次尝试多个字段的一种方法是迭代这些字段,并根据某种概率放置镜像。放置镜像的概率应该是#mirros/#字段,因此预期的镜像数在最后是#mirros。

问题是什么-您的算法运行得太慢了:(.我必须限制重试次数,否则生成字段需要很长时间。