【问题标题】:minesweeper java扫雷Java
【发布时间】:2011-09-30 14:09:16
【问题描述】:

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

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

【问题讨论】:

  • 例如发布一些关于如何设置网格的代码可能会有所帮助。

标签: java minesweeper


【解决方案1】:

我不明白的唯一部分是扫雷如何在单击方块时打开字段,无论它是数字还是空白方块。

如果它的任何相邻方格有地雷,它将显示一个数字和周围的地雷数。

如果周围没有地雷,则为空白(即:如果必须显示数字 0)。当它为空白时,它还递归地打开所有邻居(例如:如果所有邻居及其邻居也为空白,则打开所有邻居及其邻居,依此类推)。

如果是地雷,你当然会输。一个例子:

X 2 . .
X 2 . .
2 2 1 .
1 X 1 .

(让X 表示一个地雷)。

如果您打开任何标有.(空白)的方格,自动展开所有方格及其旁边的数字:

- 2 . .
- 2 . .
- - 1 .
- - 1 .

(让- 表示一个隐藏的正方形)。

【讨论】:

  • @user541597: null 用户是对的,如果周围的单元格靠近一个空白单元格(一个没有开采邻居的单元格),你想递归地打开周围的单元格,对他来说是 1+。有关此和模型视图类结构的示例,请在此处查看我的代码:minesweeper example code
  • 所以如果我点击一个方块,它会打开它周围的所有方块,这些方块是数字或空白方块,只有当相邻的方块都不是我的方块时才正确?从那里它只对空白框而不是编号框执行递归?
【解决方案2】:

如果是炸弹,你就输了。

如果它是一个数字,那么它只会显示该数字。

如果它是一个空方格,也就是说,一个没有相邻的炸弹,那么它就是一个空白方格,并且在被揭示后,游戏会显示与它接触的所有其他空白方格(这个过程一直持续到所有方格与新创建的空字段相邻的是它们自己与至少一个炸弹相邻的那些(也就是说,有一个数字))

【讨论】:

    猜你喜欢
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 2014-08-27
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多