Чтение онлайн

на главную - закладки

Жанры

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

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

Шрифт:

Далее программа сортирует результаты игры. Так как в начале каждой строки базы данных содержатся набранные очки, именно по ним упорядочиваются записи, от лучшего результата игры к худшему.

# Упорядочиваем набранные очки. @score_text = sort { $b <=> $a } @score_text;

Следующий цикл отбирает первые десять результатов и выдает их как выходные данные. Каждый элемент строки специальным образом форматируется. Эта строка выглядит, например, следующим образом: «1.Gary 967». После номера строки ставится точка. Затем идет имя игрока: если оно содержит меньше 18 символов, оставшееся место заполняется пробелами. Далее выводятся набранные игроком очки – они выравниваются по правому краю, и если число цифр меньше девяти, то свободные места с левой стороны также заполняются пробелами.

# Определяем число

результатов,

# которые программа отошлет как выходные данные.

$num_scores = 10;

$score_count = 1;

# Просматриваем первые записи и отправляем данные.

print "highScoresText=";

foreach $score_line (@score_text) {

# Прочитываем записанные данные и создаем массив.

@split_data = split("&",$score_line);

# Выводим номер строки с точкой после него.

printf("%2i. ", $score_count);

# Выводим имя игрока, выравниваем по левому краю, оставшиеся

# свободные места до 18 символов заполняем пробелами.

printf("%-18s ",$split_data[1]);

# Выводим набранные очки, выравниваем по правому краю,

# оставшееся слева место до девяти символов заполняем

# пробелами.

printf("%9i\n",$split_data[0]);

$score_count++;

if ($score_count > $num_scores) { last; }

}

# Выходим из программы.

exit;

Если вы прежде программировали только на Flash и никогда раньше не сталкивались с Perl, вам будет достаточно сложно писать программы на этом языке. Можете не беспокоиться по этому поводу, потому что обычно подобные проекты разрабатываются двумя программистами совместно: один из них владеет языком Flash, другой – Perl. Если возможно, постарайтесь с кем-нибудь объединиться.

Демонстрация списка лучших игроков

Исходный файл: Highscores.fla

На Web-сайте надо разместить две программы, с помощью которых и будет формироваться список лучших игроков. Первая программа представляет собой демонстрационный ролик, показывающий, как набранные очки заносятся в базу данных и как они затем из нее извлекаются.

Кадр такого ролика, Highscores.fla, изображен на рис. 17.5. Область слева внизу позволяет вам ввести новый результат, а в области справа отображается список лучших игроков.

Рисунок 17.5. Ролик, отображающий список лучших игроков, позволяет проверить правильность работы программ, написанных вами на языке Perl

...

Примечание

Имена игроков и очки выравнены по левому краю (Рис 17.5). Я использовал моноширинный шрифт (Courier). Если использовать другие шрифты, например Ariel, то будет не так просто выравнять столбцы в рамках одного текстового поля.

Все программные коды в файле Highscores.fla привязаны к двум кнопкам (см. рис. 17.5).

Часть "Добавить результат" отображает имя игрока и набранные им очки в текстовых окнах, содержимое которых может изменяться. Когда вы запускаете эту программу, вы можете ввести имя и набранные очки, а затем щелкнуть по кнопке Submit Score (Добавить результат). Ниже приведен текст программы, закрепленной за этой кнопкой.

on (press) {

// Путь к файлу submitscore.pl.

url = "submitscore.pl";

// Определяем объект LoadVars.

myLoadVars = new LoadVars;

myLoadVars.name = name;

myLoadVars.score = score;

// Пересылаем данные.

returnedVars = new LoadVars;

myLoadVars.sendAndLoad(url,returnedVars,"GET");

resultText = "Sending...";

// Задаем результат.

returnedVars.onLoad = function {

resultText = "Done."

}

}

Вы уже использовали объект LoadVars в главе 12 для создания игр-викторин. Тогда вы не отсылали никаких данных серверу, вам требовался лишь текстовый файл. В этом примере вы вызываете программу, написанную на Perl, чтобы отсылать данные на сервер.

Элемент GET в конце команды SendAndLoad сообщает Flash, что данные будут передаваться с помощью протокола GET. Это один из вариантов, второй – использование протокола POST. Названные

протоколы соотносятся с двумя способами передачи данных из форм, которые используются HTML-страницами.

Данные, которые мы передаем, – это два свойства объекта myLoadVars: name и score. Когда передача завершается, выполняется функция, определяемая методом onLoad. В нашем случае она выводит сообщение в текстовое поле resultText.

К кнопке Get Scores (Обновить список) также прикреплена небольшая программа, но здесь не требуется пересылать значения каких-либо переменных:

on (press) {

// Указываем путь к программе getscores.pl.

url = "getscore.pl";

// Запрашиваем данные.

myLoadVars = new LoadVars;

myLoadVars.load(url);

highScoresText = "Getting High Scores...";

// Данные получены.

myLoadVars.onLoad = function {

highscoresText = myLoadVars.highscoresText;

}

}

