2048

Рекомендованный уровеньуровень
5+
Жил некогда молодой итальянец по имени Габриэле Чирулли. Он изучал программирование и однажды, делая упражнение по кодингу, совершенно случайно совершил прорыв в игровой индустрии. Как ему это удалось? Вышло так, что в качестве упражнения он решил написать игру, чем-то похожую на уже существующую головоломку Trees. На реализацию игры, которую он назвал 2048, у Габриэле ушло два дня. Игра была бесплатной и имела ошеломительный успех! Даже если вы сами не играли в 2048, то, скорее всего, в неё играли ваши друзья и знакомые. Или вы видели её у людей в общественном транспорте. Помните такие цветастые плитки с числами, заполонившие несколько лет назад экраны смартфонов? Это и есть 2048. Игра получила своё имя не просто так. 2048 — это 2 в 11 степени. И в этой игре всё построено на степенях двойки. Краткие правила таковы: у вас есть поле 4х4, разбитое на квадратные плитки. В каждом раунде появляется плитка с номиналом «2» (с вероятностью 90%) или «4» (с вероятностью 10%). Все плитки можно перемещать в одну из четырёх сторон, при этом если две плитки одного номинала «налетают» друг на друга, они слипаются и их номинал удваивается. Цель — получить плитку номиналом 2048. Игрок проигрывает, если после очередного хода невозможно совершить действие. Что же в ней такого особенного? В первую очередь, в неё очень удобно играть в браузере или на смартфоне. Давайте создадим собственный вариант игры прямо на JavaRush. Кто знает, может, после этого вы тоже случайно придумаете и разработаете собственную головоломку, которая станет не менее успешной? Вперёд!
Комментарии (120)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ernest
Уровень 19
28 января, 17:53
Почему-то в браузере не запускается, пишет "An error occurred: APP_PUBLISH_ERROR" и еще не получается опубилковать
Daniil Medvediev
Уровень 44
12 января, 16:19
Хочу делать игру в интеллидж отдельно от курса, а надо импортировать класс гейм import com.javarush.engine.cell.*;. И выдает ошибку подчеркивая джавараш. Может есть другой импорт?
Natasha Protsenko
Уровень 4
20 декабря 2024, 18:00
Счетчик не отрисовывается! Ни в начале, ни в конце
Марат
Уровень 47
24 декабря 2024, 04:36
Попробуйте сделать следующее: добавить метод
public void onTurn(int step) {
    setScore(score);
}
а в инициализацию
setTurnTimer(300);
Victor The main expert in Automa в Строительная компани
26 февраля, 07:03
Лучше поставить setTurnTimer(10); При значении 300 игра подтормаживает.
Vitaliy Allabergeov
Уровень 1
15 октября 2024, 11:28
эх эх эх эх эх
Андрей
Уровень 44
5 октября 2024, 19:15
Может кому пригодится: проблема с неработающим setScore - не меняет значение, лечится вызововм setTurnTimer в initialize. Видимо, тут имеет место какой-то баг в движке, когда счет можно обновлять, только при запущенном таймере ходов, который в этой игре нафиг не нужен.
marat
Уровень 32
7 ноября 2024, 04:43
Спасибо большое! 👍
Настя Филатова
Уровень 1
8 августа 2024, 08:58
очень сложно
Olga Kuzmins
Уровень 39
17 апреля 2024, 09:31
Ребят, писала вам в раздел "Поддержка" в связи с проблемами в этой игре, но мне не ответили, мб тут заметят комментарий. В предпоследней задаче не отрисовывается счетчик очков и задачу не проходит валидацию. Я читерила и написала метод setScore в методе initialize, в итоге валидатор принял задачу и обнулил мне прогресс по всей игре. Теперь снова на 4-й задаче)) Может поможете мне с этим или хотя бы расскажите, чем игра заканчивается 😂
Иван
Уровень 16
6 марта 2024, 19:46
private void drawScene(){
        for(int x = 0; x < gameField.length; x++){
            for(int y = 0; y < gameField.length; y++){
                setCellColoredNumber(x, y, gameField[x][y]);
            }
        }
    }
private void setCellColoredNumber(int x, int y, int value){
        Color color = getColorByValue(value);
        if(gameField[x][y] == 0){
        setCellValueEx(x, y, color, "");
        }else{
        setCellValueEx(x, y, color, String.valueOf(gameField[x][y]));
        }
    }
не проходят 4й и 7й пункт, чего валидатору надо? где я чего не так вызываю?
safelogj
Уровень 51
26 июня 2024, 23:54
почитайте 6 задание внимательно про отрисовку ------------- Чтобы это реализовать, при установке значения игровому полю используй инвертированные координаты матрицы. Например, для установки значения клетке с координатами (x, y) используй значение матрицы gameField[y][x] --------------- должно быть так
private void drawScene(){
        for(int x = 0; x < gameField.length; x++){
            for(int y = 0; y < gameField.length; y++){
                setCellColoredNumber(x, y, gameField[Y][X]);
            }
        }
    }
не уверен но по моему я в какой то момент gameField.length заменил на SIDE, возможно из за валидатора
ToTAmon Программист 1С в Медконсалт
4 марта 2024, 12:06
Не работает setScore().
Максимsssnm
Уровень 1
8 января 2024, 17:49
Пара вопросов появилась. Вот мы установили счетчик очков, но на сайте его нигде нет и когда из IDEA запускаю, то очки не меняются в самой игре, а только когда заканчиваешь ее, хотя по логики должно выводить. Как это исправить? И когда игра опубликована, то где менять её код, чтобы он изменялся и в опубликованной игре. А то у меня надписи корректно не отображаются на сайте и хочется пофиксить
YUREC
Уровень 36
10 февраля 2024, 19:41
у меня вообще счетчика score на экране с игрой нет