我正在尝试为我愚蠢的游戏生成一个随机级别。这个游戏由激光/探测器对围绕着可能的镜子组成的方场组成。如下所示:
/*
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中,我们测试镜子,使其在所有四个方向都能到达激光,希望避免无法检测到的镜子。这是一段有点无聊的代码,所以我在这里省略它。
发布于 2011-07-25 05:29:32
确保它不会多次尝试多个字段的一种方法是迭代字段,并根据一定的概率放置一个镜像或不镜像。将镜像放入的概率应该是#mirros /#field,这样镜像的预期数量就是末尾的#mirrors。
https://stackoverflow.com/questions/6809803
复制相似问题