Java 扫雷舰,我怎么处理牢房

Java 扫雷舰,我怎么处理牢房,java,swing,Java,Swing,我想创建一个扫雷游戏。首先,这将适用于按钮。我想我会研究二维数组,会有一个类似布尔数组的数组,表示炸弹在哪里,例如,如果booleanArray[0][4]为真,就有一个炸弹 现在,我如何在我的按钮中实现这一点?我可以在这些按钮上设置名称,然后如果单击某个按钮,我将从此div中获取名称。例如,当我单击第一个按钮时,我将获取“00”名称,然后我将获取第一个字母“0”和第二个字母“0”,并将其解析为int。这将是我以前的booleanArray的索引,在这种情况下,它将是booleanArray[0

我想创建一个扫雷游戏。首先,这将适用于按钮。我想我会研究二维数组,会有一个类似布尔数组的数组,表示炸弹在哪里,例如,如果booleanArray[0][4]为真,就有一个炸弹

现在,我如何在我的按钮中实现这一点?我可以在这些按钮上设置名称,然后如果单击某个按钮,我将从此div中获取名称。例如,当我单击第一个按钮时,我将获取“00”名称,然后我将获取第一个字母“0”和第二个字母“0”,并将其解析为int。这将是我以前的booleanArray的索引,在这种情况下,它将是booleanArray[0][0].

那么,我可以用另一种更好的方式来代替它吗

这就是我创建按钮的方式:

for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 10; j++) {
            JButton button = new JButton("");
            button.setPreferredSize(new Dimension(50, 50));
            button.setName(Integer.toString(i) + Integer.toString(j));
           }
     }
for(int i=0;i<10;i++){
对于(int j=0;j<10;j++){
JButton按钮=新JButton(“”);
按钮。设置首选尺寸(新尺寸(50,50));
setName(Integer.toString(i)+Integer.toString(j));
}
}
编辑
我将有一个二维数组,它将反映我的按钮:


现在,我如何检查我在单击第一个按钮后是否击中炸弹?

只需按住一个二维按钮数组

JButton[][] myButtons = new JButton[10][10];
你用它来画它们,它们都用它们的值调用相同的方法

 for (int x=0; x<10; x++){
   for (int y=0; y<10; y++){
     myButtons[x][y] = new JButton("0");
     //add to page, or do it elsewhere
     myButtons[x][y].addActionListener(new ActionListener() { 
        public void actionPerformed(ActionEvent e) { 
           selectionButtonPressed(x,y);
        }
     });
   }
 }

for(int x=0;x只需按住二维按钮数组

JButton[][] myButtons = new JButton[10][10];
你用它来画它们,它们都用它们的值调用相同的方法

 for (int x=0; x<10; x++){
   for (int y=0; y<10; y++){
     myButtons[x][y] = new JButton("0");
     //add to page, or do it elsewhere
     myButtons[x][y].addActionListener(new ActionListener() { 
        public void actionPerformed(ActionEvent e) { 
           selectionButtonPressed(x,y);
        }
     });
   }
 }

for(int x=0;x这是一种方法,但您应该使用以下方法创建名称字符串:

button.setName(i + ":" j);
这将使解析这两个值变得更容易,因为您只需使用
String.split(…)
方法即可

另一个选项可能是使用
JButton
作为键创建
HashTable
,然后使用
Point
对象(表示行/列)作为
HashTable
的值对象。然后只需使用HashMap的
get(…)
方法检索单击按钮的点

另一个选项是在创建按钮时扩展JButton并添加两个参数(行、列)。然后还添加
getRow()
getColumn()
方法


这两种方法中的任何一种都将保持逻辑简单,您只需要创建一个ActionListener供所有按钮使用。

这是一种方法,但您应该使用以下方法创建名称字符串:

button.setName(i + ":" j);
这将使解析这两个值变得更容易,因为您只需使用
String.split(…)
方法即可

另一个选项可能是使用
JButton
作为键创建
HashTable
,然后使用
Point
对象(表示行/列)作为
HashTable
的值对象。然后只需使用HashMap的
get(…)
方法检索单击按钮的点

另一个选项是在创建按钮时扩展JButton并添加两个参数(行、列)。然后还添加
getRow()
getColumn()
方法


这两种方法都可以使逻辑保持简单,您只需要创建一个供所有按钮使用的ActionListener。

不确定您要问什么,但在代码中,JButton对象将在循环的下一次迭代中立即超出范围。也许您想要一个二维JButton数组?您好,我编辑了我的帖子请检查你是否知道我在说什么。不确定你在问什么,但在你的代码中,JButton对象将在下一次循环中立即超出范围。也许你想要一个二维JButton数组?嗨,我编辑了我的帖子。请检查你是否知道我在说什么。