Как переключаться между классами, в JavaFX? - PullRequest
0 голосов
/ 02 июня 2019

У меня есть игровой шаблон, который имеет два класса в качестве своих уровней. В игре есть игрок, враги, сундуки с сокровищами и стены. Когда я запускаю программу, она успешно загружает Уровень 1. Я разработал код так, чтобы при соблюдении определенного условия уровень 2 загружался. Теперь уровень 2 загружается. Но некоторые элементы с уровня 1 остаются на экране, игнорируя определенные элементы с уровня 2. Если быть точным: Начиная с уровня 2, он загружает начальные координаты игрока, сундуки с сокровищами и конечный пункт назначения, игнорируя врагов и стены. Он переносит с уровня 1 на уровень 2: стены, сундуки с сокровищами и враги. Последние два находятся в замороженном состоянии. Они не работают.

// Переменные экземпляра:

private int lvlCount = 1; 

// Метод Game ()

public Game(Stage stage) {
    this.score = new SimpleIntegerProperty(0);
    this.mobs = new ArrayList<>();
    this.hitBoxes = new ArrayList<>();
    this.treasure = new ArrayList<>(); 
    this.newLevel = new ArrayList<>();  
    this.enemyCount = 0;
    bg();
    loadLevel(1); 
    living();
    stuff();
    mob2();
    finalText();
    stage.setOnShown(e -> this.run());
}

// Переключатель для загрузки уровней:

void loadLevel(int in) {
    switch (in) {
    case 1:
        this.level = new Level1();
        break;
    case 2:
        this.level = new Level2(); // placeholder for second level
        break;
    }
    hitBoxes.clear(); // clear the list of hitboxes
    mobs.clear(); // remove any existing old mobs
    this.getChildren().addAll(hitBoxes); // add all the hitboxes for the walls to the scene
    background.setImage(level.getImage()); // get the background image
    hitBoxes.addAll(level.getWalls()); // get all the wall hitboxes
    enemyCount = level.getEnemyCount(); // get the enemy count from the level
    chestCount = level.treasureCount(); // get the treasure count from the level
    this.initTreasure(chestCount); // add the treasure chests for the level
    this.initMobs(enemyCount); // initialize our mobs

    lvlCount = level.lvlCount();
    this.initLevel(lvlCount);


    }

// Проверка на столкновение:

private void collisionCheck() {if (r.getFill().equals(Color.WHITE)){lvlCount--;}

// Метод основного игрового цикла:

private void play() {
    AnimationTimer gameLoop = new AnimationTimer() {
public void handle(long arg0) {
            for (int i = 0; i < mobs.size(); i++) {
                MOB m = mobs.get(i);
                if (m instanceof Enemy) {
                    ((Enemy) m).moveCheck(arg0);
                }
            }
 collisionCheck();
if (lvlCount == 0){
                loadLevel(2);} //The condition that loads Level 2
gameLoop.start();
} 

Пожалуйста, помогите мне понять, как я могу успешно загрузить Уровень 2. Обратите внимание, что он не выдает никаких ошибок в консоли. Поэтому мне очень трудно понять, в чем проблема.

Я вставил только тот код, который, по моему мнению, необходим для достижения моей цели. Здесь вы можете увидеть полный код, только для просмотра, без необходимости загрузки: http://paste.mooc.fi/955c6d30

Заранее большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...