固定地雷数随机生成扫雷地图难度计算算法

algorithm to calculate the difficulty of randomly generated minesweeper map with fixed number of mines

我正在 minecraft 中制作扫雷游戏(没关系)。
我创建了一个随机放置地雷的代码,显示每个方块周围的炸弹数量,检测游戏的清除和失败。

即使在同样大小的地图上放置相同数量的地雷,每场比赛的难度也大不相同,所以我觉得快速通关需要很大的运气。

所以我正在寻找一种算法来生成随机生成地图的总体难度的数值。

我尝试了一种通过对每个图块(块)的每个数字(颜色)进行评分和求和来计算难度级别的方法。 但是,我们无法为每个图块找到能够获得合理难度分数的分数。

既然是Minecraft中的命令操作,我不想要太复杂的表达或者完美的结果。 如果有一种算法可以通过获取随机生成的地图的难度来划分大约3~5个级别,如果你能解释给我,我将不胜感激

(红石块是我的,每种颜色代表数字 1 2 3)

一些想法

首先,实际游戏中的扫雷难度是通过增加棋盘大小和地雷数量来处理的。由于在屏幕上更容易重启和更快地重玩扫雷游戏,这被认为足够了。 (它是否是一个好的设计是一个不同的问题。)然而,你想要为你的小游戏处理一组棋盘和地雷的难度。

既然你想要的东西相当简单,我会推荐以下方法之一:

作弊一点:
Minecraft 编程并不是处理此类分析的好地方。由于您已经有一个随机生成器,可以使用它来加载几十个预先准备和预先分析的电路板之一。玩家不会注意到任何东西,除非他专注并花几天时间玩你的迷你游戏——只是你的游戏看起来公平而且玩起来不错。你有你的困难与最小的麻烦。

作弊多:
实施公平扫雷:在玩家不确定下一步的情况下,总是放置一个非地雷,如果有地雷就把它放在它不会的地方'不要更改已经显示的布局。这从实际游戏中删除了玩家 必须 猜测哪些地方被认为是不公平的。当你无法控制局势时,有 30% 的机会在接近尾声时毁掉比赛的感觉并不好玩。
这会有点难以实施。从好的方面来说,它不需要预加载和预计算。

至于实际答案,已经对扫雷进行了广泛的研究 - 例如这个 thesis。我发现那里提到董事会一代的部分是这样说的:

  1. Generate a board.
  2. Run an algorithm to find the "unsolvable" sections (where player would have to guess)
  3. Run a different algorithm to try to convert this section into a solvable one.

这很可能不是您正在寻找的简单解决方案。