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

rec*_*ecu 3 algorithm minesweeper minecraft calculation

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

即使在相同大小的地图上放置相同数量的地雷,每个游戏的难度也有很大差异,所以我觉得想要快速通关游戏需要很大的运气。

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

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

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

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

在此输入图像描述

Sha*_*mis 5

一些想法

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

由于您想要相当简单的东西,我会推荐以下方法之一:

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

作弊很多:
实现公平的扫雷:在玩家无法确定下一步的情况下,始终放置一个非地雷,如果有地雷,请将其放置在不会改变已显示布局的地方。这消除了实际游戏中玩家必须猜测哪些被认为不公平的地方。当你无法控制局势时,在接近尾声时有 30% 的机会毁掉一场比赛的感觉并不有趣。
这实施起来会比较困难一些。从好的方面来说,它不需要预加载和预计算。

至于实际的答案,人们对扫雷器进行了广泛的研究 - 例如这篇论文。我发现提到主板一代的部分是这样的:

  1. 生成一个板。
  2. 运行算法来找到“无法解决”的部分(玩家必须猜测)
  3. 运行一种不同的算法来尝试将此部分转换为可解的部分。

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