2048

Рекомендованный уровеньУровень
5+
Жил некогда молодой итальянец по имени Габриэле Чирулли. Он изучал программирование и однажды, делая упражнение по кодингу, совершенно случайно совершил прорыв в игровой индустрии. Как ему это удалось? Вышло так, что в качестве упражнения он решил написать игру, чем-то похожую на уже существующую головоломку Trees. На реализацию игры, которую он назвал 2048, у Габриэле ушло два дня. Игра была бесплатной и имела ошеломительный успех! Даже если вы сами не играли в 2048, то, скорее всего, в неё играли ваши друзья и знакомые. Или вы видели её у людей в общественном транспорте. Помните такие цветастые плитки с числами, заполонившие несколько лет назад экраны смартфонов? Это и есть 2048. Игра получила своё имя не просто так. 2048 — это 2 в 11 степени. И в этой игре всё построено на степенях двойки. Краткие правила таковы: у вас есть поле 4х4, разбитое на квадратные плитки. В каждом раунде появляется плитка с номиналом «2» (с вероятностью 90%) или «4» (с вероятностью 10%). Все плитки можно перемещать в одну из четырёх сторон, при этом если две плитки одного номинала «налетают» друг на друга, они слипаются и их номинал удваивается. Цель — получить плитку номиналом 2048. Игрок проигрывает, если после очередного хода невозможно совершить действие. Что же в ней такого особенного? В первую очередь, в неё очень удобно играть в браузере или на смартфоне. Давайте создадим собственный вариант игры прямо на JavaRush. Кто знает, может, после этого вы тоже случайно придумаете и разработаете собственную головоломку, которая станет не менее успешной? Вперёд!
Комментарии (53)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
21 June, 14:26
Очень тупая ошибка 😂😂. Когда мы берём рандомные значения в массиве gameField, мы проверяем само число, а не его координаты. То есть координаты, это лишь указатели на число, которое мы проверяем, а не само число... А я то думаю: "Что проверять на равность 0" 😂😂😂😅😅
Enlik4 уровень
12 June, 19:45
народ,как можно получить результат то есть Score используя базу данных , можете если нетрудно показать код?
iliabers15 уровень
27 May, 11:33
Народ а подскажите пожалуйста, как вы столбцы и стоки в 10 задании засовывали в процедуру compressRow(row). Я сделал так , что каждая строка засовывается в отдельный массив row и передается в процедуру, все вроде работает внешне как надо а валидатор не пропускает. private void moveLeft() { boolean changeAll = false; for (int y = 0; y < SIDE; y++) { int[] row = new int[SIDE]; for (int i = 0; i < SIDE; i++) { row[i] = gameField[y][i]; } boolean change = false; change = change || compressRow(row); change = change || mergeRow(row); change = change || compressRow(row); if (change = true) { for (int i = 0; i < SIDE; i++) { gameField[y][i] = row[i]; } } changeAll = changeAll || change; } if (changeAll = true) { createNewNumber(); } }
Andrey Khalepov18 уровень, Владивосток
30 May, 09:38
for (int[] row : gameField){ ... }
Антоний Шаламов18 уровень, Хабаровск
31 May, 05:03
Передать строку одномерным массивом, взятым из строки двумерного массива можно проще: compressRow(gameField[i]). Вот это и засуньте в один цикл, не забудьте учесть, произошло ли сжатие.
Илья Чумак20 уровень, Москва
21 May, 19:24
Игру написал, в идее работает, но после публикации на сайте не хочет.
LuneFox24 уровень, Москва
29 April, 00:27
Моя вариация игры готова :) 2048 оттенков американского бильярда
Юлий22 уровень, Оренбург
7 May, 06:05
оригинально
Юлий22 уровень, Оренбург
7 May, 17:24
написал эту игру без каких - либо доработок. Вопрос, как вы сделали фон к игре?
LuneFox24 уровень, Москва
7 May, 21:21
В смысле, какой именно фон?
Юлий22 уровень, Оренбург
8 May, 05:03
бильярдного стола
LuneFox24 уровень, Москва
8 May, 06:35
Не совмем понимаю смысл вопроса, обычным способом же:
for (int y = 0; y < field.length; y++) {
    for (int x = 0; x < field[0].length; x++) {
        setCellColor(x, y, Color.DARKGREEN);
    }
}
Александра6 уровень, Санкт-Петербург
8 April, 16:43
Почему так? Где можно взять движок?
Антоний Шаламов18 уровень, Хабаровск
10 April, 02:11
по идее, плагин JavaRush должен сам все скачать и положить в нужные папки... у меня вот так все выглядит. Вон и библиотека на месте с классами движка
Anton Domashevskiy12 уровень, Mlawa
14 April, 16:01
я мучался с этим вопросом когда то давно, переустановка программы и плагина не помогли, в джава руш в розделе помощь погугли есть тема как вручную подключить движок.... по другому увы не как ( других вариантов не знаю и сам не один час убил что бы решить этот вопрос)
Дарина1 уровень, Киев
26 March, 15:12
@darinaplenus public void initialize () { }
Кирилл Крыжановский29 уровень, Санкт-Петербург
10 March, 00:34
Ребят, а как запустить игру без
public static void main(String[] args);
?...
Матвей17 уровень, Санкт-Петербург
14 March, 10:50
Ты должен переопределить метод initialize() , вот так
@Override
    public void initialize() {
    }
Azamat Mirrahimov28 уровень, Ташкент
3 March, 15:03
Исправлю все не как руки не доходили до делать ее
Maxim Bogdanov26 уровень, омск
15 February, 13:11
а-я-я-й хардкодите, господа тестировщики... изменил значение SIDE что б побаловаться, а потом забыл убрать и тест не прошел... где getMaxTileValue() проверяется... (выход за пределы массива получился)