2016-01-17 36 views
1

我是一名Java初學者,正在爲練習做一個基本的遊戲。我快完成了,但我還有一個障礙需要克服。如何從方法重新啓動程序

當問到是否結束遊戲時,我想知道如何在作爲選擇後在game()方法上製作遊戲循環。

這裏是我的代碼:

private static void game() //game method 
{ 
    //... 

    int play = JOptionPane.showOptionDialog(null 
        ,"End" 
        , "Do you want to play again?" 
        , JOptionPane.PLAIN_MESSAGE 
        ,JOptionPane.DEFAULT_OPTION 
        , null 
        , again 
        , again[1]); 
    //end of game 

    if (play == 0) 
     System.exit(0);//exit 
    else 
     /* what do I put here to restart the program in the same method(game()) 
      after pressing the No button on the JOptionPane??? */   
     System.out.println("Service not available"); 

給任何人,誰可以幫助,我非常感謝你!

+3

使用'while'或'do'循環重新啓動基於用戶輸入的遊戲提取JOptionPane部分。 –

+0

鑑於你的問題是「你想再玩一次嗎?」肯定重新啓動選項應該是*是*否*否*。 – APC

回答

3

鑑於你的程序的當前狀態,在最簡單的簡單簡單可讀方法是遞歸。只需再次調用你的遊戲方法。請注意,可能存在遞歸限制,因此該循環是推薦的方法,即使它確實涉及重構您的代碼。

else{ 
    game(); 
} 

循環方法:在開始申報play和使用循環:

private static void game(){ 
    boolean play = true; 
    while (play){ 
     //... 
     //find out if user wants to play again 
     //set play to false if player doesn't want to play anymore 
    } 
} 
+1

不確定遞歸是初學者的*最簡單*選項(取決於非Java編程經驗的深度)。 – APC

+0

這解決了我的問題,,,再次調用遊戲方法! 謝謝! –

1

如果你只是想使它工作,你可以做這樣的事情:

private static void game()//game method 
{ 
    boolean exit = false; 
    while(!exit){ 
     //...int play = JOptionPane.showOptionDialog(null,"Play Again?", "Do you want to play again?", JOptionPane.PLAIN_MESSAGE,JOptionPane.DEFAULT_OPTION, null, again, again[1]); 
     //end of game 


     if (play == 0) { 
      exit = true; 
     } 

    }   
     System.exit(0);//exit 

但一個更好的更專業的方法是重構你的代碼,所以你提取遊戲邏輯並將它從用戶對話交互中分離出來。

2

game()功能代碼

int play=0; 
do{ 
game(); 
play = JOptionPane.showOptionDialog(null 
        ,"End" 
        , "Do you want to play again?" 
        , JOptionPane.PLAIN_MESSAGE 
        ,JOptionPane.DEFAULT_OPTION 
        , null 
        , again 
        , again[1]); 
}while(play); 
相關問題