GamesQuest

Создание игры «Змейка». Часть вторая.

Создание игры «Змейка». Часть вторая.

Продолжаем делать Змейку. В этой части речь пойдет о решении двух проблем:

Для решения этих задач придется слегка изменить код. Приступим!

Исключение возможности поворачивать в противоположном направлении

Создается строковая переменная  «Направление» у головы змеи (в примере из clickteam используется числовая переменная, где каждому направлению присвоено число). Значением переменной будут слова: «влево», «вправо», «вверх» и «вниз». Т.к. в начале змея движется вправо, то и по умолчанию переменная будет иметь значение «вправо».

Далее, в событиях управления меняем действие установки направления головы, на установку соответствующего значения переменной «Направление».

Теперь достаточно в события управления добавить условие — Если переменная  «Направление» не равна значению противоположного направления.
Т.е., другими словами, в событии где устанавливается поворот направо, условие будет — «Если направление головы не влево» и т.д.



Крайне не советую строить логику следующим образом:

Это не решит проблему, и к тому же вызовет баг при построении событий анимации изгиба змеи.

Затем, в событии движения условие направления (Direction) головы сменяется сравнением значения переменной «Направление», а направление головы устанавливается в этом событии.

Теперь направление движения отслеживается при помощи переменной. И игрок не может повернуть влево, если змейка ползет направо и т.д.

Анимация изгиба змейки на повороте

Во-первых, хвост змеи должен иметь необходимую анимацию изгибов.



Во-вторых, нужно определить из какого направления произошел поворот, что бы применить нужную анимацию. Для этого нужно сравнивать направление текущего шага змеи с направлением её предыдущего шага. Для этого будем использовать переменную хранящую предыдущее направление. Создадим ещё одну строковую переменную — «Предыдущее направление». Значением переменной так же будут слова: «влево», «вправо», «вверх» и «вниз». По умолчанию переменная будет иметь значение «вправо».

Теперь нужно присвоить переменной соответствующее значение в событиях движения.


Далее, вместо 4 событий движения, будет использоваться 12 событий. На каждое направление по 3 условия предыдущего направления. И в этих событиях будет установлена анимация поворота хвоста.
Так например для движения вправо будет 3 события:

  1. предыдущий шаг был вправо и текущий шаг вправо,
  2. змея двигалась вверх и повернула вправо,
  3. двигалась вниз и повернула вправо.

Внимание: очень важно что бы событие в котором «Направление» и «Предыдущее направление» одинаковы было выше двух остальных. В противном случает произойдет баг создания лишней части хвоста.

Т. к. код выполняется сверху вниз, то в ситуации, когда змея переходит из направления вверх в направление вправо, и переменной «Предыдущее направление» присваивается значение «вправо», а за тем в коде стоит событие когда и предыдущий и текущий шаг имеют направление вправо создается лишний объект хвоста.

По той же логике строятся остальные события направлений движения с условиями направления предыдущего шага, и змейка будет поворачивать с нужной анимацией.

Скачать исходный файл

Вот и все! Основной алгоритм игры змейка готов. Далее вы можете развивать игру по своему усмотрению например: добавить очки за подбор съедобной точки, построить уровни с препятствиями различной сложности, добавить событие победы когда змея достигает определенной длинны и т.д.

Надеюсь, вам понравилось делать змейку и статья была полезной для вас.

Оставляйте ваши комментарии)

Продолжаем делать Змейку. В этой части речь пойдет о решении двух проблем: змейка не должна поворачивать в противоположном направлении, на повороте у змейки должна быть анимация для изгиба. Для решения этих задач придется слегка изменить код. Приступим! Исключение возможности поворачивать в противоположном направлении Создается строковая переменная  «Направление» у головы змеи (в примере из clickteam используется числовая переменная, где каждому направлению присвоено число). Значением переменной будут слова: «влево», «вправо», «вверх» и «вниз». Т.к. в начале змея движется вправо, то и по умолчанию переменная будет иметь значение «вправо». Далее, в событиях управления меняем действие установки направления головы, на установку соответствующего значения переменной «Направление». Теперь…
Создание игры «Змейка». Часть вторая.
Создание игры «Змейка». Часть вторая.
2015-01-19
100

10

Рейтинг: 5 ( 1 голосов)