0

我创建了一个 java 游戏并实现了一个 GameOver 方法。这是我的游戏结束方法的代码:

public void gameOver() throws IOException {
   String message = "Game, Want to try Again?";
   String title = "Game Over";
   int reply = JOptionPane.showConfirmDialog(frame, message, title, JOptionPane.YES_NO_OPTION);
    if (reply == JOptionPane.YES_OPTION){
        new Game();
    } else {
        this.getSoundEffect().stopAllMusic();
        new Main().setVisible(true);
    }
}

我遇到的一个问题是关闭原始框架。例如,如果我单击是,游戏框架将打开,但是,它已经打开,所以我将有两个游戏实例工作。

只是为了让你们知道,我尝试了以下选项:

    frame.dispose();

    WindowEvent wev = new WindowEvent(this, WindowEvent.WINDOW_CLOSING);
    Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(wev);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

我也在考虑做一个 actionperformed 事件,但是,由于 JOptionPane 是一个 int,我无法做到。

4

1 回答 1

0

你的gameOver方法应该是这样的:

Main mMain ;
public void gameOver() throws IOException {
   String message = "Game, Want to try Again?";
   String title = "Game Over";
   int reply = JOptionPane.showConfirmDialog(frame, message, title, JOptionPane.YES_NO_OPTION);
    if (reply == JOptionPane.YES_OPTION){
        frame.dispose();
        frame.setVisible(true);
    } else {
        this.getSoundEffect().stopAllMusic();
        if(mMain==null)
        {
          mMain = new Main();
        }
        mMain.setVisible(true);
    }
}

编辑

除了所有这些,你有两个变量,frame第一个是实例变量,frame = new JFrame("Game");另一个是final JFrame frame = new JFrame("The Birds Game");你应该更改其他的变量名JFrame

于 2013-04-01T19:51:32.643 回答