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

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

Жанры

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

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

Шрифт:

on (press) {

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

url = "submitscore.pl";

// Отправляем значения переменных:

// "score" – счет игры,

// "name" – имя игрока.

loadVariables(url,this,"GET");

// Меняем кадр, чтобы по кнопке Submit нельзя было

// щелкнуть дважды.

play;

}

Набранные очки пересылаются серверу таким же образом, как и в демонстрационном файле Highscores.fla. Отличие заключается в добавлении команды play, благодаря которой происходит смена кадра. Второй кадр аналогичен первому, за исключением того, что здесь отсутствует кнопка Submit Score. Это сделано для того, чтобы игрок не мог несколько раз щелкать по кнопке, вводя таким образом несколько результатов.

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

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

определенные затруднения, которые вы, скорее всего, не приняли во внимание.

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

Почему бы не проверять Flash-игру или Perl-программу на наличие нецензурных выражений? Вы можете так и поступить, но это не решит проблему окончательно. Одни из игроков могут слегка измененить написание слов либо использовать между ними пробелы или тире, другие абсолютно нормальными словами скажут что-нибудь неприличное. Иначе говоря, совсем избежать неприятных ситуаций, скорее всего, не удастся.

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

Другая проблема – это жульничество. Как только будут объявлены лучшие результаты, игроки станут искать способы смошенничать. И это достаточно легко сделать. Можно использовать различные методы – от остановки игры в решающий момент, чтобы перевести дух и найти решение в сложившейся ситуации до использования "взламывающих" программ, которые могут считывать информацию из памяти компьютера игрока и записывать новые данные. Таким образом, 42 балла можно легко превратить в 42 миллиона баллов.

Однако, если эти сложности вас не пугают и вы все-таки решили включить в игру список лучших игроков, не ограничивайте свои возможности только описанными здесь приемами. Попробуйте использовать другие языки программирования. Например, PHP – очень популярный язык, схожий с языком Perl. С равным успехом CGI-программы можно создавать на основе более старых и известных языков, таких как C и C++.

Определение версии Flash-плагина

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

Язык ActionScript во Flash 4 и 5 отличался так сильно, что ролик со сложным сценарием, созданный во Flash 5, скорее всего вообще бы не работал при использовании плеера четвертой версии. Однако Flash MX и Flash 8 достаточно сходны для того, чтобы ролик с кодом, созданным в версии 8, мог достаточно часто работать во Flash MX-плеере.

Это создает интересную проблему. Довольно легко сделать игру во Flash 8, которая будет работать у многих людей с Flash MX-плеером до какого-то момента. Когда же попадется участок кода, требующий Flash 8-плеера, игра или перестанет работать, или начнет вести себя непредсказуемым образом.

Как узнать версию плеера

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

Функция getVersion возвращает строку вида MAC 6,0 21,0. Первое слово – это аббревиатура платформы, обычно MAC или WIN. Вторая часть – это версия Flash-плеера, в настоящий момент запущенная на пользовательской машине.

Каждая часть номера версии отделена запятыми. Это создает трудности при сравнении имеющейся версии с требуемой. Как вы, например, определите, MAC 6,0 21,0 больше или равно версии 8?

С помощью некоторых операций со строкой вы можете перевести значение, возвращаемое функцией getVersion во что-нибудь более пригодное к использованию. Следующая функция разбивает строку, используя пробелы и запятые как разделители. Она создает переменную – объект, к которому вы можете легко обращаться.

function getVersionNumber {

// Определяем позиции запятых и пробелов.

spacePos = getVersion.indexOf(" ");

firstComma = getVersion.indexOf(",");

secondComma = getVersion.indexOf(",",firstComma+1);

thirdComma = getVersion.indexOf(",",secondComma+1);

lastChar = getVersion.length;

// Создаем объект version.

version = new Object;

version.platform = getVersion.substring(0,spacePos);

version.n1 = getVersion.substring(spacePos+1,firstComma);

version.n2 = getVersion.substring(firstComma+1,secondComma);

version.n3 = getVersion.substring(secondComma+1,thirdComma);

version.n4 = getVersion.substring(thirdComma+1,lastChar);

return(version);

}

В

результате работы getVersionNumber получится примерно следующее:

{platform: MAC, n1: 6, n2: 0, n3: 21, n4: 0}

Таким образом, если вы хотите получить главный номер версии Flash, просто используйте getVersionNumber. n1.

Требуемые версии

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

Вот функция, которая берет полный номер требуемой версии и сравнивает с номером версии, запущенной в настоящее время на компьютере пользователя. Она возвращает истинное значение только в том случае, если установленная версия больше или равна требуемой.

function requiredVersion(required) {

version = getVersionNumber;

// Возвращаем false, если номер версии меньше необходимого.

if (version.n1 < required.n1) return(false);

// Возвращаем true, если номер версии больше необходимого.

if (version.n1 > required.n1) return(true);

// Главные позиции номера совпадают, сравниваем следующие позиции.

if (version.n2 < required.n2) return (false);

if (version.n2 > required.n2) return (true);

if (version.n3 < required.n3) return (false);

if (version.n3 > required.n3) return (true);

if (version.n4 < required.n4) return (false);

if (version.n4 >= required.n4) return (true);

}

