-3

嘿,开发人员,我想问一下如何创建 Rock、Paper、Scissor 模拟器 ;-)

4

1 回答 1

-1

这是下面的算法,适用于石头、纸、剪刀。如果您想使用图形用户界面进行开发,您必须了解 Java 小程序仅支持 JDK 8 或更低版本或 Java 中的 Swing。第 1 步:要求用户输入他们的移动。

首先,我们导入 Scanner 类来帮助我们从用户那里获得输入,方法是将 import java.util.Scanner 添加到我们程序的顶部。然后,我们创建我们的 Scanner 变量。接下来,我们打印出一条消息,要求用户使用 System.out.print() 输入石头、纸或剪刀。我们将他们的输入存储在一个名为 myMove 的字符串中。第 2 步:检查用户是否输入了有效的移动。

使用条件检查 myMove 是否等于 rock、paper 或 scissors。如果它不等于石头、纸或剪刀,那么我们可以向用户打印一条消息,说明他们的移动无效!

第三步:随机生成对手的招式。

为了随机生成对手的走法,我们可以使用 Math.random()。Math.random() 只生成一个介于 0 和 1 之间的小数,包括 0 和不包括 1。但是,由于石头、纸、剪刀有 3 种可能的移动,我们需要 3 个可能的随机数!我们应该怎么做?

提示:我们可以使用 Math.random() * 3 生成一个介于 0 和 3 之间的随机数,包括 0 和不包括 3。然后我们可以将此值转换为 int,以便我们的随机数只包括 0、1 和2 – 中间没有小数。

现在我们需要将我们的随机数(可以是 0、1 或 2)转换为字符串的对位移动,它可以是石头、纸或剪刀。

提示:使用条件语句进行以下检查:如果随机数为0,则对方的着法为rock;如果随机数为1,则对手的棋步为纸;如果随机数是2,那么对手的动作就是剪刀。

第 4 步:使用条件判断您是赢了、输了还是平了。

让我们首先检查它是否是平局。如果对手的举动与您的举动相同,则为平局。

提示:我们可以使用 .equals() 来检查两个字符串之间的相等性。如果 myMove 等于对手Move,则为平局。

我们现在可以进入 else if 并检查用户是否赢了。让我们来看看用户获胜的所有可能情况:用户有石头,对手有剪刀,用户有剪刀,对手有纸,或者用户有纸,对手有石头。

提示:

我们可以使用 && 和 || 做一个巨大的if语句!让我们把我们刚才说的内容翻译成代码:如果(myMove 等于石头而对手移动等于剪刀)或(myMove 等于剪刀而对手移动等于纸)或(myMove 等于纸而对手移动等于石头),则打印用户赢了。否则,我们可以打印用户丢失的信息。第 5 步:使用循环继续询问用户的移动。

我们希望继续要求用户输入他们的动作。我们应该怎么做?

提示:我们可以把我们所有的代码用于询问用户他们的动作,检查他们是否输入了一个有效的动作,随机生成对手的动作,并在一个 while(true) 循环中确定用户是赢、平还是输.

但现在我们的游戏将永远运行!我们如何使while循环停止?

为了停止 while(true) 循环,我们需要在循环体中使用 break 语句。我们可以询问用户是否要退出游戏。

第 6 步:检查用户是否要退出。

在我们询问用户移动的打印语句中,如果他们想结束游戏,我们也可以要求他们输入退出。在我们的 while 循环中,让我们使用 if 语句来检查用户是否输入了退出。如果用户确实键入了 quit,我们可以使用 break 语句退出 while 循环。

源代码:导入java.util.Scanner;

类 Main { public static void main(String[] args) {

    //Initialize the Scanner and print a welcome message
    Scanner in = new Scanner(System.in);        System.out.println("Welcome to Rock, Paper, Scissors!");

    //Use a while(true) loop and only break the loop if the user wants to quit
    while(true) {
    
        //Get the user's move through user input
        System.out.print("What is your move? To make a move, enter rock, paper, or scissors. To quit the game, enter quit. ");
        String myMove = in.nextLine();
        
        //Check if the user wants to quit the game
        if(myMove.equals("quit")) {
            break;
        }

        //Check if the user's move is valid (rock, paper, or scissors)
        if(!myMove.equals("rock") && !myMove.equals("paper") && !myMove.equals("scissors")) {

            System.out.println("Your move isn't valid!");
        
        } else {

            //Get a random number in between 0 and 3 and convert it to an integer so that the possibilities are 0, 1, or 2
            int rand = (int)(Math.random()*3);
            
            //Convert the random number to a string using conditionals and print the opponent's move
            String opponentMove = "";
            if(rand == 0) {
                opponentMove = "rock";
            } else if(rand == 1) {
                opponentMove = "paper";
            } else {
                opponentMove = "scissors";
            }
            System.out.println("Opponent move: " + opponentMove);
                
            //Print the results of the game: tie, lose, win
            if(myMove.equals(opponentMove)) {
                System.out.println("It's a tie!");
            } else if((myMove.equals("rock") && opponentMove.equals("scissors")) || (myMove.equals("scissors") && opponentMove.equals("paper")) || (myMove.equals("paper") && opponentMove.equals("rock"))) {
                System.out.println("You won!");
            } else {
                System.out.println("You lost!");
            }

        }

    }

    //Print a final message for the user
    System.out.println("Thanks for playing Rock, Paper, Scissors!");

} }

于 2022-01-15T06:22:03.930 回答