Змейка

Рекомендованный уровеньУровень
5+
Длинное змееобразное существо ползает по ограниченному полю, подчиняясь приказам игрока (право, лево, вниз, вверх). И нет никакой возможности остановить его движение. Только бы не коснуться краев поля, иначе гибель! Только бы не укусить себя, иначе… ну вы поняли. На пути у существа попадается еда, от которой оно становится ещё длиннее. От роста ему становиться всё теснее, и теснее, и теснее… Стоп машина! …Вы, вероятно, узнали в описанной выше шуточной драме сценарий знаменитой игры «Змейка». Эта игрушка берёт своё начало в 70-х годах прошлого столетия. Именно тогда она впервые появилась на аркадных автоматах. А в 21-м столетии её популяризатором выступила компания Nokia, которая предустанавливала «Змейку» едва ли не во все свои мобильные телефоны. Между этими двумя вехами были версии для Commodore VIC-20, MS-DOS, ZX Spectrum, Windows, Mac OS… Если вы залезете в Play Маркет или Apple Store, то, скорее всего, найдёте пару десятков вариантов различных «Змеек». Сложно представить себе платформу, на которой не было бы собственного варианта «Змейки». Почему так? Дело в том, что с одной стороны, это интересная игра, которая отлично помогает скоротать время. С другой стороны, «Змейку» достаточно просто создать самостоятельно. Давайте убедимся в этом сами, и напишем собственную версию приключений растущего пресмыкающегося на Java. Мы на JavaRush уже расписали все шаги, которые помогут начинающему игроку справиться с такой задачей без проблем. Вперёд!
Комментарии (135)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Valery Lvov20 уровень, Москва
вчера, 07:26
Парни, а это у меня одного опубликованные игры (и своя, и чужие) выглядят как тельняшка?
Mark Cain33 уровень, Львов
29 июня, 12:39
задача 8 - не проходит проверку если не удалить/закоментировать в методе onTurn() вызов метода суперкласа. Явно нигде не указано что он мешает.
Антоний Шаламов18 уровень, Хабаровск
четверг, 19:55
Так нигде явно не указано, что он должен вызываться)
Mark Cain33 уровень, Львов
пятница, 07:19
да, но он не влияет ни на что (метод суперкласса не реализован)... поэтому: во-первых, смысл его удалять есть только для того чтобы валидатор не ругался; во-вторых, не сразу поймешь что конкретно не нравится валидатору...
Антоний Шаламов18 уровень, Хабаровск
пятница, 10:42
С вашей точки зрения не влияет, с точки зрения валидатора - влияет, программа вызывает метод суперкласса, это целое действие. Тем более, если оно не имеет смысла, зачем заставлять программу делать лишнее действие?
Mark Cain33 уровень, Львов
пятница, 10:52
Ну если у валидатора есть своя "точка зрения" которую никак не поменять, то вы правы.
Антоний Шаламов18 уровень, Хабаровск
пятница, 13:16
Ну, если вы считаете, что вызов, по сути абстрактного метода имеет смысл, то, если абстрагироваться, в чём то вы тоже правы...
Антон Силяков13 уровень, Новосибирск
15 июня, 06:49
Всем привет! Это нормально что я не понимаю как это работает? Код работает, задачи решаются, НО ясности как это все работает нет! Это только у меня такое ощущение?
Valery Lvov20 уровень, Москва
19 июня, 09:34
есть такое. Здесь приводятся детальные инструкции, что и где написать, при этом у пишушего код нет глобального понимания, что это за строки и зачем они. Можно рассматривать как тренажер коллективной работы, когда тебе дают небольшой фрагмент и детальное задание. Или как моб программинг - когда ты Драйвер, пишешь под диктовку и не все успеваешь понять, что задумал Навигатор.
Valery Lvov20 уровень, Москва
четверг, 13:12
Задания для Сапера и Змейки и для 2048 и MoonLander писали как два разных человека! В первых двух - чужие идеи без объяснения, что это и зачем. В 2048 и MoonLander - объяснение, что сейчас будем делать, зачем и как, потом спокойное описание требований. Рекомендую начать с 2018, если не умеете читать мысли.
echerniy2007@gmail.com0 уровень
28 мая, 12:10
помогите мне создать начить на компе уменя не получаеться.
Антоний Шаламов18 уровень, Хабаровск
31 мая, 04:55
В чём проблема?
Seryozha Svetlov23 уровень, Тула
14 июня, 14:33
я думаю тебе нужно начать с Русского языка.
6 мая, 20:08
Змейка, которая понравится не всем https://javarush.ru/projects/apps/112049
MIKK.T7 уровень, Калуга
9 мая, 09:50
ахаха орнул
Sergey12 уровень, Ярославль
16 мая, 14:59
понравилось)
ΞLITTLΣ RΘCKΞ12 уровень, Little Rock
30 мая, 17:21
Орнул от РСП))))
Katerina7 уровень, Киев
23 июня, 20:21
прикольно))))!
Maxim Tikhonenkov25 уровень, Москва
23 апреля, 20:31
Шикарные задачи. Намного интереснее, чем какой нибудь непонятный перебор массива или тп.
Сергей Половых19 уровень, Москва
19 апреля, 12:33
Люди добрые подскадите, почему проверка игры в IntelliJ IDEA Community Edition выдает мне что Задача не компилируется на сервере!?
Антоний Шаламов18 уровень, Хабаровск
21 апреля, 04:35
А она к идее компилируется? Попробуй запустить в среде на сайте, там тебе покажет, в какой строке ошибка.
Сергей Половых19 уровень, Москва
21 апреля, 09:11
на сайте все компилируется, уже 16 заданий сделал, а в идее до сих пор выдает ошибку, о которой писал в начале
Антоний Шаламов18 уровень, Хабаровск
22 апреля, 10:27
То есть в идее ни одна задача не компилируется при проверке плагином, так? А в самой идее,если запустить, компилируется?
Сергей Половых19 уровень, Москва
25 апреля, 17:45
Именно, я сижу с телефона, у меня нет купленного премиума
Антоний Шаламов18 уровень, Хабаровск
26 апреля, 05:09
Для решения задач в разделе игр премиум не требуется. Я запутался в вашем вопросе: вы сидите с телефона, но не компилируется в Идее? Зачем тогда Идея, если с телефона сидите? Можете пробдему сформулировать полностью?
Сергей Половых19 уровень, Москва
26 апреля, 09:28
в идее при компиляции игры выдает ошибку, в чем причина?
Антоний Шаламов18 уровень, Хабаровск
26 апреля, 11:12
Я думаю, с этим вопросом лучше обратиться в техподдержку, мы по второму кркгк пошли уже..
Артём14 уровень, Москва
15 апреля, 00:02
В 4 пункте в классе snakeGame мы делаем вот так: apple.draw(this); что здесь означает слово this?
Антоний Шаламов18 уровень, Хабаровск
15 апреля, 03:21
Метод draw класса Snake принимает в качестве параметра объект класса Game. Класс SnakeGame является дочерним, поэтому тоже является Game(полиморфизм), вот, чтобы в качестве параметра передать экземпляр класса(фактически передаётся ссылка на этот класс) Game(самого себя) используется слово this. Для чего это делается: в классе Snake существует метод draw, который должен устанавливать значения и раскрашивать ячейки(рисует яблоко). Но из класса Snake мы мы не можем вызвать его просто так, нам нужен объект типа Game, у которого этот вызов происходит через точку. Конечно, это не единственный выход, но так делать рекомендуется. Это инкапсуляция. Мы вызываем для Apple и для Snake одинаковый метод в главном классе программы, но для них метод работает по разному, в зависимости от того, у какого объекта вызывается метод. Поэтому, чтобы не писать в главном классе реализации для каждого объекта(класса), эти реализации пишутся внутри соответствующего класса. Поэтому каждый класс сам знает, как ему выполнить соответствующую команду. А в главном классе нам не надо придумывать разные названия методов(которые делают одно и то же) для разных объектов(классов). Сравни методы draw у Apple и у Snake.
Сергей22 уровень, Казань
11 апреля, 17:16
Привет! Как можно попасть к ресурсам игры? Хочу поменять иконки яблок и змею
Дмитрий20 уровень, Одесса
13 апреля, 15:53
В проекте когда вы рисовали голову змейки, тело змейки и яблоко. Вы указывали UTF-8 Символ в инициализации поля. Просто найдите понравившийся символ головы, скопируйте его код и вставьте в свою игру.
Maxim4 уровень
21 марта, 09:40
А прямого доступа к классу Game и остальным пакетам нет, как я понимаю? Чтобы посмотреть как это все устроено.
LuneFox24 уровень, Москва
21 марта, 13:19
Как это нету? Зажми ctrl и кликни по классу в IDE.