我正试图为我的愚蠢游戏生成一个随机级别。该游戏包括在可能的镜子的方场周围具有激光/探测器对。像这样:
/*
LLLLLLLLLL
LmmmmmmmmL
LmmmmmmmmL
LmmmmmmmmL
LLLLLLLLLL
*/
现在,我有一个算法,通过依赖随机放置和拒绝不良位置来生成一个非常糟糕的关卡。这不是很快,并没有真正产生我想要的那种领域。请随意在http://cmouse.desteem.org/laser/
进行试用欢迎任何建议。
当前算法如下所示:
function createLevel:
for i=0 to mirrors:
mirrorLocation = pickRandomPosition
mirrorType = pickRandomType
if (verifyPosition(mirrorLocation, mirrorType)):
i = i - 1
next
else:
storeMirror(mirrorLocation, mirrorType)
在verifyPosition中,我们测试镜子在四个方向上到达激光器,以避免无法检测到的镜子。这有点无聊的代码,所以我在这里省略它。
答案 0 :(得分:2)
确保它不会多次尝试多个字段的一种方法是迭代字段并根据某些概率放置镜像。放置镜像的概率应该是#mirros / #fields,因此预期的镜像数量最后是#mirrors。