1

わかりましたので、ユーザー入力を使用してプレイする簡単なじゃんけんゲームをプログラムしました。ユーザーが選択肢を入力すると、ランダム関数がコンピューターを選択し、結果が生成されます。この後、プログラムは終了したため終了します。while ループを使用して、ゲームが終了すると再び開始し、ユーザーがexitまたはquitと入力するとプログラムが停止するようにします。これは、 while のようなことを言うだけで簡単に実行できます。playerGo != exit何とか。しかし、私はこれを機能させることができません。誰かが私を助けてくれますか、私はJava初心者です:)

import java.util.Scanner;   

public class RockPaperScissors{   
  public static void main(String[] args){  

    Scanner input = new Scanner(System.in);

    int compGoInt;
    String compGo;
    String playerGo;

    System.out.println("You can type 'Exit' to quit the game at any time.");
    System.out.print("Please enter your choice. Rock, Paper or Scissors: ");
    playerGo = input.nextLine();

    compGoInt = (int) (Math.random() * 3);

    switch (compGoInt){
    case 0:
        compGo = "Rock";
        break;
    case 1:
        compGo = "Paper";
        break;
    case 2:
        compGo = "Scissors";
        break;
    default:
        compGo = "Error";
        System.out.println("Error.");
        break;
    }

    if (playerGo.equals(compGo)){
        System.out.println("Computer chooses "+compGo);
        System.out.println("It's a draw!");
    }

    else if ((playerGo.equalsIgnoreCase("Rock") && compGo.equalsIgnoreCase("Scissors")) ||
            (playerGo.equalsIgnoreCase("Paper") && compGo.equalsIgnoreCase("Rock")) ||
            (playerGo.equalsIgnoreCase("Scissors") && compGo.equalsIgnoreCase("Paper"))){
        System.out.println("Computer chooses "+compGo);
        System.out.println("Player Wins!");
    }

    else if ((compGo.equalsIgnoreCase("Rock") && playerGo.equalsIgnoreCase("Scissors")) ||
            (compGo.equalsIgnoreCase("Paper") && playerGo.equalsIgnoreCase("Rock")) ||
            (compGo.equalsIgnoreCase("Scissors") && playerGo.equalsIgnoreCase("Paper"))){
        System.out.println("Computer chooses "+compGo);
        System.out.println("Computer Wins!");
    }

    else{
        System.out.println("Something has gone wrong!");
        System.out.println("Player chose "+playerGo);
        System.out.println("Computer chose "+compGo);
    }


}

}

4

3 に答える 3

0

ブール変数IsGameRunning=trueを追加できます。ログイン全体を、IsGameRunningの状態をチェックするwhileループでラップします。ユーザー入力「-1」をチェックするswitchステートメントにケースを追加し、ユーザーが入力として「-1」を入力すると、ケースはIsGameRunning変数をfalseに変更します。

シンプルで動作するはずです

于 2012-11-10T11:44:06.853 に答える
0
boolean running = true;
do{
    System.out.println("You can type 'Exit' to quit the game at any time.");
    System.out.print("Please enter your choice. Rock, Paper or Scissors: ");
    playerGo = input.nextLine();
    running = !(playerGo.equalsIgnoreCase('Exit') || playerGo.equalsIgnoreCase('Quit'));
    if(running){
       //logic
       compGoInt = (int) (Math.random() * 3);
       ...
    }
}while(running)

do while -> 入力は少なくとも 1 回要求される必要があります。

そして

if (playerGo.equals(compGo)){
     System.out.println("Computer chooses "+compGo);
     System.out.println("It's a draw!");
 }

playerGo.equals(compGo)->playerGo.equalsIgnoreCase(compGo)コードの残りの部分と同様に

于 2012-11-10T11:55:10.007 に答える
0

簡単に言えば:

while(true) {
     if(playerGo.equalsIgnoreCase("Exit")) break;
     else //GameLogic
}

ただし、そう言えば、文字入力はエラーが発生しやすいため、ユーザーに数字を選択させる必要があります。

明確にするために:

import java.util.Scanner;   

public class RockPaperScissors{   
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        int compGoInt;
        String compGo;
        String playerGo;

        while(true) {
            System.out.println("You can type 'Exit' to quit the game at any time.");
            System.out.print("Please enter your choice. Rock, Paper or Scissors: ");
            playerGo = input.nextLine();

            if(playerGo.equalsIgnoreCase("Exit")) break;    //Checks for exit condition.
            else { //GameLogic

                compGoInt = (int) (Math.random() * 3);

                switch (compGoInt){
                case 0:
                    compGo = "Rock";
                    break;
                case 1:
                    compGo = "Paper";
                    break;
                case 2:
                    compGo = "Scissors";
                    break;
                default:
                    compGo = "Error";
                    System.out.println("Error.");
                    break;
                }

                if (playerGo.equals(compGo)){
                    System.out.println("Computer chooses "+compGo);
                    System.out.println("It's a draw!");
                }

                else if ((playerGo.equalsIgnoreCase("Rock") && compGo.equalsIgnoreCase("Scissors")) ||
                        (playerGo.equalsIgnoreCase("Paper") && compGo.equalsIgnoreCase("Rock")) ||
                        (playerGo.equalsIgnoreCase("Scissors") && compGo.equalsIgnoreCase("Paper"))){
                    System.out.println("Computer chooses "+compGo);
                    System.out.println("Player Wins!");
                }

                else if ((compGo.equalsIgnoreCase("Rock") && playerGo.equalsIgnoreCase("Scissors")) ||
                        (compGo.equalsIgnoreCase("Paper") && playerGo.equalsIgnoreCase("Rock")) ||
                        (compGo.equalsIgnoreCase("Scissors") && playerGo.equalsIgnoreCase("Paper"))){
                    System.out.println("Computer chooses "+compGo);
                    System.out.println("Computer Wins!");
                }

                else{
                    System.out.println("Something has gone wrong!");
                    System.out.println("Player chose "+playerGo);
                    System.out.println("Computer chose "+compGo);
                }
            }
        }
    }
}
于 2012-11-10T11:34:23.063 に答える