Moon Lander

Рекомендованный уровеньУровень
10+
В конце 1970-х – начале 1980-х, когда деревья были большими, а видеоигры — по-настоящему сложными, была среди них одна, которую можно назвать хардкорнейшей среди хардкорных. Имя ей — Lunar Lander. Впервые игра заставила людей страдать ещё в 1979 году, когда эти самые люди опускали свои кровно заработанные медяки в монетоприёмник аркадного автомата Atari. После этого люди превращались в пилотов и принимали управление посадочным лунным модулем, который уверено приближался к лунной поверхности. У Луны рельеф для этих целей так себе — горки-пригорки. Соответственно, мест для мягкой посадки — раз-два и обчёлся. Игроку предстояло нейтрализовать лунное притяжение и замедлить падение с помощью кормовых ускорителей. Управление тягой и ускорителем было пропорциональным, топливо расходовалось быстро, и когда его запасы истощались, корабль переставал реагировать на действия пилота. В таком случае игрок мог докинуть ещё монеток в аркадный автомат (здравствуй, прародитель современных игровых лутбоксов!). Игра требовала недюжинного терпения, посадить модуль медленно и ровно было ох как непросто. Собственно, чем лучше виртуальный пилот это сделает, тем больше баллов получит. Предлагаем вам приобщиться к прекрасному, и написать свою версию «Лунного модуля». Наш Moon Lander будет похож на классический, только графика у нас будет получше (всё-таки 40 лет прошло!). Мы создадим симпатичный посадочный модуль, который нужно аккуратно посадить на Луну, не задев горы. Для мягкой и ровной посадки будем использовать основной двигатель, который замедляет падение и приподнимает, а также боковые двигатели для горизонтального перемещения. Думаете, сложная задачка? Сложная, но не неподъемная. Наша команда уже снабдила её рекомендациями и разбила её на приемлемые для начинающего программиста шаги. Так что дерзайте!
Комментарии (28)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Юрий17 уровень, Москва
вчера, 12:29
Есть знающие, как запретить программе в опубликованных играх, реагировать на клавиши кроме SPACE? В IJ IDEA все нормально)
Alukard24 уровень, London
суббота, 04:57
На сегодня 517 учеников.
LuneFox25 уровень, Москва
20 мая, 16:35
Не мунлендер, конечно, но оно может помочь вам сделать вашего мунлендера чуточку красивее) Тык
Viacheslav20 уровень, Киев
15 мая, 19:48
Ай-яй. Ругается на ваш же класс, предоставленный нам. Отвлекает немного, когда иногда запускаешь проверку стиля кода и пытаешься убедиться, нет ли действительно своей ошибки по стилю кода.
Сергей Половых19 уровень, Москва
7 мая, 11:29
Подскажите, почему на 21-м шаге у меня белое поле в клеточку, в чем может быть проблема?
LuneFox25 уровень, Москва
7 мая, 12:35
Нужно вызывать метод сокрытия решётки первым при инициализации.
Сергей Половых19 уровень, Москва
7 мая, 13:00
а можно по конкретнее, тыкнуть носом?)
LuneFox25 уровень, Москва
7 мая, 13:18
@Override
public void initialize() {
    showGrid(false);
    setScreenSize(WIDTH, HEIGHT);
    createGame();
}
Сергей Половых19 уровень, Москва
7 мая, 13:26
Теперь вместо сетки просто белый экран и конец игры!( Смысл, писал игру, а она не работает(
LuneFox25 уровень, Москва
7 мая, 14:15
А, я думал белые поля в клеточку и нужно клеточки убрать. Ищи тогда, где ошибся)
Антоний Шаламов19 уровень, Хабаровск
14 июня, 13:31
Давай код)
Сергей Половых19 уровень, Москва
16 июня, 05:28
@Override public void setCellColor(int x, int y, Color color){ if (x < 0 || x > WIDTH - 1) return; if (y < 0 || y > HEIGHT - 1)return; super.setCellColor(x, y, color); } этот код поправил и все заработало, раздел помощь посмотри там подробнее расписано
LuneFox25 уровень, Москва
7 мая, 07:05
На 14-м шаге нам подсовывают уже готовый метод для проверки столкновений isCollision и не предлагают с ним ознакомиться. Давайте разберём по полочкам, что же происходит при проверке столкновения ракеты со скалой:) Комментарий продублирован под задачей на всякий. Берём размер ракеты и её положение на экране. Берём размер объекта-параметра и его расположение на экране. Получившиеся переменные objectX и objectY — это ПРОВЕРЯЕМЫЕ ячейки на матрице объекта. Если ячейки получают отрицательные значения, или значения, превышающие высоту и ширину объекта, значит наша ракета находится за пределами матрицы объекта, поэтому такие зоны не проверяем. Остаётся только пройтись по всем ячейкам в перекрываемой области и проверить, не являются ли соответствующие друг другу ячейки ракеты и объекта непрозрачными (индекс цвета NONE (прозрачный) заранее был сохранён в переменную transparent). Вот, собственно, и всё :)
Дмитрий25 уровень, Ровно
20 марта, 07:40
Подскажите плиз, как скомпилировать готовую игру в exe файл?
McRooshyn3 уровень, Хмельницкий
23 марта, 19:42
Это Java).. смысл в том что программы грузятся без ехе файлов) *но если очень надо? тогда надо еще при создании проекта выбрать "приложение для Windows" или "Application"
Дмитрий18 уровень, Самара
8 декабря 2019, 13:43
Дописал свою версию. Кастомизация коснулась следующих моментов: Поле увеличено до 100х100, ракета уменьшена до 5 по ширине. Сложный ландшафт. "Очки" - это топливо, если жать на кнопки, то оно расходуется. Проигрыш - если врезаться или если закончится топливо. Выигрыш - посадить ракету на платформу.
Pavlo Plynko40 уровень, Киев
24 марта, 06:32
ссылку на свою игру сразу прикрепляй, а то затеряется
Maksym19 уровень, Днепр
24 марта, 10:10
у меня почему то слетают игры из опубликованных, не сталкивался?
Pavlo Plynko40 уровень, Киев
24 марта, 11:45
Если запустить свою игру с сайта из раздела "задачи-игры" (а не из опубликованных), то игра пропадет из опубликованных. Нужно снова публиковать чтобы появилась. Таких же макаром и обновлятьсвою игру в опубликованных можно. Т.к. если просто опубликовать еще раз - она не обновится. Нужносначала запустить, чтобы пропала из опубликованных. Таким же макаром можна поднимать свою игру "в топ", дата публикации обновится.
Stars_from16 уровень, Москва
30 ноября 2019, 07:06
🤩🤩🤩🤩🤩🤩🤩🤩🤩🤩🤩🤩🤩🤩🤩🤩🤩
Павел25 уровень
29 мая 2019, 09:11
Сыграйте-ка в мою игру. Пожалуйста