2013-04-08 110 views
-1

我正在網上搜索幾個小時,我無法找到適合我的正確答案。重新啓動一個java控制檯應用程序代碼

所以..我做了一個名爲'seabattle'的遊戲 玩完那款遊戲後,控制檯出現問題再次播放。

System.out.println("Well done! " + whosturn.getName() + ". A ship down!"); 
         System.out.println("Hurraaaaaayyyyy, All boats down!!"); 
         System.out.println("Do you want to play this game again? (y/n) "); 
         input = scanner.next().toLowerCase(); 
         if(input == "y"){ 
          System.out.println("The game should start again now.."); 
          System.out.println("Butttttttt, I don't know how to..."); 
         } 

         else{ 
          System.out.println("Thank you for player Battleships!"); 
          System.out.println("See you next time ;)"); 
         } 
        } 
        else{ 
         FiredPosition.setDisplayValue('*'); 
         System.out.println("Good job, you hit a ship!"); 
         switchTurn(); 
        } 

如果用戶在控制檯中鍵入y。遊戲應該重新開始。

我讀了一些關於Main(args)或類似的東西..這對我沒有用,因爲這是另一個類。

我希望你們能幫助我?

Ciaoo

+1

製作遊戲課程的新對象並重新開始不是更簡單嗎?通過發送命令行參數而不是重新啓動進程? – nunespascal 2013-04-08 11:10:04

回答

1

如果你的主類SeaBattle目前是這樣的:

public class SeaBattle { 
public static void main(String[] args) { 
    ... 
} 
} 

你可以改變它的方式如下:

public class SeaBattle { 
private static String[] args; 
public static void run() { 
    //do the same than main() previously 
} 
public static void main(String[] args) { 
    SeaBattle.args = args; 
    run(); 
} 
} 

然後重新啓動遊戲,

SeaBattle.run(); 
1

一個簡單的答案是:無論你做什麼首先開始遊戲,當你檢測到'y'時再做一次。

但是,更深入的答案涉及使用對象來存儲和更新遊戲狀態,從您的描述中不完全清楚您是否正在執行此操作。因此,如果它是戰列艦類型的遊戲,該對象可能包含遊戲區域的二維數組,並且可能存儲一個變量來存儲它的轉向。這個對象會有一個'初始化'的方法,你可以隨機選擇船舶在遊戲區域的位置,設置它的輪值等。

你的主要方法會與這個對象進行交互,所以它會調用遊戲對象的初始化方法,並且在每輪之後它會調用另一種方法(例如'isGameFinished')來檢查遊戲是否結束。 isGameFinished方法將檢查所有的船舶是否已被銷燬,如果是,則返回true。如果它返回true,那麼將提示用戶一個新的遊戲。如果他們輸入'y​​',那麼你可以創建一個全新的遊戲狀態對象,或者再次調用遊戲狀態的初始化方法。然後你將有一個新的遊戲狀態來開始一個新的遊戲。

相關問題