У меня есть игровой шаблон, который имеет два класса в качестве своих уровней.
В игре есть игрок, враги, сундуки с сокровищами и стены.
Когда я запускаю программу, она успешно загружает Уровень 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
Заранее большое спасибо.