-2

我即将用 Java 设计自己的扫雷器。而在分析真正的windows 7扫雷时,我遇到了这种情况。

1 还是 0?

未被覆盖的方块(箭头所指),可能是 1 也可能没有任何数字(一个空方块)。但在 windows 7 扫雷中,这个正方形有 1。

假设:通过分析,我知道所有的地雷总是被数字包围。

如果我接受我的假设,那么没有其他方法,未覆盖的正方形应该是 1。

如果我遵循这个假设,设计扫雷的逻辑会更容易。自从,

第 1 步:随机分配带有地雷的正方形。(使 2D 数组中的特定 (i,j) 元素为 -1)。

第二步:给每个方格编号,等于它周围的地雷数量。(在这种情况下,假设成立)。

我的问题是,

  1. 如果未覆盖的正方形是空正方形怎么办?
  2. 这个假设是扫雷游戏的规则吗?
  3. 我是否必须遵循假设,以使我的编码更易于实现?
  4. *如果我提出了一个新的扫雷器,它的规则与假设相反,我的新扫雷器最终会不稳定吗?是这样吗?如何?

*->我不是故意违反规则,我尝试删除用户多余的提示/键。

4

3 回答 3

10

当然,尖方格有一个数字——它与(正好一个)我的方格相邻,所以它得到一个 1。空方格只是零的简写。

于 2011-08-13T04:24:57.423 回答
6

方格不能不编号,数字代表有多少地雷触及该方格。未编号的方格为“0”,表示没有地雷接触。

所以是的,地雷必须始终被编号的方格包围。

于 2011-08-13T04:26:48.950 回答
0

你没有看到数字的原因是扫雷的填充算法。
它显示所有值为 0 的字段(0 显示为空)。它揭示了与之前揭示的那些相邻的所有字段,这些字段具有非零值。
角落中的字段没有相邻的零值字段,因此无法自动显示。

它带有一个 1。

如果您有一个 10x11 字段,最后一行为空,则该字段将显示为值 1。

Windows 版本显示一个的原因可能是您已经用标志标记了所有现有的地雷,因此 Windows Minesweeper 显示了所有剩余的字段。

于 2017-07-27T08:15:42.050 回答