- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript - Гэри Розенцвейг
Шрифт:
Интервал:
Закладка:
Добавление списка лучших игроков в игру
Исходный файл: 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, которая запустит следующую программу:
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, ролик переходит к кадру, который объясняет, что данная игра требует обновления версии плеера.
...Примечание