Змейка

Рекомендованный уровеньуровень
5+
Длинное змееобразное существо ползает по ограниченному полю, подчиняясь приказам игрока (право, лево, вниз, вверх). И нет никакой возможности остановить его движение. Только бы не коснуться краев поля, иначе гибель! Только бы не укусить себя, иначе… ну вы поняли. На пути у существа попадается еда, от которой оно становится ещё длиннее. От роста ему становиться всё теснее, и теснее, и теснее… Стоп машина! …Вы, вероятно, узнали в описанной выше шуточной драме сценарий знаменитой игры «Змейка». Эта игрушка берёт своё начало в 70-х годах прошлого столетия. Именно тогда она впервые появилась на аркадных автоматах. А в 21-м столетии её популяризатором выступила компания Nokia, которая предустанавливала «Змейку» едва ли не во все свои мобильные телефоны. Между этими двумя вехами были версии для Commodore VIC-20, MS-DOS, ZX Spectrum, Windows, Mac OS… Если вы залезете в Play Маркет или Apple Store, то, скорее всего, найдёте пару десятков вариантов различных «Змеек». Сложно представить себе платформу, на которой не было бы собственного варианта «Змейки». Почему так? Дело в том, что с одной стороны, это интересная игра, которая отлично помогает скоротать время. С другой стороны, «Змейку» достаточно просто создать самостоятельно. Давайте убедимся в этом сами, и напишем собственную версию приключений растущего пресмыкающегося на Java. Мы на JavaRush уже расписали все шаги, которые помогут начинающему игроку справиться с такой задачей без проблем. Вперёд!
Комментарии (277)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Mark
Уровень 20, Russian Federation
30 июля, 18:33
помогите , почему у змейки не появляются новые части
Максим Солодкий Работает в АГАТ - Системы управ
26 июля, 08:47
Слишком сложно
Mark
Уровень 20, Russian Federation
1 июля, 21:41
Помогите пожалуйста, нет иконки запуска , я так понял это из-за того, что нет метода main, как мне запусти игру не знаю сверху класс SnakeGame зачеркнут, как будто его нету , но добавляю main, и запуск появляется , но получается ошибка, а по инструкции все прохожу. Хочется просто увидеть свое творенье. Помогите ПОЖАЛУЙСТА!!!
Alexander Software Developer в Neti
25 июля, 18:20
Привет! 1. Метод main в классе SnakeGame не нужен 2. Для разработки игр нужна библиотека JavaFX https://gluonhq.com/products/javafx/, ее нужно скачать и развернуть на диск 3. Открыть настройки конфигурации из меню Run-Edit configurations, для Application SnakeGame в поле -cp выбрать 8.Games - это текущий модуль 4. Здесь же нажать Modify options-Add VM Options, на форме настроек появится поле VM Options, в него вставить строку вида: --module-path "D:\Java\jdk-18\lib\javafx-sdk-18.0.2\lib" --add-modules javafx.controls,javafx.fxml здесь в кавычках путь к папке lib библиотеки JavaFX, заменить на свой 5. Открыть структуру проекта из меню File-Project Structure, выбрать Project Settings-Libraries, нажать + Java, указать путь к папке lib внутри недавно загруженного пакета JavaFX, в следующем окне выбрать модуль 8.Games 6. Profit
Mark
Уровень 20, Russian Federation
30 июля, 18:33
Спасибо
zephyr0021
Уровень 19, Ural, Russian Federation
1 июля, 21:05
Ребят нахожусь на 12/20 задаче у меня такое поведение у змейки если зажать определенную комбинацию клавиш, при определенных условиях)) например змейка идет вниз (зажимаю быстро лево - вверх) она сжирает свой хвост(резко идет вверх), в правильном решении от javarush происходит тоже самое, однако в опубликованных играх не заметил такого поведения. Не могу отловить этот баг, ночь не сплю, скажите он дальше где то фиксится или что это такоее?
Константин
Уровень 24
8 июля, 15:01
выпей ПОФИГИН, 2 таблетки на ночь перед сном, должно помочь
Inna
Уровень 26, United States
8 июня, 02:42
Как эту задачу перенести в IntelliJ IDEA ?
Ivan Sevastianov
Уровень 23, Тула, Russian Federation
11 июля, 18:37
В Intellij IDEA "выбрать задачу". Java Game quest. И статус: или доступные или в прогрессе. (Скорее всего доступные.) Разрешаешь заменить файлы.
LuneFox инженер по сопровождению в BIFIT Expert
31 мая, 00:40
Пока рефакторил код, обратил внимание, что столкновение объекта со змейкой сделано при помощи метода contains().
public boolean checkCollision(GameObject obj) {
    return (snakeParts.contains(obj));
}
При этом в методе equals() у GameObject напрочь отсутствует проверка на принадлежность объекта классу, просто сравниваются координаты двух объектов. Таким образом, если мы исправим "ошибку" реализации equals(), и в будущем при захотим проверить столкновение змейки с каким-нибудь потомком GameObject, всегда будем получать false. Лучше сразу сделать проверку, независимую от equals() - просто сравнить координаты каждой из частей змейки с координатами объекта.
public boolean checkCollision(GameObject obj) {
    return snakeParts.stream()
            .anyMatch(part -> part.x == obj.x && part.y == obj.y);
}
muqamya
Уровень 1, Алматы, Kazakhstan
29 мая, 13:14
System.out.print1n("Amigo")
awalone
Уровень 2, Ukraine
13 мая, 19:35
Ошибка java: cannot access javafx.application.Application class file for javafx.application.Application not found как исправить?
JavaPlayerPro999 Android Developer в Genesis
28 мая, 13:35
I don`t know
Boris Vasilev Quarterback в Yankees baseball tea
8 мая, 15:02
Выдает ошибку APP_Publish_ERROR:Task wasn't published. Publish result is unknown. Кто нибудь сталкивался, знаете как решить?
Dmitrii Slabozhanin Frontend Developer
24 апреля, 15:11
После сапера прям быстро решается 👍