Создание Java-игры Pig - PullRequest
       2

Создание Java-игры Pig

0 голосов
/ 20 февраля 2019

Я нахожусь в процессе создания PIG java-игры, каждый игрок получает бросок костей, и каждый ход добавляется к счету, и первый игрок, получивший 100, становится победителем, игроки могут выбрать бросок костей илиудерживайте, если игрок бросает и приземляется на 1, его ход заканчивается и все очки равны 0, если игрок решает удерживать все очки, набранные в ходе хода, добавляются в его школу.

Однако у меня есть некоторыепроблемы, которые я не могу решить, когда пользователь бросает 1, и его ход заканчивается и очки не начисляются, вместо этого программа не выдает никаких результатов и не продолжает играть (переходя в бесконечный цикл ??).

edit: с тех пор я смог решить предыдущие проблемы, однако теперь я получаю бесконечный цикл только при запуске программы, и я не понимаю, почему. Также кто-нибудь знает, как сделать игру воспроизводимой после завершения игры?

ниже мой новый код:

//Callum Fawcett
//Game of Pig
//Create: 20/02/2019
//Version 0.1

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

public class game2
{
 public static void main(String[] args)
   {
      int playerScores = 0;
      int playerTotal = 0;
      int computerScores = 0;
      int computerTotal = 0;
      int dice;
      boolean gameOver = false;
      boolean turnOver = false;
      char repeat;
      String input;   
      Scanner keyboard  = new Scanner(System.in);

  Random rand = new Random();

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

  while (gameOver == false)
  {    
     do
     {
        dice = rand.nextInt(6) + 1;
        System.out.println("You rolled: " + dice);
        if (dice == 1)
        {
           playerScores = 0;
           System.out.print("You lose your turn! ");
           System.out.println("Your total is " + playerTotal);
           turnOver = true;
        }
        else
        {
           playerScores += dice;
           System.out.print("Your turn score is " +
                            playerScores);
           System.out.println(" If you hold you will have " +
                              playerScores + " points.");
           System.out.println("Enter 'r' to roll " +
                              "again, 'h' to hold.");
           input = keyboard.nextLine();
           repeat = input.charAt(0);

           if (repeat == 'h')

              break;                               
        }
     } while(turnOver == false || dice != 1);
        playerTotal += playerScores;
        System.out.println("Your score is " +
                           playerTotal);   
        playerScores = 0;
     if (playerTotal >= 100)
     {
        System.out.println("YOU WIN!");
        gameOver = true;

     } 

     System.out.println();
     System.out.println("It is the computer's turn.");
     do
     {
        dice = rand.nextInt(6) + 1;
        System.out.println("The computer rolled: " +
                           dice);
        if(dice == 1)
        {
           computerScores = 0;
           System.out.print("The computer lost its turn!");
           System.out.print(" Computer total is " + 
                            computerTotal);
           turnOver = false;

        }
        else
        {
           computerScores += dice;
           if(computerScores >= 20 || (computerTotal +
              computerScores) >= 100)
              System.out.println("The computer holds");
              turnOver = false;
        }
     } while (dice != 1 || computerScores < 20);

        computerTotal += computerScores;
        System.out.println("The computer's score is " +
                           computerTotal + "\n");
        computerScores = 0;
     if (computerTotal >= 100)
     {
        System.out.println("THE COMPUTER WINS!");
        gameOver = true;

     }
     if(keyboard!=null)
     keyboard.close();

   }
 }
}

это вывод, который я получаю:

TheRealFawcett:lab5 therealfawcett$ java game2
Welcome to the game of Pig!

You rolled: 6
Your turn score is 6 If you hold you will have 6 points.
Enter 'r' to roll again, 'h' to hold.
r
You rolled: 4
Your turn score is 10 If you hold you will have 10 points.
Enter 'r' to roll again, 'h' to hold.
r
You rolled: 1
You lose your turn! Your total is 0
Your score is 0

It is the computer's turn.
The computer rolled: 2
The computer rolled: 2
The computer rolled: 1
The computer lost its turn! Computer total is 0The computer's score is 
0

You rolled: 2
Your turn score is 2 If you hold you will have 2 points.
Enter 'r' to roll again, 'h' to hold.
Exception in thread "main" java.lang.IllegalStateException: Scanner 
closed
at java.base/java.util.Scanner.ensureOpen(Scanner.java:1150)
at java.base/java.util.Scanner.findWithinHorizon(Scanner.java:1781)
at java.base/java.util.Scanner.nextLine(Scanner.java:1649)
at game2.main(game2.java:50)
TheRealFawcett:lab5 therealfawcett$ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...