Викторина с учетом времени
Наибольшая часть кода находится в кадре "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
;
}