PIG Game Java код; Вы можете мне помочь?

public class Pig 
{
 public static void main(String[] args)
 {
  int turnScores = 0;
  int totalScores = 0;
  int turnScores2 = 0;
  int totalScores2 = 0;
  int dice;
  int dice2;
  String input = "r";
  char repeat;

  Scanner keyboard = new Scanner(System.in);

  Random randomNumbers = new Random();

  System.out.println("Welcome to the game of Pig!\n");

  while(totalScores < 100 || totalScores2 < 100)
  {
      //human's turn
      do
      {
          dice = randomNumbers.nextInt(6) + 1;

          System.out.println("You rolled: " + dice);

          if(dice == 1)
          {
              turnScores = 0;
              System.out.print("Your lose your turn!");
              System.out.println("Your Total is " + totalScores);
              break;
          }
          else
          {         
             turnScores += dice;
             System.out.print("Your turn score is " + turnScores);
             System.out.println(" and your total scores is " + totalScores);
             System.out.println("If you hold, you will have " + turnScores 
                               + " points.");
             System.out.println("Enter 'r' to roll again, 'h' to hold.");
             input = keyboard.nextLine();
             repeat = input.charAt(0);

             if(repeat == 'h')
             {
                break;
             }
          }
      }while(input.equalsIgnoreCase("r") || dice != 1);               

         totalScores += turnScores;
         System.out.println("Your scroes is " + totalScores);
      if(totalScores >= 100)
      {
          System.out.println("Your total Scores is " + totalScores);
          System.out.println("YOU WIN!");
          break;            
      }

      //computer's turn
      System.out.println();
      System.out.println("It is the compuer's turn.");
      do
      {
          dice2 = randomNumbers.nextInt(6) + 1; 
          System.out.println("The computer rolled: " + dice2);

          if(dice2 == 1)
          {
              turnScores2 = 0;
              System.out.print("The computer lost its turs!");
              System.out.println(" Computer total is " + totalScores2);
              break;             
          }
          else
          {
              turnScores2 += dice2;
              if(turnScores2 >= 20 || (totalScores2 + turnScores2) >= 100 )
              {
                  System.out.println("The computer holds");
                  break;      
              }
          }
       }while(dice2 != 1 || turnScores2 < 20);
      totalScores2 += turnScores2;
      System.out.println("The computer's scores is " + totalScores2 + "\n");

      if(totalScores2 >= 100);
      {
         System.out.println("THE COMPUTER WINS!");
         break;
      }
  }

 }
}

Это мои заявления. Я не знаю, почему мои заявления не зацикливаются. Мой результат:

Welcome to the game of Pig!

You rolled: 4
Your turn score is 4 and your total scores is 0
If you hold, you will have 4 points.
Enter 'r' to roll again, 'h' to hold.
h
Your score is 4

It is the computer's turn.
The computer rolled: 6
The computer rolled: 4
The computer rolled: 2
The computer rolled: 5
The computer rolled: 5
The computer holds
The computer's scores is 22

THE COMPUTER WINS!

2 ответа

Как я уже говорил ранее, вы ДОЛЖНЫ удалить точку с запятой в конце этого утверждения:

if(totalScores2 >= 100);

Если этот оператор не удаляется, ваш оператор if принимается как закрытый оператор off, пропускается, выполняется оператор print и затем break выполнен. На этом этапе вы находитесь в общем while цикл, разрыв просто выйдет из системы

Тем не менее, даже исправление, которое не сделает игру совершенно правильной. Это потому, что вы только перезагрузите turnScores когда бросок костей = 1. Это не правильно.

Если я получу 20 очков за ход и выберу удержание, это нужно будет сбросить до 0, иначе, когда я начну свой следующий ход, у меня уже будет 20 очков для начала.

Решение состоит в том, чтобы сбросить turnScore сразу после вывода отчета о результатах в конце хода следующим образом:

totalScores += turnScores;
System.out.println("Your scroes is " + totalScores);
turnScores = 0;

А потом для компьютера:

totalScores2 += turnScores2;
System.out.println("The computer's scores is " + totalScores2 + "\n");
turnScores2 = 0;

Это заняло у меня целую вечность if(totalScores2 >= 100); имеет ";" в конце. удалить его или иным образом, если утверждение бессмысленно

Другие вопросы по тегам