Продолжим работу над созданием вражеского флота. Для этого в методе createShips заполним список ships.
Учтем, что оптимальным расстоянием от верхней границы экрана до первого сверху ряда кораблей будет 12 ячеек.
Для добавления вражеского флота в игру создадим поле enemyFleet в классе SpaceInvadersGame и проинициализируем его новым объектом типа EnemyFleet. Вражеские корабли создаются при вызове метода createShips в конструкторе объекта EnemyFleet
Так как игра динамическая, нам нужно периодически перерисовывать экран и выполнять другие действия. Все, что будет происходить на каждом шаге, выполняется в методе onTurn(int).
Чтобы задать частоту работы этого метода, мы будем использовать метод setTurnTimer. Он принимает на вход параметр —
длительность каждого шага в миллисекундах. Т.е. при значении шага в 40 мс (0,04с) мы получим частоту работы метода onTurn, равную 25 разам в секунду (1/0,04с). Если все сделал правильно, запустив программу, ты увидишь вражеский флот.
- В методе createShips() класса EnemyFleet необходимо создать и добавить в список ships ROWS_COUNT * COLUMNS_COUNT новых вражеских кораблей.
- Каждый вражеский корабль необходимо создавать с параметрами конструктора: x * STEP, y * STEP + 12, где x — переменная цикла от 0 включительно до COLUMNS_COUNT не включительно; y — переменная цикла от 0 включительно до ROWS_COUNT не включительно.
- В классе EnemyFleet должен существовать один публичный конструктор без параметров.
- В конструкторе класса EnemyFleet необходимо вызвать метод createShips().
- В классе EnemyFleet должен существовать публичный метод void draw(Game game).
- В методе draw(Game game) у каждого вражеского корабля из списка ships необходимо вызвать метод draw(Game). В качестве параметра передай game.
- В классе SpaceInvadersGame должно существовать приватное поле enemyFleet типа EnemyFleet.
- Поле enemyFleet должно быть проинициализировано в методе createGame() новым объектом типа EnemyFleet до вызова метода drawScene().
- В методе drawScene() после вызова метода drawField() у объекта enemyFleet должен быть вызван метод draw(Game). В качестве параметра передай в метод "this".
- В классе SpaceInvadersGame должен быть переопределен метод onTurn(int) родительского класса Game.
- В методе onTurn(int) должен быть вызван метод drawScene().
- В методе createGame() класса SpaceInvadersGame должен быть вызван метод setTurnTimer(int) класса Game с параметром 40.
- В классе EnemyFleet должен быть импорт класса com.javarush.engine.cell.Game.