问题标签 [minesweeper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4915 浏览

java - 扫雷行动事件

有没有办法使某些事件动作特定于鼠标左键和右键?

我正在创建一个扫雷 gui,所以当一个正方形被左键单击时,它会被揭开,而当它被右键单击时,它会被标记。

我不确定如何在语法上检查这个并且在 tut 上找不到它。

谢谢您的帮助!

0 投票
3 回答
2412 浏览

algorithm - 扫雷算法

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

1 还是 0?

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

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

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

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

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

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

我的问题是,

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

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

0 投票
3 回答
4981 浏览

c++ - 程序在每次运行时生成相同的随机数?

我刚刚完成了一个扫雷类型游戏的编码,一切都很好,除了每次我运行应用程序时,它都会生成相同的数字(我运行了 3 次不同的时间,将输出保存到 3 个文本文件并diff在 Linux 中使用了命令,它没有发现任何差异)。它是播种的,time(NULL)所以它应该每次都改变,对吧?

这是我的代码:

主文件

0 投票
2 回答
2775 浏览

java - 扫雷Java

我正在用 Java 开发一个扫雷程序。我的炸弹分布在整个现场,我的动作监听器响应点击,鼠标监听器响应右键单击。我还让每个被点击的方格检查有多少炸弹与其相邻,并像在游戏中一样在方格上打印数字。

我不明白的唯一部分是扫雷如何在单击正方形时打开字段,无论它是数字还是空白正方形。请帮助我了解这是如何工作的。

0 投票
2 回答
3871 浏览

java - 如何检测扫雷游戏中的“胜利”?

我正在开发一个我已经完成的扫雷器。

唯一缺少的是对获胜的检测。实现这一点的最佳方法是什么?我知道它将成为检测点击的动作监听器的一部分,在某些时候最后一次点击应该检测到赢家。

谁能给我一些想法谢谢!

0 投票
1 回答
213 浏览

jquery - Javascript递归不起作用

我正在制作一个 jquery 扫雷器,目前正在研究当您单击具有0相邻地雷的块时的显示功能。预期的结果是遍历所有 8 个相邻块以显示这些块,如果它们也是 ' 0' 块,它会针对该块重复:

目前,该函数在每次函数迭代时检查第一个块后停止。似乎呼叫正在中断for loops.

0 投票
2 回答
669 浏览

vb.net - 扫雷 VB.NET 问题

所以基本上,我有 2 个 int 变量,x 和 yi 用于创建图片框网格。

这一切都是流动的,并且建立在运行时。

如果我的 = 2,我正在尝试专门更改单击时的图片框。

我不能专门更改一个,当我单击任何一个时,它都会更改所有这些。

请帮忙!!

这是我的代码:

0 投票
3 回答
2188 浏览

vb.net - 我如何定位在运行时创建的图片框之一?VB.NET

所以基本上,我已经成功地将网格中的某些图片框随机化以包含地雷,并显示该地雷,并且出于测试目的,这些地雷当前正在显示。你认为我需要做什么才能说:

如果您单击此框并且 mine = 1(有地雷),那么您就输了。
否则,继续。

很简单,但我想把它应用到所有盒子上,不管网格有多大。(X 区 * Y 区)

我得到的最远的是当单击其中任何一个时将弹出一个 MsgBox() 。

这都是在运行时创建的。这是我的代码。

0 投票
4 回答
22501 浏览

algorithm - 生成不需要猜测的扫雷板

我正在设计一个类似扫雷的游戏(修改了规则),我想防止玩家猜测。我的目标是:生成的棋盘只有很少的显示方格,玩家无需猜测即可解决整个谜题。

维基百科提到:

Minesweeper 的一些实现将通过从不在显示的第一个方格上放置地雷来设置棋盘,或者通过安排棋盘以使解决方案不需要猜测。

但是,我无法弄清楚算法。

此外,在另一个 StackOverflow 问题中:扫雷求解算法

改进:在生成器旁边运行求解器,确保拼图有唯一的解决方案。这需要一些聪明才智,并且在大多数变体中都没有完成。

我怀疑这是否真的有效。众所周知,解决扫雷是NP完全的。

总之,我的问题是:

  • 如何生成不需要任何猜测的扫雷板?
  • 如果可以,具体算法是什么?
  • 我们能否在多项式时间内确定性地解决这个问题?这个问题是NP完全的吗?如何证明?
0 投票
1 回答
613 浏览

vb.net - vb.net:扫雷点击事件

我已经开始使用动态创建的按钮网格在 vb.net 中制作扫雷游戏,这些按钮存储在二维数组中。我有另一个二维数组 ( Boolean),它跟踪某个位置是被覆盖还是未被覆盖。而且我有一个“更新网格”方法,可以随时运行,以更新网格,以便所有应该发现的都在屏幕上显示。

我将如何做到这一点,以便在单击任何按钮时将该按钮的状态设置为未覆盖?我尝试使用事件处理程序,但我无法传递任何参数,而且我需要知道按钮的 x 和 y 位置,以便找到正确的按钮。

谢谢。