我正在创建一个简单的TicTacToe游戏,但是每当游戏结束和点击重启按钮时我就会重新开始游戏。我刚做了第一个水平按钮。当您按下它们时,会弹出一个窗口并告诉您有一个赢家。我刚刚做了测试。但是当我按重启时如何重新启动游戏?我只是java的新手,而我正在尝试自己制作游戏来改进。 以下是我的代码的一些部分:
public class TicTacToe extends javax.swing.JFrame implements ActionListener{
int i=0;
boolean win = false;
String player[]={"You","Comp"};
/**
* Creates new form TicTacToe
*/
public TicTacToe() {
super("TicTacToe (LeeMinHu-bag)");
initComponents();
setResizable(false);
setLocationRelativeTo(null);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
}
//If a button is pressed, its text will become "X"
public void actionPerformed(ActionEvent e){
if(e.getSource() == b1){
b1.setText("X");
b1.setEnabled(false);
}else if(e.getSource() == b2){
b2.setText("X");
b2.setEnabled(false);
}else if(e.getSource() == b3){
b3.setText("X");
b3.setEnabled(false);
}else if(e.getSource() == b4){
b4.setText("X");
b4.setEnabled(false);
}else if(e.getSource() == b5){
b5.setText("X");
b5.setEnabled(false);
}else if(e.getSource() == b6){
b6.setText("X");
b6.setEnabled(false);
}else if(e.getSource() == b7){
b7.setText("X");
b7.setEnabled(false);
}else if(e.getSource() == b8){
b8.setText("X");
b8.setEnabled(false);
}else if(e.getSource() == b9){
b9.setText("X");
b9.setEnabled(false);
}
i++;
System.out.println(i);
if(i%2==0){
turn.setText(player[0]);
}else{
turn.setText(player[1]);
}
checkIfWin();
}
//check to see if there is a winner
public void checkIfWin(){
if(b1.getText()==b2.getText() && b2.getText()==b3.getText() && b1.getText()!=""){
win = true;
}else if(i==9 && win==false){
JOptionPane.showMessageDialog(null,"Tie!","Game Over",JOptionPane.INFORMATION_MESSAGE);
}else{
win=false;
}
ifWin(win);
}
//if there is a winner
public void ifWin(boolean w){
if(w==true){
JOptionPane.showMessageDialog(null,"WIN!","Game Over",JOptionPane.INFORMATION_MESSAGE);
TicTacToe restart = new TicTacToe();
restart.validate();
}else{
System.out.println("The game is still on!");
}
}
答案 0 :(得分:2)
似乎您拥有的唯一状态是按钮上的文字。所以要重新启动游戏,你只需要设置空文本(初始文本是什么?)并启用按钮。像这样:
JButton buttons[] = {b1, b2, b3, b4, b5, b6, b7, b8, b9};
for (JButton button : buttons) {
button.setText("");
button.setEnabled(true);
}
一些补充说明:
if
方法中的所有actionPerformed
都可以替换为:
JButton button = (JButtton) e.getSource();
button.setText("x");
button.setEnabled(false);
使用==
检查字符串相等性是真的坏主意。因此,我建议您将所有b1.getText() == b2.getText()
替换为b1.getText().equals(b2.getText())
。请参阅this链接。