[英]How to randomize the order of a 2d Array of buttons and have indevidual buttons do different things
我正在尝试使用将按顺序随机生成的二维按钮数组,但是,它们做不同的事情。 单击同一二维数组的不同按钮时,有什么方法可以使用动作侦听器来执行不同的操作? 我想保留 1 个数组,因为按钮在网格中,如果我可以使用按钮的坐标来根据当前按下的按钮更改其颜色,那么以后做我需要做的事情会简单得多。 也许有一个网格布局的解决方案,我可以使用那个或什么的坐标? 这样我可以使用多个 2d arrays 但我需要将不同的 arrays 随机分布到网格中。
public class MyFrame extends JFrame implements ActionListener
{
JFrame mainWindow;
JLabel label = new JLabel();
private JButton[][] board = new JButton[8][8];
MyFrame()
{
int[] piece = {1,1,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6};
this.setSize(520,540);//setting main frame attributes
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setLayout(new GridLayout(8,8));
this.setPreferredSize(new Dimension(500,500));
this.setLayout(new GridLayout(8,8));
int a = 0;
for(int r = 0; r < 8; r++)
{
for(int c = 0; c < 8; c++)
{
board[r][c] = new JButton();
board[r][c].addActionListener(this);
board[r][c].putClientProperty("Type",1);
this.add(board[r][c]);
}
}
setColor();
setVisible(true);
}
public void setColor()
{
int a = 0;
for(int r = 0; r < 8; r++)
{
for(int c = 0; c < 8; c++)
{
if(a % 2 == 0)
{
board[r][c].setBackground(Color.BLACK);
}
a++;
if(c == 7)
{
a++;
}
}
}
}
@Override
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == board.getClientProperty("Type",1))
{//if button pressed create instance
peicePopup newWindow = new peicePopup();
}
}
}
这是我的指示
使用好的OOP和基于GUI的开发,创建棋盘。 显示了一个示例棋盘。
每个玩家有两个车,两个骑士,两个主教,一个国王,一个皇后和八个棋子。 玩家一有白色棋子,而玩家二有黑色棋子。 要显示棋子,您可以使用图标(您可以在网络上研究棋子图像)或使用字母。 对于后者,您可以将 K 用于 King,Q 用于 Queen,R 用于 Rook,B 用于 Bishop,KN 用于 Knight,P 用于 Pawns。
最初,在整个棋盘上,使用随机化放置所有棋子,即黑白棋子。 也就是说,当程序运行时,所有棋子都以随机顺序放置在棋盘上。 程序的每次运行都会随机化棋子的初始位置。
棋盘的每个方格都应该是一个可操作的按钮。 当点击任何空白方块时,第二个 window 应该打开,其中包含有关国际象棋游戏所有棋子移动的文本说明。 用户应该能够关闭第二个 window 而无需关闭第一个 window,即显示棋盘的一个。
对于任何棋子,当单击其正方形(按钮)时,突出显示该棋子可以合法移动到的可能位置。 根据游戏规则,一块只能移动到一个空方格。 在突出显示棋子可以移动到的可能位置时,为不同的棋子使用不同的颜色。 当点击另一个棋子的方块时,之前点击的棋子可能的移动位置不会突出显示,而新点击的棋子的可能位置会被突出显示。 也就是说,程序在棋盘上一次仅突出显示一个棋子(单击时)的可能位置。
nvm,我明白了,我刚刚创建了一个单独的数组,其中的值可以区分按钮 bc 它们的顺序相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.