首页 > 解决方案 > 重置游戏以在java中重新开始

问题描述

我在用户和计算机之间创建了一个循环 10 轮的骰子游戏——但如果其中一个游戏轮是平局——那么它会询问你是否想再次玩并重新开始游戏。我在最后一部分遇到问题,因为游戏现在随机迭代。有什么建议么?

import java.util.Random;
import java.util.Scanner;
public class Lab2 {
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    System.out.println("User vs. Computer Dice Game");

    boolean Correct = false;
    boolean Replay = false;

    while(Replay == true) {

    }
    while(Correct == false) {

        System.out.println("Do you want to play again? ");
        String a = in.nextLine();
        System.out.print(a);
        if (a.equals("yes")) {
            for(int i =1; i<11; i++) {

                Random rand = new Random();
                int usernum = rand.nextInt(6)+1;
                System.out.println("User rolled: "+usernum);
                Random rand2 = new Random();
                int computernum = rand2.nextInt(6)+1;
                System.out.println("Computer rolled: "+computernum);

                if (usernum > computernum) {
                    System.out.println("User wins");
                    System.out.println();
                }if (computernum > usernum) {
                    System.out.println("Computer wins");
                    System.out.println();
                }
                if(usernum == computernum) {
                    System.out.println("It\'s a tie!");
                    System.out.println("Do you want to play again? (Y/N) ");
                    System.out.println();
                    if (a.equalsIgnoreCase("N")){
                        Replay = true;
                    }
                    else {
                        Correct = false;
                    }
                } 
            } 
        }
        System.out.println();
        }
    }
}

标签: java

解决方案


一些注意事项:

  • 你从来没有设置正确=真。
  • 一旦进入“while (Correct==false)”循环,就永远不会测试 Replay。
  • 创建 rand2 没有意义。只需重用rand1。

主循环有“for (int i=1;i<11;i++)”。
在那个循环内部,它是一个平局,你问你是否想再玩一次,但没有什么可以结束循环,所以内部 for 循环将继续播放,直到你打到 11。

您可以在中止 for 循环时添加一个 break 语句。

事实上,您最好中止循环,然后在 while 循环的顶部再次提问:

while(Correct == false) {
    System.out.println("Do you want to play again? ");
    String a = in.nextLine();
    System.out.print(a);
    if (a.equals("yes")) {
        for (int i = 1; i < 11; i++) {
            Random rand = new Random();
            int usernum = rand.nextInt(6) + 1;
            System.out.println("User rolled: " + usernum);
            Random rand2 = new Random();
            int computernum = rand2.nextInt(6) + 1;
            System.out.println("Computer rolled: " + computernum);

            if (usernum > computernum) {
                System.out.println("User wins");
                System.out.println();
            }
            if (computernum > usernum) {
                System.out.println("Computer wins");
                System.out.println();
            }
            if (usernum == computernum) {
                System.out.println("It's a tie!");

                // Exit early from the for loop:
                break;
            }
        }
    }
    else
    {
        Correct = true;
    }
}

推荐阅读