[英]Number guessing game in JavaFX
我目前停留在一個簡單的程序上,該程序具有Guess and Reset按鈕,用於猜測1-100之間的數字。 給用戶5回合。 我當前的問題是我無法使“ 重置”按鈕正常工作。 當按下它時,而不是完全生成一個新游戲,它只是生成一個新數字,但是當您按下Guess時,將再次使用生成的原始數字。
我將提供一些代碼片段,讓我感覺自己在犯邏輯錯誤。
所以只有我的計數器和初始隨機數變量,然后是Guess and 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...");
}
}
}
非常感謝您的幫助。
這是一個示例應用,其中Initial State
和Game Play State
分開。
import java.util.Random;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
/**
*
* @author Sedrick
*/
public class JavaFXApplication47 extends Application {
TextField guessField = new TextField();
int counter = 0;
int numberToGuess = -1;
@Override
public void start(Stage primaryStage) {
guessField.setPromptText("Press New Game Button!");
Button btnNewGame = new Button("New Game");
btnNewGame.setOnAction(actionEvent ->{
gameSetup();
});
Button btnGuess = new Button("Guess");
btnGuess.setOnAction(actionEvent -> {
gamePlay();
});
VBox root = new VBox();
root.getChildren().addAll(guessField, new HBox(btnNewGame, btnGuess));
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
btnNewGame.requestFocus();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
public void gameSetup()
{
guessField.setPromptText("Enter your guess");//set guessField to zero
counter = 0; //set counter to zero
//set numberToGuess to a new random number
Random random = new Random();
numberToGuess = random.nextInt(100) + 1;
System.out.println("Number to guess: " + numberToGuess);
}
public void gamePlay()
{
int guess = Integer.parseInt(guessField.getText());
if(counter == 5)//Check it counter == 5
{
System.out.println("Game over! You lose!");
guessField.setPromptText("Game over! You lose!");
guessField.setText("");
}
else{
if(guess == numberToGuess)
{
System.out.println("You win");
guessField.setPromptText("Your guess of " + guess + " is correct! You win!");
guessField.setText("");
}
else if(guess < numberToGuess)
{
System.out.println("You guessed to low");
guessField.setPromptText("You guessed to low! Try again.");
guessField.setText("");
counter++;
}
else
{
System.out.println("You guessed to high! Try again.");
guessField.setPromptText("You guessed to high! Try again.");
guessField.setText("");
counter++;
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.