2016-11-14 71 views
0

我正在創建一個程序,允許您玩類似紙張,剪刀石的遊戲。將while循環合併到程序中

該遊戲的工作原理,但我試圖將一個循環插入代碼,將要求用戶是否希望繼續玩。

如果是,它會要求他們另外輸入。 如果沒有,程序會簡單地表述爲「謝謝你玩」

下面的代碼:

import java.util.Scanner; 
import java.util.Random; 
public class OkekpeJMoropinzee 
{ 
    public static void main(String[]args) 
    { 

    String yourMove; 
    String compMove; 


    int compInt; 





    String[] characters = {"Monkey","Robot","Pirate","Ninja","Zombie"}; 

    Scanner input = new Scanner(System.in); 
    Random rand = new Random(6); 

    compInt = rand.nextInt(5)+1; 

    if (compInt == 1) 
     compMove = "Monkey"; 
    else if (compInt == 2) 
     compMove = "Robot"; 
    else if (compInt == 3) 
     compMove = "Pirate"; 
    else if (compInt == 4) 
     compMove = "Ninja"; 
    else if (compInt == 5) 
     compMove = "Zombie"; 




    System.out.println("What do you choose?: "); 
    yourMove = input.next(); 
    //MONKEY 
    if(yourMove == "Monkey" || compInt == 1) 
     System.out.println("Tie"); 
    else if (yourMove== "Monkey" || compInt == 2) 
     System.out.println("You Win! Monkey Unplugs Robot!"); 
    else if (yourMove=="Monkey" || compInt == 3) 
     System.out.println("You Lose! Pirate Skewers Monkey!"); 
    else if (yourMove == "Monkey" || compInt==4) 
     System.out.println("You Win! Monkey fools Ninja!"); 
    else if (yourMove== "Monkey" || compInt==5) 
     System.out.println("You Lose! Zombie savages monkey!"); 

    //RoBOT 
    else if(yourMove == "Robot" || compInt == 2) 
     System.out.println("Tie"); 
    else if (yourMove== "Robot" || compInt == 1) 
     System.out.println("You Lose! Monkey Unplugs Robot!"); 
    else if (yourMove=="Robot" || compInt == 3) 
     System.out.println("You Lose! Pirate Drowns Robot!!"); 
    else if (yourMove == "Robot" || compInt==4) 
     System.out.println("You Win! Robot Chokes Ninja"); 
    else if (yourMove== "Robot" || compInt==5) 
     System.out.println("You win! Robot Crushes Zombie!"); 

    //PIRATE 
    else if(yourMove == "Pirate" || compInt == 3) 
     System.out.println("Tie"); 
    else if (yourMove== "Pirate" || compInt == 1) 
     System.out.println("You Win! Pirate Skewers Monkey!"); 
    else if (yourMove=="Pirate" || compInt == 2) 
     System.out.println("You Win! Pirate Drowns Robot!"); 
    else if (yourMove == "Pirate" || compInt==4) 
     System.out.println("You Lose! Ninja Karate Chops Pirate!"); 
    else if (yourMove== "Pirate" || compInt==5) 
     System.out.println("You Lose! Zombie Eats Pirate!"); 

    //NINJA 
    else if(yourMove == "Ninja" || compInt == 4) 
     System.out.println("Tie"); 
    else if (yourMove== "Ninja" || compInt == 1) 
     System.out.println("You Lose! Monkey Fools Ninja!"); 
    else if (yourMove=="Ninja" || compInt == 2) 
     System.out.println("You Lose! Robot Chokes Ninja!"); 
    else if (yourMove == "Ninja" || compInt==3) 
     System.out.println("You Win! Ninja Karate Chops Pirate!"); 
    else if (yourMove== "Ninja" || compInt==5) 
     System.out.println("You Win! Ninja Decapitates Zombie!"); 

    //ZOMBIE 
    else if(yourMove == "Zombie" || compInt == 5) 
     System.out.println("Tie"); 
    else if (yourMove== "Zombie" || compInt == 1) 
     System.out.println("You Win! Zombie Savages Monkey!"); 
    else if (yourMove=="Zombie" || compInt == 2) 
     System.out.println("You Lose! Robot Crushes Zombie!"); 
    else if (yourMove == "Zombie" || compInt==3) 
     System.out.println("You Win! Zombie Eats Pirate!"); 
    else if (yourMove== "Zombie" || compInt==4) 
     System.out.println("You Lose! Ninja Decapitates Zombie!"); 
    } 
} 

