【问题标题】:Is there any way to number rows and columns on MineSweeper game in java console?有没有办法在 Java 控制台中对 MineSweeper 游戏的行和列进行编号?
【发布时间】:2020-08-25 06:23:21
【问题描述】:

我正在 java 控制台中做一个扫雷游戏,用户必须输入 x 和 y 坐标来选择他/她想要打开或标记的地方。正如您在第一张图片中看到的,网格由一个 10x10 的点板组成。就像现在一样,用户必须计算行和列,然后他/她才能在控制台中写下他/她想要sinalize的地方。这对用户来说并不是一个很好的体验,所以我想知道是否有任何方法可以将行和列从 1 到 10 编号,以便用户更容易选择他/她想要选择的坐标。 1

网格的代码如下

public String appearanceAt(Pos p) {
        if (statuses[p.y][p.x] == StatusOfArea.CLOSED) {
            return ". ";
        }
        if (statuses[p.y][p.x] == StatusOfArea.flagEDASBOMB) {
            return "* ";
        }
        int count = countMineNeighbors(p);
        if (count == 0) {
            return "0 ";
        }
        return + count + " ";
    }

谢谢

【问题讨论】:

  • 我认为您可以在 2d 数组访问中使用 -1 偏移来使用 1-10 个值。 (最后一个如果没用)
  • 您可以在打印板之前打印 0123456789 作为页眉。同样在棋盘的左侧。我会使用 0-9,因为它可以为您提供十个数字,而不必担心超过一个数字。
  • 感谢您的回复。我可以做顶部,但我不太确定左侧如何做......我会试试看!

标签: java eclipse user-interface numbers minesweeper


【解决方案1】:

我看到您已将 Position 详细信息封装在一个对象中。

您可以类似地将二维数组封装在 Board 类中。

Board 的打印方法可以:

  • 打印第一行的所有列
  • 在每行的开头打印行号

此方法还可以调用 getStatus 函数以确定您需要在用户输入中显示的内容

应该是这样的

  0 1 2 3 4 5 6 7 8 9
A . . . . . . . . . .
B . . . . . . . . . .
C . . . . . . . . . .
D . . . . . . . . . .
E . . . . . . . . . .
F . . . . . . . . . .
G . . . . . . . . . .
H . . . . . . . . . .
I . . . . . . . . . .
J . . . . . . . . . .

用户将输入输入为“D 5”。由 InputHandler 翻译它并相应地设置 Position 对象。

希望这会有所帮助:)

【讨论】:

  • 我会试试的。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-18
  • 2022-01-01
  • 2013-10-11
  • 2012-03-06
  • 2013-09-17
  • 1970-01-01
相关资源
最近更新 更多