2048 (11)

  • 16
  • Недоступна
Отличная работа! На этом этапе у нас уже есть полнофункциональное приложение, но ведь нет предела совершенству, давай еще поработаем. Если ты успел какое-то время поиграть в 2048, то заметил, что порой очень хочется иметь возможность отменить последний ход. Давай создадим в классе Model два стека,
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (25)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Rodriguez32 уровень
26 октября, 20:28
Создал отдельный метод, который копирует наше игровое поле в новый массив и возвращает его, так как уже использовал этот алгоритм при повороте матрицы на 90 градусов. P.S. При сохранении в стек по невнимательности, сохранил переданный в аргументе массив, вместо вновь созданного( Минус попытка.
Alex Shamray35 уровень
27 июля, 20:27
Выпендрился и в стек положил еще и maxTiles. Зря я это сделал. Нужно только score/
Павел39 уровень, Гомель
17 июня, 10:00
Массив нужно копировать только циклом с созданием новых плиток нужного номинала: new Tile(...); Arrays.copy(), .clone() и т.п. - отставить!
NodeOne32 уровень
23 октября, 17:30
Спасибо. Сам бы кончено расчехлился рано или поздно но думаю что скорее поздно. Четыре попытки недоумевал че за фигня)))
Станислав37 уровень
1 июня, 06:34
Давай создадим в классе Model два стека, в одном будем хранить предыдущие состояния игрового поля, а в другом предыдущие счета. Назовем их previousStates и previousScores. Инициализировать можешь прямо в строке объявления или в КОНСТРУКТОРЕ. Используй стандартную реализацию стека (java.util.Stack). P.S. Так вот, если инициализировать в конструкторе, то не проходит ни один пункт валидации.
25 апреля, 23:48
Arrays <- тут помощь, дабы не крутить циклы
Avaaron36 уровень, Москва
14 марта, 17:04
никак не мог понять что значит заполнить новыми объектами.... вот и заполнял новыми и не мог воткнуть ...а зачем сопсна.. Оказывается вполне себе "старыми" из gameTiles..... Ясновидение 80lvl
Anonimus1506331 уровень
13 марта, 10:13
Мда, хотел сделать как лучше, сохранял ещё максимальное значение на игровом поле, но как говорится - получилось как всегда...
Вадим Власов39 уровень
21 февраля, 12:40
previousScore... без s на конце = 11 попыток :)
Inna Lapina40 уровень, Львов
1 февраля, 14:21
System.arraycopy(tiles, 0, savedArray, 0, tiles.length) не принимается, надо делать банальный цикл с сохранением в новый массив. Видимо потому, что System.arraycopy делает полную копию массива с теми же ссылками на обьекты Tile, а через цикл создается аналогичный, но новый массив, с заново пересозданными обьектами, которые имеют другие ссылки. "необходимо создать новый массив и заполнить его новыми объектами типа Tile", в общем, да, надо было внимательно читать.
25 апреля, 23:48
А кто вас так учил архивы копировать, есть для этой задачи Arrays, он прекрасно справляется
LexSav35 уровень
20 мая, 11:13
Мне на курсах один дэв тоже говорил использовать этот метод. Он нативный и быстрый. И еще какие-то преимущества называл, уже не помню :)
Артем Шишкин40 уровень
3 ноября 2017, 04:50
Странно. Валидатор принял с клонированием
Tile[][] temp = tiles.clone();
Хотя дальнейшая проверка работоспособности показала, что это неверное решение. Решение описано в самом задании: создать новый массив и заполнить его новыми объектами типа Tile перед сохранением в стек