回答

0

嗯......說實話這裏。你的代碼實際上不起作用。我的意思是,它運行,但它絕對不會正確執行遊戲。

您的電腦遊戲角色選擇的隨機生成器將無法正常工作。你需要這樣做:

Random rand = new Random(); 
compInt = rand.nextInt(5)+1; 

離開rand的初始化6。

您所有IF和IF/ELSE語句的條件內的邏輯已設置,以便任何用戶輸入在任何時候都不會檢查MONKEY遊戲角色,這是因爲您使用OR(||)運算符的AND(& &)運算符。你的方式有它設置,如果計算機選擇機器人和用戶選擇的殭屍則條件包含在:

else if (yourMove == "Monkey" || compInt == 2) { 
    System.out.println("You Win! Monkey Unplugs Robot!"); 
} 

將永遠迴響真實,顯示消息:

You Win! Monkey Unplugs Robot! 

即使用戶輸入殭屍。請記住......條件基本上被設置爲或者哪一個正是你不想要的。你希望這兩個條件都是真的,所以你需要使用AND(& &)運算符。

除此之外:

yourMove == "Monkey" 

總會給意想不到的結果和這裏的why。使用String.equals()方法來代替,一樣的東西:

yourMove.equals("Monkey") 

你聲明爲一個字符串數組變量中的字符尚未無處你利用了陣。爲什麼甚至打擾。只是使字符變量空格分隔字符串,並利用它來查看用戶是否確實已經在遊戲內提供的字符,例如:

String characters = "Monkey Robot Pirate Ninja Zombie"; 

yourMove = ""; 
while (yourMove.equals("")) { 
    System.out.println("What do you choose? --> "); 
    yourMove = input.nextLine().toLowerCase(); 
    if (yourMove.equals("quit")) { 
     System.out.println("Thanks for playing. Bye Bye"); 
     System.exit(0); 
    } 
    if (!characters.toLowerCase().contains(yourMove) || yourMove.equals("")) { 
     System.out.println("You entered an invalid Game Character! Try again...\n"); 
     continue; 
    } 
} 

在任何情況下,這裏是一個完整的工作遊戲:

package okekpejmoropinzee; 

import java.util.Random; 
import java.util.Scanner; 

public class OkekpeJMoropinzee { 
    static boolean playAgain = true; 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 


     while (playAgain == true) { 
      playGame(input); 
     } 

