这个 tictactoe 程序是一个 2 人游戏。在我开始编码之后,我制作的 GUI 是框架和按钮。实际上,我的程序正在使用这种编码。
private String letter= " ";
private int count= 0;
private void btn7ActionPerformed(java.awt.event.ActionEvent evt) {
count++;
if(count == 1 || count == 3 || count == 5 || count == 7 || count == 9){
letter = "X";
} else if(count == 2 || count == 4 || count == 6 || count == 8 || count == 10){
letter = "O";
}
if(evt.getSource() == btn1){
btn1.setText(letter);
} else if(evt.getSource() == btn2){
btn2.setText(letter);
} else if(evt.getSource() == btn3){
btn3.setText(letter);
} else if(evt.getSource() == btn4){
btn4.setText(letter);
} else if(evt.getSource() == btn5){
btn5.setText(letter);
} else if(evt.getSource() == btn6){
btn6.setText(letter);
} else if(evt.getSource() == btn7){
btn7.setText(letter);
} else if(evt.getSource() == btn8){
btn8.setText(letter);
} else if(evt.getSource() == btn9){
btn9.setText(letter);
}
}
private void btn1ActionPerformed(java.awt.event.ActionEvent evt) {
count++;
if(count == 1 || count == 3 || count == 5 || count == 7 || count == 9){
letter = "X";
} else if(count == 2 || count == 4 || count == 6 || count == 8 || count == 10){
letter = "O";
}
if(evt.getSource() == btn1){
btn1.setText(letter);
} else if(evt.getSource() == btn2){
btn2.setText(letter);
} else if(evt.getSource() == btn3){
btn3.setText(letter);
} else if(evt.getSource() == btn4){
btn4.setText(letter);
} else if(evt.getSource() == btn5){
btn5.setText(letter);
} else if(evt.getSource() == btn6){
btn6.setText(letter);
} else if(evt.getSource() == btn7){
btn7.setText(letter);
} else if(evt.getSource() == btn8){
btn8.setText(letter);
} else if(evt.getSource() == btn9){
btn9.setText(letter);
是的,它确实有效,但我对这些代码的问题是我需要将代码放在每个按钮中,例如button7,button1(这些只是我的按钮的例子)是代码是按钮执行的 Action 。
我只想要每个按钮执行一个命令,我不想在每个按钮中复制粘贴,因为它们是相同的代码。我认为有一个代码可以做到这一点,你怎么看?请帮忙!
最佳答案
我真的不知道你是如何尝试解决这个游戏逻辑的,尽管你的代码可以压缩成这种形式:
int count = -1;
String letter = "";
JButton[] button = new JButton[9]; // These three being your Instance Variables
for (int i = 0; i < 9; i++, counter++)
{
final int counter = i;
button[i] = new JButton("");
button[i].addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent ae)
{
count++;
if (count % 2 != 0)
letter = "X";
else
letter = "O";
button[counter].setText(letter);
}
});
}
关于java - 我的 tictactoe 游戏中的每个按钮都有相同的代码。如何缩短这个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13151936/