我正在为Java构建游戏,并且已经归结为最后部分之一。还有其他需要解决的问题,这些问题很容易解决。虽然我无法弄清楚一个问题,那就是每次运行游戏后我都无法得到新的随机数字。在Java中猜测游戏获取新的随机数
例如,如果没有人猜测数字(1-20)随机产生的数字比游戏重复的数字。在此期间你正在玩2台电脑,并且它们的数字也是随机组成的(再有1-20个值)。
下面是一些在Player类的代码中我做了
import java.util.Scanner;
import java.util.Random;
public class Player {
private double currentGuess = 0;
private String firstName;
private boolean isCorrect;
Scanner myScanner = new Scanner(System.in);
public Player() {
}
public double autoGuess() {
Random randomNumber = new Random();
double number = randomNumber.nextInt(20) + 1;
return number;
}
这里是我GuessGame类,这是那里的行动实际发生。我无法弄清楚为什么当我打电话给autoGuess方法(从玩家类)时,我无法在每场比赛后得到新的随机数字,导致没有人猜测正确的数字。随机生成要猜测的数字(WINNING_NUMBER)也是如此,每次新游戏后仍然保持不变。以下是我的GuessGame类的一些代码。
import java.util.Random;
public class GuessGame {
Player player1 = new Player();
Player player2 = new Player();
Player player3 = new Player();
double player2Guess = player2.autoGuess();
double player3Guess = player3.autoGuess();
int numberOfTries = 0;
public double generateWinningNumber() {
Random randomGenerate = new Random();
double randomNumber = randomGenerate.nextInt(20) + 1;
return randomNumber;
}
private final double WINNING_NUMBER = generateWinningNumber();
public void startGame() {
System.out.println("VM: Welcome we are going to play a number guessing game. I'm (the JVM)\n"
+ "going to randomly pick a number between 0 and 20. You and the 2 other\n"
+ "computer-generated players are going to try to guess that number. The game\n"
+ "will end when at least one of the players correctly guesses the number.\n");
System.out.println(WINNING_NUMBER);
System.out.print("What is your name? ");
String player1Name = player1.readName();
while (player1.isCorrect() == false)
{
System.out.print(player1Name + ", enter your guess: ");
player1.readGuess();
player2.autoGuess();
player3.autoGuess();
numberOfTries++;
if (player1.getCurrentGuess() == WINNING_NUMBER || player2Guess == WINNING_NUMBER || player3Guess == WINNING_NUMBER)
{
player1.setCorrect(true);
displayGuesses();
determineWinner();
}
else
{
displayGuesses();
displayHints();
System.out.println("No one guessed the number.\nPlayers will need to guess again.\n");
System.out.println("The winning number was: " + WINNING_NUMBER);
generateWinningNumber();
}
}
}
public void displayGuesses() {
System.out.print("Player 2's guess is: " + player2Guess + "\n");
System.out.print("Player 3's guess is: " + player3Guess + "\n\n");
}
还有更多的问题需要解决,但我试图解决这个问题。我有我的驾驶员课程开始这个游戏,也知道我需要将我的号码四舍五入到Ints,所以没有小数位。而且,所有提示方法都指的是,如果陈述告诉你,如果你是热的,温暖的或冷的。这运行得很好。只需要一些帮助,在我的while语句每次新的不成功的游戏之后,弄清楚如何获得一个新的随机数。
...并在循环外部创建Random()对象。 – 2014-10-28 19:40:35
要添加到Mike说的话,您的autoGuess()也会返回一个double值,并且不会更改任何值。而不是以double形式返回变量号,函数应该将currentGuess设置为变量号并返回void。 – user1521640 2014-10-28 19:43:15
@LeeDanielCrocker不是已经有了吗?随机对象是在不同的方法中创建的,所以它们不会被重用。 – 2014-10-28 19:43:39