2048

Рекомендованный уровеньУровень
5+
Жил некогда молодой итальянец по имени Габриэле Чирулли. Он изучал программирование и однажды, делая упражнение по кодингу, совершенно случайно совершил прорыв в игровой индустрии. Как ему это удалось? Вышло так, что в качестве упражнения он решил написать игру, чем-то похожую на уже существующую головоломку Trees. На реализацию игры, которую он назвал 2048, у Габриэле ушло два дня. Игра была бесплатной и имела ошеломительный успех! Даже если вы сами не играли в 2048, то, скорее всего, в неё играли ваши друзья и знакомые. Или вы видели её у людей в общественном транспорте. Помните такие цветастые плитки с числами, заполонившие несколько лет назад экраны смартфонов? Это и есть 2048. Игра получила своё имя не просто так. 2048 — это 2 в 11 степени. И в этой игре всё построено на степенях двойки. Краткие правила таковы: у вас есть поле 4х4, разбитое на квадратные плитки. В каждом раунде появляется плитка с номиналом «2» (с вероятностью 90%) или «4» (с вероятностью 10%). Все плитки можно перемещать в одну из четырёх сторон, при этом если две плитки одного номинала «налетают» друг на друга, они слипаются и их номинал удваивается. Цель — получить плитку номиналом 2048. Игрок проигрывает, если после очередного хода невозможно совершить действие. Что же в ней такого особенного? В первую очередь, в неё очень удобно играть в браузере или на смартфоне. Давайте создадим собственный вариант игры прямо на JavaRush. Кто знает, может, после этого вы тоже случайно придумаете и разработаете собственную головоломку, которая станет не менее успешной? Вперёд!
Комментарии (49)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
iliabers15 уровень
вчера, 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(); } }
Илья Чумак8 уровень, Москва
21 May, 19:24
Игру написал, в идее работает, но после публикации на сайте не хочет.
LuneFox24 уровень, Москва
29 April, 00:27
Моя вариация игры готова :) 2048 оттенков американского бильярда
Юлий20 уровень, Оренбург
7 May, 06:05
оригинально
Юлий20 уровень, Оренбург
7 May, 17:24
написал эту игру без каких - либо доработок. Вопрос, как вы сделали фон к игре?
LuneFox24 уровень, Москва
7 May, 21:21
В смысле, какой именно фон?
Юлий20 уровень, Оренбург
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
Почему так? Где можно взять движок?
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);
?...
Матвей16 уровень, Санкт-Петербург
14 March, 10:50
Ты должен переопределить метод initialize() , вот так
@Override
    public void initialize() {
    }
Azamat Mirrahimov28 уровень, Ташкент
3 March, 15:03
Исправлю все не как руки не доходили до делать ее
Maxim Bogdanov26 уровень, омск
15 February, 13:11
а-я-я-й хардкодите, господа тестировщики... изменил значение SIDE что б побаловаться, а потом забыл убрать и тест не прошел... где getMaxTileValue() проверяется... (выход за пределы массива получился)
Artem Okunkov19 уровень, Москва
27 January, 15:01
Как-то не аккуратненько:-) В методе initialize() должен быть вызван методе createGame().
26 January, 14:15
как написать 2048