Вы можете использовать эту функцию так:

if (requiredVersion) ({n1: 6, n2: 0, n3: 21, n4: 0}) {

gotoAndPlay("start");

} else {

gotoAndStop("version problem");

}

Если версия пользователя меньше, чем 6.0.21.0, ролик переходит к кадру, который объясняет, что данная игра требует обновления версии плеера.

...

Примечание

Все коды в функциях getVersionNumber и requiredVersion будут работать и с Flash MX и с Flash 8. Весь код ничего не будет стоить, если будет работать только с Flash 8. Идея состоит в том, чтобы предупредить пользователя Flash MX-плеера о возможных проблемах.

Обычное данную функцию предполагается использовать для того, чтобы обнаруживать небольшие обновления Flash-плеера. Предположим, например, что Macromedia выпускает Flash версии 6.0.42.0. Эта версия содержит исправление, которое необходимо для корректной работы вашей игры. Вы должны проверить, есть ли у пользователя данная версия, и предупредить его, если ее нет.

Важно, чтобы эта проверка возвращала true только в том случае, если у пользователя установлена требуемая версия или более новая. Обычная ошибка, которую делает программист, это поиск точного номера версии, например, 6. Тогда, если у пользователя установлена 5-я или любая другая версия, он получает предупреждение о необходимости обновления. Спустя год выходит версия 7, а поскольку версия 7 также не является версией 6, пользователь получает точно такое же предупреждение! Я постоянно сталкиваюсь с этим в программировании во Flash, Stockwave и JavaScript. Функция requiredVersion всегда возвращает true если версия пользователя более новая, чем требуемая.

Возможности Flash 8-плеера

Кроме выяснения номера версии Flash-плеера, вам также может понадобиться узнать другие возможности пользовательского варианта плеера. Флэш может работать на разных платформах, например, на карманных компьютерах. Некоторые из этих устройств неспособны поддерживать весь набор свойств, которыми оперирует Flash 8 на MAC и Windows.

Вы можете проверить некоторые характеристики системы с помощью объекта System.capabilities. Свойства этого объекта содержат требуемые параметры. Вот пример кода, который совершает цикл по всем свойствам и возвращает каждое значение.

// Список всех свойств.

capabilitiesDisplay = "";

for(i in System.capabilities) {

capabilitiesDisplay += i+": "+System.capabilities[i] + newline;

}

Возвращаемый список выглядит примерно так на моем Macintosh Powerbook:

language: en-US

input: point

manufacturer: Macromedia Macintosh

os: Mac OS 10.1.3

serverString:

A=t&MP3=t&AE=t&VE=t&ACC=f&DEB=t&V=MAC%206%2C0%2C21%2C0&M=Macromedia

Macintosh&R=1152x768&DP=72&COL=color&AR=1&I=point&OS=Mac OS

10.1.3&L=en

isDebugger: true

version: MAC 6,0,21,0

hasAudio: true

hasMP3: true

hasAudioEncoder: true

hasVideoEncoder: true

screenResolutionX: 1152

screenResolutionY: 768

screenDPI: 72

screenColor: color

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

Зубных дел мастер

Дроздов Анатолий Федорович
1. Зубных дел мастер
Фантастика:
научная фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Зубных дел мастер

Бывшие. Война в академии магии

Берг Александра
2. Измены
Любовные романы:
любовно-фантастические романы
7.00
рейтинг книги
Бывшие. Война в академии магии

Идеальный мир для Лекаря 7

Сапфир Олег
7. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 7

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

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

Кодекс Охотника. Книга X

Винокуров Юрий
10. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
6.25
рейтинг книги
Кодекс Охотника. Книга X

Хозяин Теней

Петров Максим Николаевич
1. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней

Опасная любовь командора

Муратова Ульяна
1. Проклятые луной
Фантастика:
фэнтези
5.00
рейтинг книги
Опасная любовь командора

Друд, или Человек в черном

Симмонс Дэн
Фантастика:
социально-философская фантастика
6.80
рейтинг книги
Друд, или Человек в черном

Волхв

Земляной Андрей Борисович
3. Волшебник
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Волхв

Мастер Разума VII

Кронос Александр
7. Мастер Разума
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер Разума VII

Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен

Агеева Елена А.
Документальная литература:
публицистика
5.40
рейтинг книги
Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен

Сумеречный Стрелок 5

Карелин Сергей Витальевич
5. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 5

Морской волк. 1-я Трилогия

Савин Владислав
1. Морской волк
Фантастика:
альтернативная история
8.71
рейтинг книги
Морской волк. 1-я Трилогия

Прогрессор поневоле

Распопов Дмитрий Викторович
2. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прогрессор поневоле