Как перезапустить приложение gui, например, играть снова - PullRequest
0 голосов
/ 30 апреля 2020

извините за код спагетти! Это мой первый gui. Очень плохо знаком с кодированием в целом. Я знаю, что циклы можно использовать вне gui, но, очевидно, не для этого. Поэтому мне было интересно, как я могу перезапустить мою java игру с помощью метода "private void runAway ()", который я сделал?

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 + rand.nextInt(75);
String enemy = enemies[rand.nextInt(enemies.length)];

// Player variables
int health = 100; etc



 private void initGame() {
    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 + "!");

        // how do I restart the gui here?    }

1 Ответ

0 голосов
/ 30 апреля 2020

Вероятно, было бы целесообразно создать объект, который контролирует текущую «сцену», и переустанавливать этот объект каждый раз при перезапуске игры. В любом случае, вот ваш модифицированный код, который должен работать:

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), который сбрасывает все значения.

...