Иллюстрированный самоучитель по созданию Flash-игр

Поймай хорошее яблоко

Создание кода

Код клипа "actions" аналогичен тому, что использовался в игре "Поймай яблоко". Изменятся только функции. В функцию initGame было внесено лишь одно изменение: число падающих яблок было увеличено до 50.

Иллюстрированный самоучитель по созданию Flash-игр › Игры типа "Поймай или пропусти" › Поймай хорошее яблоко
Рис. 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 полностью совпадает с аналогичной функцией игры "Поймай яблоко", поэтому нет смысла повторять ее здесь. Функция dropNewApple будет отличаться, так как она должна выбирать, какое яблоко бросать, а затем отображать произвольный кадр выбранного клипа.

function dropNewApple() {
    // Проверяем, прошел ли заданный промежуток времени,
    if (timeSinceLastApple > 20) {
        // Бросаем яблоко, если не превышено
        // их предельно допустимое количество,
        if (lastApple 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++;
}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.