Я нахожусь в процессе создания 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$