Охота на лис
Создание кода
Хотя и клипы и слои отличаются от тех, что использованы в игре "Подстрели лису", основной сценарий этой игры применим и в нашем случае. Это сценарий, назначенный клипу "actions". Необходимо внести только два изменения, и я не буду приводить здесь весь код. Первое изменение состоит в том, что теперь можно выбирать из 10, а не из 7 лисиц, поэтому число внутри функции Math.random должно быть 10.
Второе изменение обращает внимание на положение курсора, так что сцена перемешалась, если пользователь двигает курсор вправо или влево. В этом случае вызывается функция moveScene на корневом уровне. Она принимает значения – 1 или 1 в зависимости от направления движения.
// Перемещаем панораму,
if
(_root._xmouse
<
50
) {
_root.moveScene(
1
);
}
else
if
(_root._xmouse
>
500
) {
_root.moveScene(
-
1
);
}
Клип "moveScene" находится на главной временной шкале. Этот сценарий начинается с определения нескольких переменных. panAmount отслеживает расстояние, на которое пользователь сдвинулся вправо или влево. Например, если пользователь двигается влево, тогда графика движется вправо и panAmount принимает значение 1. Если он продолжает двигаться в этом направлении, panAmount увеличивается до 2, – , и т.д. Если пользователь движется в противоположном направлении, panAmount принимает значения – 1, – 2 и так далее.
Поскольку мы не можем нарисовать бесконечно широкую сцену, нам приходится задавать границы панорамирования. Две переменные содержат максимально разрешенное передвижение влево и вправо. Я определил эти границы путем проб и ошибок. Начал я с 50 и увидел, что игрок может доходить до конца деревьев. Тогда я начал пробовать меньшие числа, пока игрок не перестал вылезать за границы сцены.
panLimitLeft
=
-
30
;
panLimitRight
=
30
;
panAmount
=
0
;
Чтобы перемешаться по сцене, сначала проверяется, не превышает ли следующее значение panAmount допустимые границы. Функция работает только в том случае, если следующее значение находится в пределах допустимого.
Потом три клипа – "trees", "bushes" и "hills" – перемещаются в нужном направлении. Деревья перемещаются с коэффициентом (фактически скоростью) 10, кусты – с коэффициентом 5 и холмы – 4. Я подобрал эти значения путем проб и ошибок. По-моему, они создают достаточное ощущение глубины.
Первые 7 лисиц, которые находятся прямо за деревьями, движутся с ними вместе с коэффициентом движения 10. Остальные три лисы перемещаются с коэффициентом 5, поскольку сидят за кустами.
function
moveScene(d) {
// Проверяем, не выходит ли значение панорамирования за
// разрешенные границы.
if
((panAmount
+
d
>
panLimitLeft) and (panAmount
+
d
<
panLimitRight)) {
// Увеличиваем значения.
panAmount
+
=
d;
// Передвигаем слои с разными скоростями,
trees._x
+
=
d
*
10
;
bushes._x
+
=
d
*
5
;
hills._x
+
=
d
*
4
;
// Передвигаем клипы "foxes 0-6".
for
(i
=
0
; i
<
7
; i
+
+
) {
_root[
"fox"
+
i]._x
+
=
d
*
10
;
}
// Передвигаем клипы "foxes 7-9"
for
(i
=
7
; i
<
10
; i
+
+
) {
_root[
"fox"
+
i]._x
+
=
d
*
5
;
}
}
}
Я уже упоминал, что в конце клипа "peeking fox" появляется новый сценарий. Клип "peeking fox" содержится внутри всех трех клипов с лисами. Это статичное изображение лисы. Также он содержит короткую анимацию попадания, которую показывает при щелчке пользователя по лисе. В конце этой анимации я возвращаю клип "peeking fox" в начальную позицию, а также отправляю родительский клип к первому кадру. Это означает, что вместо того чтобы проигрывать анимационную последовательность "покажи – подожди – спрячь", лиса сразу оказывается видимой.
gotoAndStop(
1
);
_parent.gotoAndStop(
1
);
К сведению
Все стандартные части предыдущих игр присутствуют и здесь. Есть окно начала игры с кнопкой в нем. Есть два текстовых поля: очки и оставшиеся выстрелы. Курсор невидим и заменен клипом с изображением р ла. Во всех этих случаях используется код как в игре "Подстрели лису"
Другие возможности
Чтобы улучшить игру, я увеличил промежутки времени между появлениями лисы. Сейчас они составляют 2 секунды, а должны быть больше двух минут, чтобы игра стала напоминать "Охоту на оленей". Вы можете даже сделать промежутки случайными, чтобы было еще интереснее.
Вместо того чтобы переключать внимание охотника справа налево, вы можете двигаться по кругу. В некотором отношении это может быть проще. Вам не надо беспокоиться о слоях перспективы, как в этой игре. Вместо этого фон может быть одной неподвижной картинкой. Однако, вы также должны найти способ соединять друг с другом левую и правую половины круговой панорамы. Самый простой способ сделать это – заставить правую сторону повторить полную картину вида рабочего поля слева. Тогда, даже если игрок пытается продвинуться дальше вправо, вы просто повторяете весь путь налево. Потребуется немало терпения и труда, чтобы все получилось гладко, но достичь этого возможно.