2016-11-14 9 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! 

にもかかわらず、コンピュータがROBOTを選択し、ユーザーがZOMBIEを選択し、その後に含まれる条件があれば、あなたはそれが、設定した方法ユーザーがゾンビを入力しました。覚えています...条件は基本的にどちらかに設定されていますか、まさにあなたが望まないものです。両方の条件を真とし、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

関連する問題