2016-10-27 12 views
-3

私は現在、Intro to Javaコースの課題に取り組んでいます。私は割り当ての大半を完了しました:私は過去に作成したメソッドを使用してロック、ペーパー、はさみのゲームをリファクタリングします。私のコードが実行されるとき。ウェルカムメッセージを表示し、ユーザーの入力を促し、ユーザーの選択とCPUの選択を印刷します。 私の質問:コードを実行した後、最高の2/3ゲームを実行できるように、私のメソッドにwhileループを実装するにはどうすればいいですか?Javaメソッド - メソッドを使用してループを実装する方法

私の理解では、私はそれぞれの方法でループを使用しなければならないことを知っています。ユーザからの入力が異なって、cpuが別のランダムな動きを生成する場所。

*注:私は直接的な解決策を求めているわけではありませんが、何がこの問題の良いアプローチであるかという概念について何かを求めています。

以下

が私のコードです:

package rpsmethods; 

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

public class RPSMethods { 

    public static void displayOpeningMessage() { 
     System.out.println("Welcome to RPS Game 2.0!"); 
    } 

    public static int getUserMove() { 
     Scanner input = new Scanner(System.in); 
     System.out.print("Select scissors (0), rock (1), or scissors (2): "); 
     int choice = 0; 
      if (input.hasNextInt()) { 
       choice = input.nextInt(); 
       switch (choice) { 
        case 0: 
         System.out.println("You chose scissor!"); 
         break; 
        case 1: 
         System.out.println("You chose rock!"); 
         break; 
        case 2: 
         System.out.println("You chose paper!"); 
         break; 
        default: 
         System.out.println("Not a valid input!"); 
         System.out.print("Select scissors (0), rock (1), or scissors (2): "); 
         choice = input.nextInt(); 
        } 
      } 
     return choice; 
    } 

    public static int getCPUMove() { 
     Random rnd = new Random(); 
     int CPUMove = rnd.nextInt(3); 
     switch (CPUMove) { 
      case 0: 
       System.out.println("CPU chose scissor!"); 
       break; 
      case 1: 
       System.out.println("CPU chose rock!"); 
       break; 
      case 2: 
       System.out.println("CPU chose paper!"); 
       break; 
     } 
     return CPUMove; 
    } 

    public static void determineWinner(int user, int cpu) { 
     //User win scenarios 
     if (user == 0 && cpu == 2) { 
      System.out.println("You win, Scissors beat Paper!"); 
     } else if (user == 1 && cpu == 0) { 
      System.out.println("You win, Rock beats Scissors!"); 
     } else if (user == 2 && cpu == 1) { 
      System.out.println("You win, Paper beats Rock!"); 
     } 
     //Cpu win scenarios 
     if (user == 0 && cpu == 1) { 
      System.out.println("You lose, Rock beats Scissors!"); 
     } else if (user == 1 && cpu == 2) { 
      System.out.println("You lose, Paper beats Rock!"); 
     } else if (user == 2 && cpu == 0) { 
      System.out.println("You lose, Scissor beats Paper!"); 
     } 
     //Draw scenarios 
     if (user == 0 && cpu == 0) { 
      System.out.println("You and CPU chose Scissor, it's a draw!"); 
     } else if (user == 1 && cpu == 1) { 
      System.out.println("You and CPU chose Rock, it's a draw!"); 
     } else if (user == 2 && cpu == 2) { 
      System.out.println("You and CPU chose Paper, it's a draw!"); 
     } 
    } 

    public static void main(String[] args) { 
     displayOpeningMessage(); 
     int userWinner = getUserMove(); 
     int CpuWinner = getCPUMove(); 
     determineWinner(userWinner, CpuWinner); 
    } 
} 

答えて

0

あなたの クラスで、最終的な勝者をチェックするために、2つの静的変数を定義することができます。

static int cpuScore = 0; 
static int humanScore = 0; 

その後、あなたは内部にその変数の値を設定することができます決定者は次のようになります。

if (CPU wins) 
    cpuScore++ 
else 
    humanScore++; 

次のようなループ内の最上位のステップ:

while (cpuScore < 2 && humanScore < 2) { 
    ... 
} 
+0

ありがとうLeonardo!私はそれを理解することができました。私はあなたの助けに感謝します! –

関連する問題