首页 > 解决方案 > 如何重新启动 gui 应用程序游戏,例如再次玩

问题描述

对不起意大利面条代码!这是我的第一个gui。一般来说,编码非常新。我知道while循环可以在gui之外使用,但显然不能用于这个大声笑。所以我想知道如何在我制作的“private void runAway()”方法中重新启动我的 java 游戏?

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?    }

标签: javauser-interfacereturn

解决方案


创建一个控制当前“场景”的对象并在每次游戏重新启动时重新实例化该对象可能是明智的。无论如何,这是您修改后的代码应该可以工作:

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();
    }

}

它基本上遵循逻辑来拥有一个重置所有值的方法(在我的示例中为初始化游戏)。


推荐阅读