не могу сама разобраться, вроде все работает, но что то все равно не так.
Спасибо.
Итак, ты реализовал сжатие и слияние плиток, что в комбинации дает нам возможность осуществить движение влево. Отлично! Но нам нужно еще и добавлять новую плитку в случае, если после передвижения игровое поле изменилось.
Давай сделаем так:
1. Изменим метод compressTiles, чтобы он возвращал true в случае, если он вносил изменения во входящий массив, иначе - false.
2. То же самое сделаем и для метода mergeTiles.
3. Реализуем метод left, который будет для каждой строки массива gameTiles вызывать методы compressTiles и mergeTiles и добавлять одну плитку с помощью метода addTile в том случае, если это необходимо.
4. Метод left не должен быть приватным, т.к. вызваться он будет, помимо прочего, из класса Controller.
Требования:
Метод compressTiles должен возвращать true в случае, если им были внесены изменения во входящий массив.
Метод compressTiles должен возвращать false в случае, если им НЕ были внесены изменения во входящий массив.
Метод mergeTiles должен возвращать true в случае, если им были внесены изменения во входящий массив.
Метод mergeTiles должен возвращать false в случае, если им НЕ были внесены изменения во входящий массив.
Метод left должен перемещать элементы массива gameTiles влево в соответствии с правилами игры и добавлять плитку с помощью метода addTile, если это необходимо.
Метод left НЕ должен изменять массив gameTiles, если перемещение влево невозможно.
package com.javarush.task.task35.task3513;
public class Main {
public static void main(String[] args) {
Model model = new Model();
}
}
0
Комментарии (3)
популярные
новые
старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
может кому то поможет как же как и мне: в методе left нужно не для каждого ряда с изменениями добавлять поле, а когда все изменения в рядах проверены. то есть метод должен выглядить примерно так:
public void left() {
boolean isChange = false;
for (int i = 0; i < FIELD_WIDTH; i++) {
if (compressTiles(gameTiles[i]) | mergeTiles(gameTiles[i]))
isChange = true;
}
if (isChange) {
addTile();
}
}
Что бы к каждому ряду значений вызвался и тот и тот метод (те самые "не ленивые" вычисления), иначе при вызове логического "ИЛИ" ( || ) если первый метод выдавал false, то второй метод попросту не выполнялся.
Спасибо Алёне, не мог понять что не так)))