扫雷雷生成算法

时间:2015-03-06 01:46:40

标签: algorithm minesweeper

我正在制作扫雷克隆。我目前的矿井生成算法就是:选择一个坐标,如果它没有我的,放置一个矿井,否则再试一次。我认为这不是一种有效的算法,特别是在高密度雷区。我正在寻找其他一些选项,如:Fisher-Yates shuffle等等,但我认为它有更长的运行时间用于更大的网格。我正在考虑使用链接列表。有什么建议?

1 个答案:

答案 0 :(得分:0)

如果你有一个列表/数组,你可以在常规时间内获得列表大小,你可以尝试以下内容:

list = List of all fields
N = number of mines
N.times do
  index = random(list.size)
  pick list[index]
  list.remove(index)
end

这样:

  • 您不需要随机播放整个列表
  • 你避免两次拾取相同的字段

简而言之,它只是从列表中绘制随机字段并将其从列表中删除以避免在下次绘制时发生冲突。