Подстрели лису
Функцию onClipEvent (mouseDown) из игры "Поймай лису" необходимо изменить, учесть условия игры "Подстрели лису". Прежде всего, в качестве активной точки курсора будут использоваться координаты клипа "cursor", а не реальные координаты курсора мыши, которые с обновлением кадра могут немного измениться. Затем в функции проверяется. попал ли пользователь по какому-нибудь из семи клипов. Если один из клипов поражен, в клипе "fox" внутри пораженного клипа осуществляется переход к кадру "hit" – пользователь видит, что попал в лису. Значение переменной score увеличивается в случае поражения лисы, значение переменной shotsLeft уменьшается в любом случае.
Игра заканчивается, когда с помощью функции onClipEvent (enterFrame) перед созданием новой лисы обнаруживается, что у игрока не осталось выстрелов. Ролик завершается не сразу после последнего выстрела, а через одну – две секунды.
onClipEvent(mouseDown) {
// Показываем анимацию выстрела.
_root[
"cursor"
].gotoAndPlay(
"blast"
);
// Определяем координаты курсора.
x
=
_root._root[
"cursor"
]._x;
y
=
_root._root[
"cursor"
]._y;
// Проверяем, в какую лису попал пользователь,
for
(i
=
0
; i
<
7
; i
+
+
) {
// Проверяем на попадание только "высунувшихся" лис.
if
(_root[
"fox"
+
i][
"fox"
]._currentFrame
<
=
1
) {
// Проверяем, попал ли пользователь
//в какую-либо из лис.
if
(_root[
"fox"
+
i].hitTest(x, y,
false
)) {
// Показываем, что попал.
_root[
"fox"
+
i].fox.gotoAndPlay(
"hit"
);
// Увеличиваем счет.
score
+
+
;
}
}
}
// Уменьшаем число оставшихся выстрелов.
shotsLeft
-
-
;
// Обновляем счет, отображаемый на экране.
_root.showScore
=
"Score:"
+
score;
_root.showShotsLeft
=
"Shots Left:"
+
shotsLeft;
}
Данный код также задает переход клипа, содержащего курсор, к кадру "blast", анимация вспышки продолжается в течение нескольких кадров, затем ролик возвращается к кадру 1. Даже если игрок не попал в лису, он видит, что выстрел был сделан.
Следующая функция, onClipEvent(unload), запускается перед исчезновением клипа с рабочего поля. Это происходит при завершении игры. В данном случае функция необходима, чтобы сделать курсор видимым.
onClipEvent(unload) {
// Отображаем обычный курсор.
Mouse.show();
}
К сведению
После создания кода необходимо присвоить копиям клипа имена с "fox0" по "fox6", соответствующие их именам в библиотеке. В нашем примере центр всех клипов с изображениями лис совпадает с центром рабочего поля. Это было сделано следующим образом: анимация была добавлена в главную временную шкалу, выделена, скопирована при помощи команды Edit › Copy Frames (Редактировать › Копировать кадры) и вставлена в пустой клип.
Другие возможности
В игру легко внести различные изменения. Заданное количество выстрелов можно заменить таймером. Игра может состоять из уровней: игрок будет переходить на другой уровень, поразив определенное количество лис.
Имейте в виду, что игра дает возможность набирать более 50 очков. Каким образом? В ходе игры лисы начинают появляться друг за другом все быстрее и быстрее. Через некоторое время на экране одновременно будут появляться несколько лис. Когда пути двух лис пересекаются, вы можете убить их одним выстрелом, однако это требует сноровки. Если хотите, отмените данное свойство.
В игре могут использоваться некоторые звуковые эффекты и фоновые звуки. Игра будет более интересной, если добавить отвлекающую внимание анимацию, например пролетающую птицу или ветер, раскачивающий ветви.