не проходит условие по этому методу. не могу понять почему
public void deleteHiddenShips() {
ships = ships.stream().filter(Ship::isVisible).collect(Collectors.toList());
}
На данном этапе добавим метод verifyHit(List<Bullet> bullets) для проверки попаданий пуль игрока во вражеские корабли.
После попадания нам нужно "убить" соответствующие пулю и вражеский корабль. Кроме этого, добавим метод deleteHiddenShips(), который будет удалять из списка "невидимые" корабли.
Для удаления можно либо использовать итератор, либо создать копию списка ships и проходить по ней циклом. Если в результате проверки объект нужно удалить из списка — вызывать ships.remove(ship).
Методы verifyHit(List<Bullet> bullets) и deleteHiddenShips() нужно вызвать в методе check() класса SpaceInvadersGame.
Требования:
В классе EnemyFleet должен существовать публичный метод void verifyHit(List<Bullet> bullets).
В методе verifyHit(List<Bullet> bullets) необходимо проверить пересечение каждого вражеского корабля из списка ships с каждой пулей из списка bullets, используя метод isCollision(GameObject).
Если пересечение корабля и пули есть (метод isCollision(GameObject) вернул true) и этот корабль "жив" и эта пуля "живая", необходимо вызвать вызвать у них метод kill().
В классе EnemyFleet должен существовать публичный метод void deleteHiddenShips().
Метод deleteHiddenShips() должен удалять из списка ships все не видимые на игровом поле корабли (ship.isVisible() == false).
В методе check() класса SpaceInvadersGame у объекта enemyFleet необходимо вызвать метод verifyHit(List<Bullet>) с параметром playerBullets до метода removeDeadBullets().
В методе check() класса SpaceInvadersGame у объекта enemyFleet необходимо вызвать метод deleteHiddenShips() после метода verifyHit(List<Bullet>).
package com.javarush.games.spaceinvaders;
public enum Direction {
RIGHT, LEFT, UP, DOWN
}
0
Комментарии (8)
популярные
новые
старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Тот же вопрос возник:
Такой код не проходит:
public void deleteHiddenShips() {
for (EnemyShip i : ships) {
if (i.isVisible() == false) {
ships.remove(i);
}
}
}
А такой проходит:
public void deleteHiddenShips() {
for (int i = 0; i < ships.size(); i++) {
if (ships.get(i).isVisible() == false) {
ships.remove(i);
}
}
}