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

Викторина с учетом времени

Наибольшая часть кода находится в кадре "play", то есть в том кадре, где задаются вопросы, и пользователь должен на них ответить. Сначала функция initGame обнуляет счет и выводит первый вопрос.

function initGame() {
    // Определяем переменные.
    questionNum = 0;
    score = 0;
    // Выводим первый вопрос.
    displayQuestion();
}

Функция displayQuestion берет следующий вопрос и помещает вопрос и ответы в соответствующие текстовые поля. Она также устанавливает количество возможных очков за правильный ответ на данный вопрос равным 1000.

function displayQuestion() {
    // Проверяем, все ли вопросы заданы,
    if (questionNum >= qArray.length) {
        // Отображаем окончательный счет, завершаем игру.
        gotoAndPlay("game over");
    }
    else {
        // Перемешиваем ответы.
        answers = shuffleArray(qArray[questionNum][1].slice(0));
        // Выводим вопрос и ответы на экран,
        question.text = qArray[questionNum][0];
        answer0.text = answers[0];
        answer1.text = answers[1];
        answer2.text = answers[2];
        answer3.text = answers[3];
        // Отображаем номер вопроса.
        questionNumDisplay = questionNum + 1;
        // Запоминаем, какой ответ правильный.
        correctAnswer = qArray[questionNum][1][0];
        // Воспроизводим анимацию текста.
        animateln();
        // Присваиваем начальное количество возможных очков - 1000.
        potentialPoints = 1000;
    }
}

При каждом обращении к кадру "play" клипом "actions" вызывается функция scoreCount. Она вычитает единицу из максимального возможного числа очков, проверяя, чтобы это значение не оказалось менее 0.

//В каждом кадре из максимального возможного числа очков
// вычитаем единицу, 
function scoreCount() {
    // Проверяем, на месте ли последний ответ,
    if (answers3._x == 400) {
        // Вычитаем единицу.
        potenrialPoints -= 1;
        if (potentialPoints < 0)
            potentialPoints = 0;
    }
}

Функция shuffleArray используется методом displayQuestion, чтобы случайным образом перемешать ответы. Сначала создается новый массив, а затем поэлементно из старого массива добавляются значения в новый массив.

// Берем массив array1 и перемешиваем его элементы
// для массива array2.
function shuffleArray(array1) {
    // Создаем новый, пустой массив.
    array2 = new Array();
    // Просматриваем массив с помощью цикла,
    do {
        // Выбираем случайную величину.
        r = int(Math.random() * array1.length);
        // Добавляем элемент в новый массив.
        array2.push(array1[r]);
        // Удаляем элемент из старого массива,
        array1.splice(r, 1);
    } while(array1.length > 0);
    // Возвращаем новый массив,
    return(array2);
}

Функция animateIn определяет положение четырех ответов с правой стороны рабочего поля. Она указывает, что каждый из этих четырех клипов должен остановиться при перемещении влево, когда достигнет нужного горизонтального положения (400 пикселов от правой границы игрового поля). Сценарий, прикрепленный к каждому клипу, перемещает клип влево до тех пор, пока не будет выполнено вышеуказанное условие.

function animateln() {
    // Определяем положение каждого ответа
    //и указываем место, где каждый клип должен остановиться.
    answer0.xstop = 400;
    answer0._x = 800;
    answer1.xstop = 400;
    answer1._x = 1000;
    answer2.xstop = 400;
    answer2._x = 1200;
    answer3.xstop = 400;
    answer3._x = 1400;
}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.