     System.out.println("Thanks for playing"); 
     input.close(); 
    } 

    private static void playGame(Scanner input) { 
     String yourMove = "", compMove = ""; 
     int compInt = 0; 
     String gameCharacters = "Monkey Robot Pirate Ninja Zombie"; 

     Random rand = new Random(); 
     compInt = rand.nextInt(5)+1; 

     if (compInt == 1) { compMove = "Monkey"; } 
     else if (compInt == 2) { compMove = "Robot"; } 
     else if (compInt == 3) { compMove = "Pirate"; } 
     else if (compInt == 4) { compMove = "Ninja"; } 
     else if (compInt == 5) { compMove = "Zombie"; } 
     System.out.println(compMove + " --- " + compInt); 

     yourMove = ""; 
     while (yourMove.equals("")) { 
      System.out.println("What do you choose? --> "); 
      yourMove = input.nextLine().toLowerCase(); 
      if (yourMove.equals("quit")) { 
       System.out.println("Thanks for playing. Bye Bye"); 
       System.exit(0); 
      } 
      if (!gameCharacters.toLowerCase().contains(yourMove) || yourMove.equals("")) { 
       System.out.println("You entered an invalid Game Character! Try again...\n"); 
       continue; 
      } 
     } 

     //MONKEY 
     if (yourMove.equals("monkey") && compInt == 1) { 
      System.out.println("Tie"); 
     } 
     else if (yourMove.equals("monkey") && compInt == 2) { 
      System.out.println("You Win! Monkey Unplugs Robot!"); 
     } 
     else if (yourMove.equals("monkey") && compInt == 3) { 
      System.out.println("You Lose! Pirate Skewers Monkey!"); 
     } 
     else if (yourMove.equals("monkey") && compInt == 4) { 
      System.out.println("You Win! Monkey fools Ninja!"); 
     } 
     else if (yourMove.equals("monkey") && compInt == 5) { 
      System.out.println("You Lose! Zombie savages monkey!"); 
     } 

     //ROBOT 
     else if (yourMove.equals("robot") && compInt == 2) { 
      System.out.println("Tie"); 
     } 
     else if (yourMove.equals("robot") && compInt == 1) { 
      System.out.println("You Lose! Monkey Unplugs Robot!"); 
     } 
     else if (yourMove.equals("robot") && compInt == 3) { 
      System.out.println("You Lose! Pirate Drowns Robot!!"); 
     } 
     else if (yourMove.equals("robot") && compInt == 4) { 
      System.out.println("You Win! Robot Chokes Ninja"); 
     } 
     else if (yourMove.equals("robot") && compInt == 5) { 
      System.out.println("You win! Robot Crushes Zombie!"); 
     } 

     //PIRATE 
     else if (yourMove.equals("pirate") && compInt == 3) { 
      System.out.println("Tie"); 
     } 
     else if (yourMove.equals("pirate") && compInt == 1) { 
      System.out.println("You Win! Pirate Skewers Monkey!"); 
     } 
     else if (yourMove.equals("pirate") && compInt == 2) { 
      System.out.println("You Win! Pirate Drowns Robot!"); 
     } 
     else if (yourMove.equals("pirate") && compInt == 4) { 
      System.out.println("You Lose! Ninja Karate Chops Pirate!"); 
     } 
     else if (yourMove.equals("pirate") && compInt == 5) { 
      System.out.println("You Lose! Zombie Eats Pirate!"); 
     } 

     //NINJA 
     else if(yourMove.equals("ninja") && compInt == 4) { 
      System.out.println("Tie"); 
     } 
     else if (yourMove.equals("ninja") && compInt == 1) { 
      System.out.println("You Lose! Monkey Fools Ninja!"); 
     } 
     else if (yourMove.equals("ninja") && compInt == 2) { 
      System.out.println("You Lose! Robot Chokes Ninja!"); 
     } 
     else if (yourMove.equals("ninja") && compInt == 3) { 
      System.out.println("You Win! Ninja Karate Chops Pirate!"); 
     } 
     else if (yourMove.equals("ninja") && compInt == 5) { 
      System.out.println("You Win! Ninja Decapitates Zombie!"); 
     } 

     //ZOMBIE 
     else if(yourMove.equals("zombie") && compInt == 5) { 
      System.out.println("Tie"); 
     } 
     else if (yourMove.equals("zombie") && compInt == 1) { 
      System.out.println("You Win! Zombie Savages Monkey!"); 
     } 
     else if (yourMove.equals("zombie") && compInt == 2) { 
      System.out.println("You Lose! Robot Crushes Zombie!"); 
     } 
     else if (yourMove.equals("zombie") && compInt==3) { 
      System.out.println("You Win! Zombie Eats Pirate!"); 
     } 
     else if (yourMove.equals("zombie") && compInt==4) { 
      System.out.println("You Lose! Ninja Decapitates Zombie!"); 
     } 

     //Ask if User wants to play the game again... 
     String playMore = ""; 
     while (!playMore.equals("y") && !playMore.equals("n")) { 
      System.out.println("\nDo you want to play another game? (y/n) "); 
      playMore = input.nextLine().toLowerCase(); 
     } 
     if (playMore.equals("n")) { playAgain = false; } 
    } 
} 
+0

哇,這是非常有益的。謝謝! 我確實認爲我的代碼正在工作,直到我真的試圖播放它,它沒有工作,哈哈。 謝謝你的幫助 –

1

你可以把整個邏輯裏面做,而循環。條件將是如果輸入的字符是=='y'或'Y'。僞代碼應該是:

char choice='n'; 
do 
{ 
    < Insert Game logic here > 

    System.out.println("Do you wanna continue? Enter y or Y for Yes")' 
    choice = <obtain input using Scanner here>; 
} 
while(choice=='y'||choice=='Y'); 

System.out.println("Thanks for Playing"); 
0

你可以做這樣的事情:

