Вероятно, было бы целесообразно создать объект, который контролирует текущую «сцену», и переустанавливать этот объект каждый раз при перезапуске игры. В любом случае, вот ваш модифицированный код, который должен работать:
public class EnemiesAttackApp extends Application {
@Override
public void start (Stage primaryStage) throws Exception {
primaryStage.setScene(new Scene(createContent()));
primaryStage.setTitle("Enemies Attack!");
primaryStage.show();
}
//System objects
Scanner in = new Scanner(System.in);
Random rand = new Random();
//Game variables
String[] enemies = {"Skeleton", "Zombie", "Warrior", "Assassin"};
int enemyAttackDamage = 25;
int enemyHealth = 0;
String enemy = null;
// Player variables
int health = 0;
private void initGame() {
enemyHealth = 0 + rand.nextInt(75);
enemy = enemies[rand.nextInt(enemies.length)];
health = 100;
println("Welcome to Enemies Attack v 0.1");
println("-------------------------------");
if (enemyHealth > 0) {
println("\t# " + enemy + " appeared! #\n");
println("\tYOUR HP: " + health);
println("\t" + enemy + "'s HP: " + enemyHealth);
println("\n\tWhat would you like to do?");
println("\t1. Attack enemy");
println("\t2. Drink potion");
println("\t3. Run");
initCommands();
}
}
private void runAway() {
println("\t You ran away from the " + enemy + "!");
initGame();
}
}
По существу, следует логи c, чтобы иметь метод (в моем примере игра init), который сбрасывает все значения.