2016-10-02 54 views
2

我想在遊戲結束時提示; 如果我想再玩一次。 並且輸入Y/N:退出遊戲或重複遊戲。我如何實現再次播放功能?

我如何以最有效的方式解決這個問題?

編輯:描述資源路徑位置類型 方法playAgain()是未定義的類型主要Main.java/ScaredyCat/SRC/SE/gruppfisk/scaredycat /主線路12的Java問題

public boolean playAgain(Scanner keyboard) { 
    try { 
     System.out.print("Do you want to play again? (Y/N): "); 
     String reply = keyboard.nextLine(); 
     return reply.equalsIgnoreCase("Y"); 
    } finally { 
     keyboard.close(); 

回答

2

添加一個循環,你的主要方法:

public static void main(String[] args) { 
    do { 
     ScaredyCat game = new ScaredyCat(new Player("Urkel",23),new Player("Steve", 18)); 
     game.play(); 
    } while(playAgain()); 
} 

private static boolean playAgain() { 
    Scanner keyboard = new Scanner(System.in); 
    System.out.print("Play again? (Y/N): "); 
    String replay = keyboard.nextLine(); 
    return replay.equals("Y"); 
} 
+0

謝謝! 如果你要用一種單獨的方法做到這一點。就像我在編輯說明中給出的一半例子。是否有可能使playAgain方法在特定行後執行,或者System.out.printf(「%s is the winner!」發生? – eximp

+0

@eximp是的,你可以這樣做,這實際上是一個好主意。看看我的編輯,我沒有測試它,但它應該工作。另外,請記住upvote/accept =] – nhouser9

+0

不完全適合它的工作。嘗試了你的版本 – eximp

0

請注意,流或讀者應該在同一範圍/模塊中被關閉,它在創建你的情況,Scanner不應裏面playAgain()關閉,因爲,它是輸入參數參考API。

可以實現循環以檢查用戶是否想要再次播放。通常使用do-while循環,因爲它會在檢查條件之前運行一次。使用其他循環將需要一個默認爲true的變量。

使用do-while解決方案:

boolean playAgain = false; 
do{ 
    Game game = new Game(); 
    game.play();  
    playAgain = ScaredyCat.playAgain(); 
}while(playAgain); 

使用while解決方案:

boolean playAgain = true; 
while(playAgain){ 
    Game game = new Game(); 
    game.play();  
    playAgain = ScaredyCat.playAgain(); 
} 

加入ScaredyCat.java

以下3210

您在編輯部分中提到的例外意味着playAgain()方法在您的Main.java文件中不可用。另外,如果您在main(String[])方法中使用此方法,則它必須是static,如果是non-static,它必須屬於某個對象,並且必須由對象引用調用。方法建議nhouser9應該工作。

+0

無論我做什麼,它都無法在Main中工作。 如果可能的話,我寧願在Main之外。 謝謝! – eximp

+0

@eximp爲什麼它不能在Main.java中工作。這是一個獨立的功能,而不是遊戲。 –

+0

描述\t資源\t路徑\t位置\t類型 方法playAgain()未定義類型Main \t Main。java \t/ScaredyCat/src/se/gruppfisk/scaredycat/main \t line 13 \t Java問題 編輯:我的意思是在Main之外。我的錯。 第13行:playAgain = playAgain(); – eximp