if (shotsleft < 1) {
_root.gotoAndPlay("End");
// Если нет, показываем новую лису.
} else {
// Задаем появление новой лисы.
while (true) {
fox = int(Math.Random()*7);
if (_root["fox"+fox]._currentFrame == 1) {
break;
}
}
// Начинаем анимацию лисы.
_root["fox"+fox].gotoAndPlay(2);
// Вычисляем момент появления следующей лисы.
nextFox = getTimer()+timeBetweenFoxes;
}
}
}
Функцию onClipEvent(mouseDown) из игры «Поймай лису» необходимо изменить, учесть условия игры «Подстрели лису». Прежде всего, в качестве активной точки курсора будут использоваться координаты клипа «cursor», а не реальные координаты курсора мыши, которые с обновлением кадра могут немного измениться. Затем в функции проверяется, попал ли пользователь по какому-нибудь из семи клипов. Если один из клипов поражен, в клипе «fox» внутри пораженного клипа осуществляется переход к кадру «hit» – пользователь видит, что попал в лису. Значение переменной scoreувеличивается в случае поражения лисы, значение переменной shotsLeftуменьшается в любом случае. Игра заканчивается, когда с помощью функции onClipEvent (enterFrame) перед созданием новой лисы обнаруживается, что у игрока не осталось выстрелов. Ролик завершается не сразу после последнего выстрела, а через одну-две секунды.
onClipEvent (mouseDown) {
// Показываем анимацию выстрела.
_root["cursor"].gotoAndPlay("blast");
// Определяем координаты курсора.
x = _root._root["cursor"]._x;
o = _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 очков. Каким образом? В ходе игры лисы начинают появляться друг за другом все быстрее и быстрее. Через некоторое время на экране одновременно будут появляться несколько лис. Когда пути двух лис пересекаются, вы можете убить их одним выстрелом, однако это требует сноровки. Если хотите, отмените данное свойство.
В игре могут использоваться некоторые звуковые эффекты и фоновые звуки. Игра будет более интересной, если добавить отвлекающую внимание анимацию, например пролетающую птицу или ветер, раскачивающий ветви.
Исходный файл: Huntafoxfa
Одна из самых устойчиво популярных долгие годы игр – "Охота на оленей". В этой игре вы часами сидите, наблюдая пейзаж, пока не покажется олень, которого можно будет застрелить. Несмотря на то, что продано миллионы копий этой игры, она достаточно простая. Во Flash можно легко сделать что-нибудь в этом роде.
Задача проекта
Задача состоит в том, чтобы сделать игру-стрелялку, позволяющую пользователю передвигаться влево и вправо по пространству, большему, чем способно вместить в себя рабочее поле экрана. Мишени возникают в случайное время и в случайных местах, вне зависимости от того, куда сейчас смотрит игрок. Перемещение должно создавать игроку иллюзию пространства, так чтобы близкие объекты двигались быстрее далеких.
Подход
Все, что вы должны сделать по сравнению с предыдущей игрой, – это позволить пользователю перемещаться по большому фоновому изображению из стороны в сторону. Но это не так-то просто. Одни элементы фона ближе к играющему, чем другие. Чтобы у игрока действительно создалось ощущение движения охотника, близкие объекты должны двигаться быстрее дальних.
Читать дальше
Конец ознакомительного отрывка
Купить книгу