Поймай лису
Функция getTimer () – это своеобразные часы. Функция возвращает количество миллисекунд, прошедших после начала ролика. Значение этих часов постоянно увеличивается, поэтому данную функцию удобно использовать для управления временными интервалами в вашей игре.
Функция onClipEvent (enterFrame) определяет, наступило ли время для появления следующей лисы. Затем она выбирает такое новое отверстие, которое не используется в данный момент. Интервал времени между появлениями лис сокращается на 10 миллисекунд, в результате чего игра с каждым разом все больше ускоряется. Если значение интервала составляет менее 1000 миллисекунд, игра завершается. За 150 секунд пользователь получает 100 возможностей поразить лису.
onClipEvent(enterFrame) {
// Определяем, не пора ли показывать следующую лису,
if
(getTimer()
>
=
nextFox) {
// Сокращаем время между показами.
timeBetweenFoxes
-
=
10
;
// Выясняем, не пора ли заканчивать игру,
if
(timeBetweenFoxes
<
1000
) {
_root.gotoAndPlay(
"End"
);
// Если нет, показываем следующую лису.
}
else
{
// Увеличиваем счетчик показанных лис.
numFoxes
+
+
;
_root.showScore
=
score
+
"/"
+
numFoxes;
// Определяем, какая лиса покажется,
while
(
true
) {
fox
=
Int(Math.Random()
*
18
);
if
(_root[
"fox"
+
fox]._currentFrame
=
=
1
)
break
;
// Выбранная лиса появляется из отверстия.
_root[
"fox"
+
fox].gotoAndPlay(
"popup"
);
// Устанавливаем время появления следующей лисы.
nextFox
=
getTimer()
+
timeBetweenFoxes;
}
}
}
}
Следующая функция обрабатывает нажатия кнопки мыши пользователя. Здесь используется тот же самый прием, что и в игре "Найди лису": программа проверяет клипы на попадание по ним при помощи функции hitTest.
Также программа проверяет, воспроизводится ли анимационная последовательность, в которой лиса выглядывает из отверстия. Кадр 1 клипа является статическим и представляет собой простое отверстие. Кадры 2-24 – это анимация лисы, которую поразил пользователь. Пользователь может щелкнуть по лисе только во время анимации, в которой лиса выглядывает из отверстия (эта анимация начинается с кадра 25). Таким образом, если номер кадра больше, чем 24, щелчок разрешается. В противном случае он игнорируется.
onClipEvent(mouseDown) {
// Определяем, по какому месту щелкнул пользователь.
x
=
_root._xmouse;
y
=
_root._ymouse;
// Проверяем на попадание всех лис.
for
(i
=
0
; i
<
18
; i
+
+
) {
// Проверяем только выглядывающих лис.
if
(_root[
"fox"
+
i]._currentFrame
>
24
) {
// Выясняем, попал ли пользователь по лисе,
if
(_root[
"fox"
+
i].hitTest(x, y,
false
)) {
// Воспроизводим анимацию, соответствующую попаданию.
_root[
"fox"
+
i].gotoAndPlay(
"whack"
);
// Увеличиваем количество очков.
score
+
+
;
_root.showScore
=
score
+
"/"
+
numFoxes;
}
}
}
}
К сведению
Как обычно, в некоторые места сценария необходимо добавить дополнительный код. В основной кадр, а также в кадры начала и завершения игры необходимо поместить команду stop (). В нашем примере эти кадры являются отдельными сценами.
Другие возможности
Имейте в виду, что клипы, изображающие лис, не обязательно должны быть одинаковыми. Сценарий реагирует только на метки "whack" (удар) и "popup" (выглядывающая лиса), а после 24 кадра еще и на начало анимации выглядывающей лисы. Вы можете использовать несколько клипов, изображающих разных лис. Необходимо лишь убедиться, что они достаточно похожи для того, чтобы код мог их обрабатывать, а также присвоить им соответствующие имена при размещении экземпляров клипов на рабочем поле. Использование различных лис сделает игру интереснее.
Завершение игры может быть задано различными способами. В нашем примере ролик воспроизводится, пока интервал между появлениями лис не будет меньше одной секунды, что соответствует появлению 100 лис. Игра может заканчиваться и после того, как произведено определенное количество щелчков. Ваша игра может состоять из нескольких уровней. Поразив заданное число лис, пользователь переходит к другому уровню.