2048

Рекомендованный уровеньуровень
5+
Жил некогда молодой итальянец по имени Габриэле Чирулли. Он изучал программирование и однажды, делая упражнение по кодингу, совершенно случайно совершил прорыв в игровой индустрии. Как ему это удалось? Вышло так, что в качестве упражнения он решил написать игру, чем-то похожую на уже существующую головоломку Trees. На реализацию игры, которую он назвал 2048, у Габриэле ушло два дня. Игра была бесплатной и имела ошеломительный успех! Даже если вы сами не играли в 2048, то, скорее всего, в неё играли ваши друзья и знакомые. Или вы видели её у людей в общественном транспорте. Помните такие цветастые плитки с числами, заполонившие несколько лет назад экраны смартфонов? Это и есть 2048. Игра получила своё имя не просто так. 2048 — это 2 в 11 степени. И в этой игре всё построено на степенях двойки. Краткие правила таковы: у вас есть поле 4х4, разбитое на квадратные плитки. В каждом раунде появляется плитка с номиналом «2» (с вероятностью 90%) или «4» (с вероятностью 10%). Все плитки можно перемещать в одну из четырёх сторон, при этом если две плитки одного номинала «налетают» друг на друга, они слипаются и их номинал удваивается. Цель — получить плитку номиналом 2048. Игрок проигрывает, если после очередного хода невозможно совершить действие. Что же в ней такого особенного? В первую очередь, в неё очень удобно играть в браузере или на смартфоне. Давайте создадим собственный вариант игры прямо на JavaRush. Кто знает, может, после этого вы тоже случайно придумаете и разработаете собственную головоломку, которая станет не менее успешной? Вперёд!
Комментарии (92)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Тимофей Филиппов
Уровень 28, Санкт-Петербург
13 июня, 10:11
Всего эту задачу решили 1931 учеников. Написал все 6 игр из раздела, эта была последней.
Neshta
Уровень 27
8 июня, 19:02
Такая же ошибка. APP_PUBLISH_ERROR: Task wasn't published. Publish result is unknown.
Kidchai
Уровень 21, Chicago, United States
16 мая, 15:12
не могу опубликовать :( убрала все импорты, кроме движка, но всё равно ловлю APP_PUBLISH_ERROR: Task wasn't published. Publish result is unknown.
Зепп Бранниган Admin в JavaRush Moderator
17 мая, 17:27
Ответили Вам в ЛС.
Leonid
Уровень 28, Москва, Россия
2 марта, 08:45
Вместо поиска MAX_value мониторил его в mergeRow(), валик раскатал(
KOTNinja
Уровень 32, Санкт-Петербург, Россия
21 февраля, 16:12
Максимально конченая история с координатами - то х, у, то у, х.
Стрелков Игорь
Уровень 36, Москва, Russian Federation
3 декабря 2021, 14:01
private Color getColorByValue(int value) {
      Map<Integer, Color> map = new LinkedHashMap<>();
      map.put(0, Color.NONE);
      map.put(2, Color.ALICEBLUE);
      map.put(4, Color.AQUA);
      map.put(8, Color.WHEAT);
      map.put(16, Color.GAINSBORO);
      map.put(32, Color.RED);
      map.put(64, Color.ROSYBROWN);
      map.put(128, Color.TEAL);
      map.put(256, Color.DARKTURQUOISE);
      map.put(512, Color.MAGENTA);
      map.put(1024, Color.TURQUOISE);
      map.put(2048, Color.BEIGE);
      return map.get(value);
  }
Как вариант можно так написать
zimbaby
Уровень 23, Russian Federation
23 февраля, 12:35
Чисто визуально так реально кажется удобнее, но в плане ресурсов более затратно.(поправьте если не прав)
dinamadani6
Уровень 1, Kazakhstan
12 августа 2021, 11:05
я написать код не могу
fs fasadasa
Уровень 1, Витебск
8 августа 2021, 07:24
класс рослобляет
BorysV
Уровень 37
30 мая 2021, 11:17
Подскажите пожалуйста, для выбора цвета использовал конструкцию if'ов, так и не приняло задание, пока не изменил на switch'и, она же делает то же или я что-то упускаю?
if (value == 0) {
            return Color.WHITE;
        } else if (value == 2) {
            return Color.LIGHTGREEN;
        } else if (value == 4) {
            return Color.GREEN;
        } else if (value == 8) {
            return Color.DARKGREEN;
        } else if (value == 16) {
            return Color.YELLOWGREEN;
        } else if (value == 32) {
            return Color.LIGHTGREEN;
        } else if (value == 64) {
            return Color.GREEN;
        } else if (value == 128) {
            return Color.DARKGREEN;
        } else if (value == 256) {
            return Color.ORANGE;
        } else if (value == 512) {
            return Color.DARKORANGE;
        } else if (value == 1024) {
            return Color.ORANGERED;
        } else if (value == 2048) {
            return Color.RED;
        } else {
            return Color.NONE;
        }
Hardy
Уровень 32, Белгородская обл., Россия
1 июня 2021, 07:09
Делал сразу через SWITCH . Валидатор принял .
Nick
Уровень 20
25 июня 2021, 17:31
Вот такая фигня прошла, так что думаю совершенно пофиг как делать.
Color[] colors = {Color.ORANGE, Color.OLIVE, Color.HONEYDEW,
    Color.HOTPINK, Color.INDIANRED, Color.KHAKI,
    Color.LAVENDER, Color.LAVENDERBLUSH, Color.LEMONCHIFFON,
    Color.LIGHTCORAL, Color.LIGHTGREEN, Color.ORCHID};
value = value == 0 ? 0 : (int)(Math.log(value) / Math.log(2));
return colors[value];
Правда почему то не пропускает Color colors = new Color(int); вот это странно.
Flexo Bending Unit #3370318
1 июля 2021, 18:39
Потому что это класс движка, и у его конструктора приватный доступ. Собственно, это же enum, почему у него не должно быть приватного конструктора
Somnambula
Уровень 8
2 июня, 09:58
думаю надо так, т.к я писала именно так: private Color getColorByValue(int value){ if(value == 2)return Color.ORCHID; if(value == 4)return Color.AQUAMARINE; if(value == 8)return Color.BLUEVIOLET; if(value == 16)return Color.CHARTREUSE; if(value == 32)return Color.FUCHSIA; if(value == 64)return Color.GOLD; if(value == 128)return Color.LIGHTSKYBLUE; if(value == 256)return Color.LIME; if(value == 512)return Color.MISTYROSE; if(value == 1024)return Color.PLUM; if(value == 2048)return Color.YELLOW; else return Color.FIREBRICK; } P.S на цвета как тут написано не стоит обращать внимание
Ikar108
Уровень 22, Санкт-Петербург, Россия
3 июня, 21:31
Этот код из-за первой строчки всегда возвращает белый цвет.
HORIZONTAL STUDIO
Уровень 0
22 мая 2021, 12:45
как начать писать код?
Вячеслав
Уровень 41, Ивано Франковск, Украина
29 мая 2021, 14:56
Тебе надо создать класс в котором будешь писать... К тому же в задание пишет как и что делать