Игра змейка (18/20)

  • 3
  • Недоступна
Давай поправим управление. Значения поля direction могут меняться только на валидные в данный момент: LEFT, RIGHT, UP, DOWN.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (9)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Viktor17 уровень, Самара
22 декабря 2018, 20:43
Прочитал все комментарии, так как стало интересно для чего такие условия. Не нашел разумного объяснения, потом до меня само дошло. Как я понял, по пунктам: 1.Если змея УЖЕ двигается НАЛЕВО, то нажатие кнопки НАЛЕВО должна игнорировать. 2.Если змея УЖЕ двигается ВПРАВО, то нажатие кнопки ВПРАВО должна игнорировать. 3.Если змея УЖЕ двигается НАВЕРХ, то нажатие кнопки НАВЕРХ должна игнорировать. 4.Если змея УЖЕ двигается ВНИЗ, то нажатие кнопки ВНИЗ должна игнорировать.
Илья Колесниченко22 уровень, Минск
19 декабря 2018, 01:11
Объясняю как понял это задание я. Задержка между движениями нашей змейки - 300 мсек. Следим за руками. Допустим наша змейка в стандартном положении (двигается справа налево). Если в промежуток между движениями мы сделаем следующее: 1) Нажимаем стрелку вниз (наш класс Snake принял наш "приказ" и уже записал в себя команду, требующую повернуть "вниз". НО. На данный момент наша змейка ещё не отрисована, т.к. не прошли 300 мсек. 2) Нажимаем стрелку "вправо". Т.к. внутри наша змейка помнит предыдущую команду "вниз", то она спокойно даёт нам возможность повернуть направо. Выходят наши 300 мсек и поступает команда "двигаться". И тут мы сталкиваемся с проблемой, ибо змейка "запомнила" нашу последнюю команду "вправо" и выполняет именно её. После чего с шумом и грохотом врезается сама в себя. Game Over, друзья мои. Вот как раз для того, чтобы избежать такой ситуации между "тиками" и нужно выполнить текущее задание.
7 декабря 2018, 08:08
x и у перепутаны в требованиях.
Alexandr Agalarov16 уровень, Москва
7 декабря 2018, 10:00
Прям выручил. Спасибо огромное! Но несмотря на пройденное задание, ты не мог бы объяснить пару моментов: 1) Зачем эти дополнительные условия? 2) Какая связь между, например, Direction.LEFT и сигментами snakeParts по координатам y? Другими словами, как связаны поля direction и перпендикулярные координаты?
Роман16 уровень
11 декабря 2018, 16:01
1) до реализации этого задания попробуйте во время движения змейки налево, например, нажать вниз и сразу (быстро) вправо. поймете для чего это нужно. а еще, скорее всего, чтобы не выполнять лишний раз изменение направления на текущее (лишние затраты). НО все могло бы решиться одной строчкой:
if (!(this.direction.equals(direction.getOpposite())) && !(this.direction.equals(direction)))
Валидатор, конечно же, такое решение не принял... 2) тоже не понял возможно, я вообще все как-то неправильно понял)
Anton Stezhkin24 уровень
6 февраля, 19:24
Сотрите, если Х1 = 5 и Х0 = 5, то Y у них отличается. Иначе змейка бы сдохла. А значит, если Х совпадают - змейка может ползти по сторонам. И наоборот, если совпадают Y - то сегмент 1 справа или слева от сегмента 0. И вверх/вниз ползти ничего не мешает.
Дмитрий Шалухов36 уровень, Минск
3 декабря 2018, 14:30
Я не понимаю, что мы здесь исправляем. И соответственно, не могу реализовать этот шаг...
Siller23 уровень, Санкт-Петербург
6 декабря 2018, 18:30
такая же проблема
Alexandr Agalarov16 уровень, Москва
6 декабря 2018, 18:42
Даже с подсказкой ментора не понимаю: "Если значение поля direction равно LEFT, и сегменты змейки из snakeParts с индексами 0 и 1 имеют одинаковое значение координаты x, значение поля direction не должно измениться."