b5ab525c

bad apple" состоит из 20



Рисунок 9.5 Клип " bad apple" состоит из 20 кадров. Каждый кадр содержит изображение яблока и одного из согласных звуков


function initGame() {
// Инициализация переменных, хранящих
// номера первого и последнего яблока.
firstApple = 1;
lastApple = 0;
// Инициализация переменной, хранящей число пойманных яблок,
score = 0;
// Задаем общее количество яблок.
totalApples = 50;
// Скорость падения и счетчик времени между появлениями яблок.
timeSinceLastApple = 0;
appleSpeed = 5;
// Создаем экземпляр клипа, содержащий лису.
attachMovie("running fox","fox",999999);
fox._x = 275;
fox._y = 300;
}



Функция moveFox полностью совпадает с аналогичной функцией игры "Поймай яблоко", поэтому нет смысла повторять ее здесь. Функция drop-NewApple будет отличаться, так как она должна выбирать, какое яблоко бросать, а затем отображать произвольный кадр выбранного клипа. function dropNewApple() {
// Проверяем, прошел ли заданный промежуток времени,
if (timeSinceLastApple > 20) {
// Бросаем яблоко, если не превышено
// их предельно допустимое количество,
if (lastApple < totalApples) { // Устанавливаем вероятность сброса яблока в 10%.
if (Math.random() < .1) {
// Создаем объект-яблоко.
lastApple++;
if (Math.random() < .5) {
//В 50% случаев яблоко плохое.
attachMovie( "bad apple", "apple"+lastApple, lastApple);
_root["apple"+lastApple].type = "bad";
} else {
// В 50% случаев яблоко хорошее.
attachMovie( "good apple", "apple"+lastApple, lastApple);
_root["apple"+lastApple].type = "good";
}
f=int(Math.Random()*_root["apple"+ lastApple]._totalFrames) + 1;
trace(f);
_root["apple"+lastApple].gotoAndStop(f) ;
_root["apple"+lastApple]._x = Math.random()*490+30;
_root["apple"+lastApple]._y = 0;
// Сбрасываем счетчик времени ожидания.
timeSinceLastApple = 0;
// Увеличиваем скорость падения яблока
if (appleSpeed < 10) appleSpeed += .5;
}
}
}
// Если не бросили яблоко, приближаем это событие.
timeSinceLastApple++;
}

Функция dropNewApple создает переменную type для каждого клипа. Хотя данные клипы не имеют внутри себя сценария, для них можно определять переменные. Поэтому переменная type для гласных звуков будет иметь значение "good", для согласных- bad". Данная переменная проверяется в функции moveApples, когда игрок ловит яблоко. Таким образом, можно определить, поймал ли игрок хорошее яблоко или плохое. function moveApples() {
// Проверяем все летящие яблоки.
for (i = f irstApple,- i // Определяем местоположение яблока.
х = _root["apple"+i]._x;
у = _root["apple"+i]._y + appleSpeed;
// Выясняем, достигло ли яблоко земли,
if (у > 400) { removeApple(i);
// Попало ли в яблоко корзину?
} else if ((Math.abs(y-fox._y) < 10) and (Math.abs(x-fox._x) < 25))
{ if (_root["apple"+ij.type == "good") {
// Если яблоко хорошее, увеличиваем очки,
score += -1;
} else {
// Если плохое - уменьшаем.
score -= 1;
// Проверяем, чтобы количество очков
//не было отрицательным числом,
if (score < 0) score = 0;
}
removeApple(i) ;
// Продолжаем перемещать яблоко.
} else {
_root["apple"+i]._y = y;
}}}


Функция removeApple аналогична соответствующей функции в игрe "Поймай яблоко".

Содержание раздела