Змейка

Рекомендованный уровеньуровень
5+
Длинное змееобразное существо ползает по ограниченному полю, подчиняясь приказам игрока (право, лево, вниз, вверх). И нет никакой возможности остановить его движение. Только бы не коснуться краев поля, иначе гибель! Только бы не укусить себя, иначе… ну вы поняли. На пути у существа попадается еда, от которой оно становится ещё длиннее. От роста ему становиться всё теснее, и теснее, и теснее… Стоп машина! Вы, вероятно, узнали в описанной выше шуточной драме сценарий знаменитой игры «Змейка». Эта игрушка берёт своё начало в 70-х годах прошлого столетия. Именно тогда она впервые появилась на аркадных автоматах. А в 21-м столетии её популяризатором выступила компания Nokia, которая предустанавливала «Змейку» едва ли не во все свои мобильные телефоны. Между этими двумя вехами были версии для Commodore VIC-20, MS-DOS, ZX Spectrum, Windows, Mac OS… Если вы залезете в Play Маркет или Apple Store, то, скорее всего, найдёте пару десятков вариантов различных «Змеек». Сложно представить себе платформу, на которой не было бы собственного варианта «Змейки». Почему так? Дело в том, что с одной стороны, это интересная игра, которая отлично помогает скоротать время. С другой стороны, «Змейку» достаточно просто создать самостоятельно. Давайте убедимся в этом сами, и напишем собственную версию приключений растущего пресмыкающегося на Java. Мы на JavaRush уже расписали все шаги, которые помогут начинающему игроку справиться с такой задачей без проблем. Вперёд!
Комментарии (334)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Денис
Уровень 22
5 мая, 09:43
Что происходит тут ? Проверка частей змейки?
public void draw(Game game) {
        for (int i = 0; i < snakeParts.size(); i++) {
            GameObject part = snakeParts.get(i); // тут принимаю текущее состоянии змейки
            String sign = (i != 0) ? BODY_SIGN : HEAD_SIGN; // если знак не 0, то тело иначе голова
            game.setCellValue(part.x, part.y, sign); // тут координаты ставим новые, где будет змейка или что?
        }
    }
Денис
Уровень 22
5 мая, 09:13
Подскажите что не так : В классе Snake должно существовать приватное статическое final поле String HEAD_SIGN, инициализированное при объявлении. Например, использовать можно UTF-16 символ "\uD83D\uDC7E". РУгается на строку : // символы для отрисовки головы и тела змейки private static final HEAD_SIGN = "\uD83D\uDC7E";
Денис
Уровень 22
5 мая, 09:57
А все забыл тип дописать String)
Михаил Борисов QA Automation Engineer в EGAR Technology
25 апреля, 18:04
Чтобы одержать победу в эту змейку нужно вырастить ее до 80 клеток. Звучит не так уж и сложно, правда? Но есть одно НО: - ты не управляешь змейкой, а только смотришь, как волновой алгоритм поиска пути играет вместо тебя! Он не идеален, поэтому выиграть сразу не получится. А если вообще получится, то хвастайся в комментариях (и иди покупай лотерейный билет, потому что сегодня удача явно на твоей стороне 😅 ) Сама игра тут Управление: (проще некуда) SPACE - начать заново Удачи!
Дмитрий
Уровень 16
19 февраля, 06:35
6 задачка вот бомбило то, не компилируется на сервере! Почему? ХЗ, пришлось зайти с браузера, еще раз запустить что б посмотреть почему не компилится. Ах, да. for (int i = 0; i < snakeParts.size(); i++) { var sp = snakeParts.get(i); да да нельзя так писать 'var' надо 'GameObject' жесть! game.setCellValue(sp.x, sp.y, i == 0 ? HEAD_SIGN : BODY_SIGN); } для того что б узнать из за чего не собирается на сервере прога, надо зайти в браузер и узнать, нажав правильное решение. СУПЕР. Следовательно ты не решил ))) Подстава.
Ivan Stepanov
Уровень 12
19 января, 18:41
Как сделать другой цвет поля?
YUREC
Уровень 36
19 февраля, 17:25
с помощью метода setCellColor(int,int,Color);
Sypher Team Lead в Бравлике Expert
13 декабря 2023, 15:22
почему когда пытаюсь подключить import com.javarush.engine.cell.*; у меня подчеркивается com и пишет The package com is not accessible
Shine
Уровень 16
4 декабря 2023, 21:20
Привет всем. Хочу представить вам свою версию игры "змейка" и кратко расскажу чем она выделяется: Кроме яблок Уровни генерируются самостоятельно случайным образом, с каждой новой игрой. Виноград - Дает временно использовать крюк кошку на Space (10 сек) Арбуз - Ускоряет змейку в 2 раза (7 сек) Лимон - Замедляет змейку в 1,5 раза (7 сек) Перец - Взрывает стены. Через 7 секунд они восстанавливаются обратно. Возможность проходить сквозь границы уровня Сама игра - Змейка Был бы очень рад вашей оценке)
Петр
Уровень 24
12 января, 14:28
Игра с багом: если после проигрыша нажать на стрелочку, то игра продолжится с надписью на экране
YUREC
Уровень 36
18 февраля, 13:53
это фича😄
SkyNet
Уровень 38
3 ноября 2023, 19:10
Кто объяснит почему при выражении "return ((part.x==gameObject.x) && (part.y==gameObject.y))?true:false;" и "if ((part.x == gameObject.x) && (part.y == gameObject.y)) { return true;" }логика змейки меняется? Код всей функции: public boolean checkCollision(GameObject gameObject) { for (GameObject part:snakeParts) { // return ((part.x==gameObject.x) && (part.y==gameObject.y))?true:false; if ((part.x == gameObject.x) && (part.y == gameObject.y)) { return true; } } return false; }
Илья
Уровень 38
11 августа 2023, 22:03
идея вообще не видит плагинБ что делать?
25 июля 2023, 17:18
як зробить змейку 2 задачу питкажить.