import java.util.Scanner; 
import java.util.Random; 
public class OkekpeJMoropinzee 
{ 
    public static void main(String[]args) 
    { 
     String playAgain; 
    do{ 
     String yourMove; 
     String compMove; 


     int compInt; 





     String[] characters = {"Monkey","Robot","Pirate","Ninja","Zombie"}; 

     Scanner input = new Scanner(System.in); 
     Random rand = new Random(6); 

     compInt = rand.nextInt(5)+1; 

     if (compInt == 1) 
      compMove = "Monkey"; 
     else if (compInt == 2) 
      compMove = "Robot"; 
     else if (compInt == 3) 
      compMove = "Pirate"; 
     else if (compInt == 4) 
      compMove = "Ninja"; 
     else if (compInt == 5) 
      compMove = "Zombie"; 




     System.out.println("What do you choose?: "); 
     yourMove = input.next(); 
     //MONKEY 
     if(yourMove == "Monkey" || compInt == 1) 
      System.out.println("Tie"); 
     else if (yourMove== "Monkey" || compInt == 2) 
      System.out.println("You Win! Monkey Unplugs Robot!"); 
     else if (yourMove=="Monkey" || compInt == 3) 
      System.out.println("You Lose! Pirate Skewers Monkey!"); 
     else if (yourMove == "Monkey" || compInt==4) 
      System.out.println("You Win! Monkey fools Ninja!"); 
     else if (yourMove== "Monkey" || compInt==5) 
      System.out.println("You Lose! Zombie savages monkey!"); 

     //RoBOT 
     else if(yourMove == "Robot" || compInt == 2) 
      System.out.println("Tie"); 
     else if (yourMove== "Robot" || compInt == 1) 
      System.out.println("You Lose! Monkey Unplugs Robot!"); 
     else if (yourMove=="Robot" || compInt == 3) 
      System.out.println("You Lose! Pirate Drowns Robot!!"); 
     else if (yourMove == "Robot" || compInt==4) 
      System.out.println("You Win! Robot Chokes Ninja"); 
     else if (yourMove== "Robot" || compInt==5) 
      System.out.println("You win! Robot Crushes Zombie!"); 

     //PIRATE 
     else if(yourMove == "Pirate" || compInt == 3) 
      System.out.println("Tie"); 
     else if (yourMove== "Pirate" || compInt == 1) 
      System.out.println("You Win! Pirate Skewers Monkey!"); 
     else if (yourMove=="Pirate" || compInt == 2) 
      System.out.println("You Win! Pirate Drowns Robot!"); 
     else if (yourMove == "Pirate" || compInt==4) 
      System.out.println("You Lose! Ninja Karate Chops Pirate!"); 
     else if (yourMove== "Pirate" || compInt==5) 
      System.out.println("You Lose! Zombie Eats Pirate!"); 

     //NINJA 
     else if(yourMove == "Ninja" || compInt == 4) 
      System.out.println("Tie"); 
     else if (yourMove== "Ninja" || compInt == 1) 
      System.out.println("You Lose! Monkey Fools Ninja!"); 
     else if (yourMove=="Ninja" || compInt == 2) 
      System.out.println("You Lose! Robot Chokes Ninja!"); 
     else if (yourMove == "Ninja" || compInt==3) 
      System.out.println("You Win! Ninja Karate Chops Pirate!"); 
     else if (yourMove== "Ninja" || compInt==5) 
      System.out.println("You Win! Ninja Decapitates Zombie!"); 

     //ZOMBIE 
     else if(yourMove == "Zombie" || compInt == 5) 
      System.out.println("Tie"); 
     else if (yourMove== "Zombie" || compInt == 1) 
      System.out.println("You Win! Zombie Savages Monkey!"); 
     else if (yourMove=="Zombie" || compInt == 2) 
      System.out.println("You Lose! Robot Crushes Zombie!"); 
     else if (yourMove == "Zombie" || compInt==3) 
      System.out.println("You Win! Zombie Eats Pirate!"); 
     else if (yourMove== "Zombie" || compInt==4) 
      System.out.println("You Lose! Ninja Decapitates Zombie!"); 

     System.out.println("Would you like to play again? Type yes to play again."); 
     playAgain = input.next(); 
     } while(playAgain.equals("yes")); 
    } 

} 
+0

謝謝,完美的工作 –

+0

我的榮幸。很高興我可以幫助:) – BlackHatSamurai