2048

Рекомендованный уровеньуровень
5+
Жил некогда молодой итальянец по имени Габриэле Чирулли. Он изучал программирование и однажды, делая упражнение по кодингу, совершенно случайно совершил прорыв в игровой индустрии. Как ему это удалось? Вышло так, что в качестве упражнения он решил написать игру, чем-то похожую на уже существующую головоломку Trees. На реализацию игры, которую он назвал 2048, у Габриэле ушло два дня. Игра была бесплатной и имела ошеломительный успех! Даже если вы сами не играли в 2048, то, скорее всего, в неё играли ваши друзья и знакомые. Или вы видели её у людей в общественном транспорте. Помните такие цветастые плитки с числами, заполонившие несколько лет назад экраны смартфонов? Это и есть 2048. Игра получила своё имя не просто так. 2048 — это 2 в 11 степени. И в этой игре всё построено на степенях двойки. Краткие правила таковы: у вас есть поле 4х4, разбитое на квадратные плитки. В каждом раунде появляется плитка с номиналом «2» (с вероятностью 90%) или «4» (с вероятностью 10%). Все плитки можно перемещать в одну из четырёх сторон, при этом если две плитки одного номинала «налетают» друг на друга, они слипаются и их номинал удваивается. Цель — получить плитку номиналом 2048. Игрок проигрывает, если после очередного хода невозможно совершить действие. Что же в ней такого особенного? В первую очередь, в неё очень удобно играть в браузере или на смартфоне. Давайте создадим собственный вариант игры прямо на JavaRush. Кто знает, может, после этого вы тоже случайно придумаете и разработаете собственную головоломку, которая станет не менее успешной? Вперёд!
Комментарии (83)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Стрелков Игорь
Уровень 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);
  }
Как вариант можно так написать
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
Уровень 27, Белгородская обл., Россия
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, почему у него не должно быть приватного конструктора
HORIZONTAL STUDIO
Уровень 0
22 мая 2021, 12:45
как начать писать код?
Вячеслав
Уровень 41, Ивано Франковск, Украина
29 мая 2021, 14:56
Тебе надо создать класс в котором будешь писать... К тому же в задание пишет как и что делать
Вера
Уровень 20, Москва
22 мая 2021, 05:38
Кто стартует, список цветов и их представление реккомендую смотреть здесь: цвета
Anonymous #2561788
Уровень 1
23 марта 2021, 07:24
😀😬😋😙😐😛😐🤡😒🤓🤠😚☺️😎😛😙😜😇🤑😅😅😪😱🤕💤🥴👿👿👹💀💀👻👻💩💩🤙👍👊🤙😺🤖😾
Ирина
Уровень 18, Москва, Россия
22 марта 2021, 16:49
не получается опубликовать игру. ловлю ошибку пишет ошибку APP_PUBLISH_ERROR: Task wasn't published. Publish result is unknown. кто сталкивался с таким? читала ниже, что нужно обратить внимание на импорты. у меня всего их два. не сказала бы, что левые какие-то: import com.javarush.engine.cell.*; import java.util.Arrays;
Ирина
Уровень 18, Москва, Россия
22 марта 2021, 16:54
переделала mergeRow() и убрала последний импорт. взлетело. странная фича. ну да ладно)
Flexo Bending Unit #3370318
28 апреля 2021, 22:50
публикация игр чувствительна к импортам, есть такое
К М
Уровень 33, Новосибирск, Россия
17 марта 2021, 12:35
В методе initialize() должен быть вызван методе createGame(). Поправьте пожалуйста
Олександр
Уровень 0
4 марта 2021, 09:20
public class Game 2048{ import com.javarush.engine.cell.*;