java - 如何重新启动 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? }
解决方案
创建一个控制当前“场景”的对象并在每次游戏重新启动时重新实例化该对象可能是明智的。无论如何,这是您修改后的代码应该可以工作:
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();
}
}
它基本上遵循逻辑来拥有一个重置所有值的方法(在我的示例中为初始化游戏)。
推荐阅读
- scala - 当被子类型使用时,对泛型方法的类型参数进行泛型子类型化
- java - Tomcat 负载均衡环境中的 Java 应用间通信
- javascript - 如何在不使用重置按钮的情况下重置?
- reactjs - 如何访问属于 useState 中的组件的变量?
- r - 如何使用决策树对类别中的文本进行分类
- r - 参数 'replacement' 的长度 > 1 并且只使用第一个元素
- node.js - 使用 jest.mock 方法模拟自定义节点模块
- material-ui - Uncaught TypeError: Object(...) is not a function when importing @material-ui/pickers
- javascript - Angular JS 未知提供程序错误 - $cookieStoreProvider
- python - requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8000): 最大重试次数超过了 url: /api/1/