【发布时间】:2018-03-11 20:34:42
【问题描述】:
我目前被困在一个简单的程序上,它有一个 Guess 和 Reset 按钮,用于猜测 1-100 之间的数字。用户有 5 个回合。我目前的问题是我的 Reset 按钮无法正常工作。当它被按下时,它不会完全生成一个新游戏,而是只生成一个新数字,但是当按下 Guess 时,会再次使用生成的原始数字。
我将包含一些我觉得我犯了大逻辑错误的代码 sn-ps。
所以只有我的计数器和初始随机数变量,然后是 Guess 和 Reset 按钮
int counter = 0;
int num = genRan();
/////////////////////////////////////
guessButton.setOnAction(e -> {
int numToGuess = num;
gameSetUp(guessField, counter, numToGuess);
});
//////////////////////////////////////////////////////////
resetButton.setOnAction(e -> {
System.out.println("Generating new game...");
int newNum = genRan();
int newCounter = 0;
gameSetUp(guessField, newCounter, newNum);
});
我的随机数生成器。
public int genRan() {
Random rand = new Random();
int numToGuess = rand.nextInt(100) + 1;
System.out.println("number is" + numToGuess);
return numToGuess;
}
而我认为这一切都错了......
public void gameSetUp(TextField guessField, int counter, int num) {
int numToGuess = num, maxGuesses = 5;
try {
if (counter != 5) {
int guessNum = Integer.valueOf(guessField.getText());
if (guessNum == numToGuess) {
System.out.println("Correct!");
} else if (guessNum < numToGuess) {
counter++;
System.out.println("You guessed " + guessNum + ", which was too low. " + (maxGuesses - counter)
+ " guesses left!");
} else if (guessNum > numToGuess) {
counter++;
System.out.println("You guessed " + guessNum + ", which was too high. " + (maxGuesses - counter)
+ " guesses left!");
}
}
} finally {
if (counter == maxGuesses) {
System.out.println("\nGame Over...");
}
}
}
如果有任何帮助,我将不胜感激,谢谢。
【问题讨论】:
-
您可以在一种方法中实现您的游戏玩法和游戏设置。游戏设置通常只处理游戏的初始状态。
-
您的gamePlay代码应该在
guessButton'sonAction中。您的 gameSetup 代码应位于resetButton'sonAction中。 -
您只能在
gameSetUp中分配局部变量。您也不能在任何调用gameSetUp的事件处理程序中修改counter和numToGuess。这意味着游戏的状态永远不会改变......