Текст, выдаваемый программой Getscores.pl на выходе, начинается с highScoresText=. За счет этого оставшаяся часть текста помещается в одноименную переменную. Функция onLoad получает это значение из объекта myLoadVars и помещает в текстовое поле с соответствующим именем. Как только заканчивается пересылка текста, он выводится на экран.

Добавление списка лучших игроков в игру

Исходный файл: Whackafoxwithscores.fla

Как пример еще одной игры с использованием списка лучших игроков приведем файл Whackafoxwithscores.fla. Это все та же игра "Поймай лису", которую мы рассматривали в главе 8, но здесь она содержит еще и список лучших игроков.

К этой игре достаточно легко добавить список лучших результатов, потому что она подразделяется на три части. Сцена "Начало игры" была изменена таким образом, что уже при загрузке игры выводится список лучших игроков. Поэтому к стандартной команде stop в начале первого кадра этой сцены вам понадобится добавить те коды, которые будут отвечать за отображение списка лучших игроков:

// Указываем путь к программе getscores.pl.

url = "getscore.pl";

// Запрашиваем данные.

loadVariables (url,this);

// Выводим на экран информацию о том, что по кнопке щелкнули.

highScoresText = "Getting High Scores…";

stop;

Текстовое поле под названием highScoresText добавляется посередине экрана (рис. 17.6).

Рисунок 17.6. Теперь при загрузке игры «Поймай лису» на экран выводится список лучших игроков

В конце игры, в сцене «Игра закончена», появляется клип с несколькими текстовыми полями и кнопкой Submit Score. При этом очки, набранные в игре, должна подсчитывать и выводить сама программа. Сама по себе игра управляется действиями, которые относятся к клипу «actions» сцены «Игра». Поэтому переменная score привязана именно к этому клипу, а не к основной временной шкале. После добавления к тексту программы строки _root.score = score в основной временной шкале также появляется переменная score, которой присваивается число набранных очков. Когда приходит очередь сцены "Игра Закончена", первый кадр помещает набранные очки в клип "Добавление результатов". Одновременно удаляется предыдущее значение переменной name этого клипа.

sendscores.name = "";

sendscores.score = score;

stop;

На рис. 17.7 показан кадр из сцены «Игра закончена». Здесь вы можете видеть, что клип «Добавление результатов» содержит набранные игроком очки, текстовое поле, куда игрок должен ввести свое имя, и кнопку Submit Score.

Рисунок 17.7 . Последний кадр обновленной игры «Поймай лису» дает игроку возможность записать результат своей игры

Игрок вводит свое имя в первое текстовое поле, в то время как другое поле уже содержит набранные им очки, и он не может изменить результат. После этого игрок может щелкнуть по кнопке Submit Score, которая запустит следующую программу:

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

Мастер...

Чащин Валерий
1. Мастер
Фантастика:
героическая фантастика
попаданцы
аниме
6.50
рейтинг книги
Мастер...

Жених из гроба

Сотис Майя
1. Гробокопательница
Фантастика:
юмористическое фэнтези
сказочная фантастика
фэнтези
5.00
рейтинг книги
Жених из гроба

Ищу жену с прицепом

Рам Янка
2. Спасатели
Любовные романы:
современные любовные романы
6.25
рейтинг книги
Ищу жену с прицепом

Гримуар тёмного лорда I

Грехов Тимофей
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Гримуар тёмного лорда I

Заклятие предков

Прозоров Александр Дмитриевич
3. Ведун
Фантастика:
фэнтези
альтернативная история
8.49
рейтинг книги
Заклятие предков

Крепость над бездной

Лисина Александра
4. Гибрид
Фантастика:
боевая фантастика
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Крепость над бездной

Рота Его Величества

Дроздов Анатолий Федорович
Новые герои
Фантастика:
боевая фантастика
8.55
рейтинг книги
Рота Его Величества

Экспансия: Сотрудничество. Том 5

Белов Артем
5. Планетарный десант
Фантастика:
боевая фантастика
аниме
5.00
рейтинг книги
Экспансия: Сотрудничество. Том 5

Отверженный III: Вызов

Опсокополос Алексис
3. Отверженный
Фантастика:
фэнтези
альтернативная история
7.73
рейтинг книги
Отверженный III: Вызов

Князь Серединного мира

Земляной Андрей Борисович
4. Страж
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Князь Серединного мира

Возвышение Меркурия. Книга 8

Кронос Александр
8. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 8

Эволюционер из трущоб. Том 5

Панарин Антон
5. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 5

Локки 7. Потомок бога

Решетов Евгений Валерьевич
7. Локки
Фантастика:
аниме
эпическая фантастика
фэнтези
5.00
рейтинг книги
Локки 7. Потомок бога

Черный Маг Императора 4

Герда Александр
4. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 4