Вход/Регистрация
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
вернуться

Розенцвейг Гэри

Шрифт:

topic=The Planet&questions=Which planet is closest to the Sun?:Jupiter;Saturn;Mercury;Mars:2:

Обратите внимание, в текстовом файле переменные необходимо разделять знаком «&». Переменная questions состоит из нескольких строчек; в каждой содержится отдельный вопрос. Каждый вопрос состоит из трех частей: текст вопроса, ответы и номер правильного ответа. Части отделяются друг от друга двоеточием, а в качестве разделителя ответов мы используем точку с запятой.

Which planet is titled on its axis the most?:Earth;Venus;Mars;Uranus:3:

Which planet is the largest?:Jupiter;Earth;Neptune;Pluto:0:

Which planet has exactly two moons?:Venus;Mars;Saturn;Uranus:1:

тема=планеты&вопросы=Какая планета ближайшая к солнцу?:Юпитер;Сатурн;Меркурий;Марс:2:

У какой планеты ось имеет наибольший наклон?:Земля;Венера;Марс;Уран:3:

Какая планета самая большая?:Юпитер;Земля;Нептун;Плутон:0:

Какая планета имеет две луны?:Венера;Марс;Сатурн;Уран:1:

...

Совет

В конце каждой строки было добавлено двоеточие, чтобы строчка разбивалась кодом, другие дополнительные символы в конце строки будут помещены в четвертую, неиспользуемую часть. Какие могут быть дополнительные элементы? Например, при использовании текстовых редакторов Windows дополнительный невидимый символ помещается в конце каждой строки текста. Если вы позволите программе Flash использовать этот символ для номера правильного ответа, это помешает ей преобразовать номер во что-то еще. То есть лишнее двоеточие помещает дополнительный символ в неиспользуемый четвертый элемент каждой строки без ущерба для работы программы.

...

Внимание!

Не вставьте ненароком пустую строчку в конец текстового файла. Такая строчка будет создана, если нажать клавишу Enter или Return после ввода последнего вопроса. Если в конец текстового файла добавить пустую строчку, код воспримет ее как одиннадцатый элемент.

Текст разбивается на несколько элементов с помощью функции split, которая сначала отделяет вопросы друг от друга, затем разделяет части вопросов и, наконец, отделяет ответы. В результате получается двумерный массив, содержащий всю необходимую вам информацию.

function initQuestions(questions) {

// Задаем значение переменной topic.

topic = loadQuestions.topic;

// Разбиваем на отдельные вопросы.

// Внимание: в некоторых случаях лучше использовать

// значение 13, а не 10.

qArray = loadQuestions.questions.split(String.fromCharCode(10));

// Разбиваем строчку вопроса на элементы.

for(i=0;i<qArray.length;i++) {

qArray[i] = qArray[i].split(":");

// Отделяем ответы друг от друга.

qArray[i][1] = qArray[i][1].split(";");

}

// Начинаем игру.

_root.gotoAndPlay("start game");

}

...

Внимание!

Я использовал выражение String. fromCharCode (13), чтобы получить символ возврата каретки, что нужно для отделения строк в текстовом файле. Почему я не применил константу newline? Дело в том, что newline в программе Flash отличается для систем Macintosh и Windows. В Macintosh возвращается значение 13, а в Windows – 10. Более того, некоторые текстовые редакторы предпочитают значение 10, а некоторые оба! Так что, если игра не движется далее первого вопроса, попробуйте поменять 10 на 13, чтобы проверить, не в этом ли проблема.

Когда игра переходит к кадру «play», код ActionScript в основной временной шкале сразу же вызывает функцию initGame, которая обнуляет переменные questionNum и numRight и вызывает функцию displayQuestion, отображающую первый вопрос.

...

Примечание

Функция split берет строчку и разбивает ее на фрагменты, которые помещаются в массив. Единственный параметр, который используется в этой функции, – это символ, необходимый для разделения фрагментов. В предыдущем примере как двоеточие, так и точка с запятой применялись для разбиения строчки и помещения элементов в массив.

function initGame {

// Устанавливаем значения переменных.

questionName = 0;

numRight = 0;

// Выводим первый вопрос.

displayQuestion;

}

Функция displayQuestion определяет, закончена ли игра или нет, и в случае положительного ответа отображает окончательное количество набранных очков и переходит к кадру «game over». В противном случае она берет вопрос и каждый ответ и помещает их в текстовые поля внутри соответствующих клипов. Номер правильного ответа присваивается переменной correctAnswer.

function displayQuestion {

// Проверяем, все ли вопросы уже заданы.

if (questionNum >= qArray.length) {

// Отображаем окончательное число очков и завершаем игру.

finalScore = numRight + "out of" + qArray.length;

gotoAndPlay("game over");

} else {

// Отображаем вопрос и ответы на экране.

question.text = qArray[questionNum][0];

answer0.text = qArray[questionNum][1][0];

answer1.text = qArray[questionNum][1][1];

answer2.text = qArray[questionNum][1][2];

answer3.text = qArray[questionNum][1][3];

// Выводим номер ответа.

questionNumDisplay = questionNum+1;

// Запоминаем, какой ответ верный.

correctAnswer = int(qArray[questionNum][2]);

// Делаем так, чтобы текст "въезжал" на экран.

animateIn;

}

}

  • Читать дальше
  • 1
  • ...
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: