Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Секреты разработки игр в Macromedia Flash MX - Макар Дж.

Макар Дж. Секреты разработки игр в Macromedia Flash MX — М.: КУДИЦ-ОБРАЗ , 2004. — 608 c.
ISBN 0-201-77021-0
Скачать (прямая ссылка): sekretirazrabotkiigr2004.djvu
Предыдущая << 1 .. 142 143 144 145 146 147 < 148 > 149 150 151 152 153 154 .. 210 >> Следующая

информацию. В строке 3 мы переопределяем обработчик события chatReceiver,
который мы определили с различными функциями в кадре Chat System. Далее,
в строке 4, мы подключаемся к игре. Этот метод соединяет вас с комнатой,
которую объект ElectroServerAS выбирает для вас, для вашей игры. (Вы не
должны знать имя этой комнаты; объект ElectroServerAS всегда выбирает ее
сам.) Убедитесь, что вы не используете метод joinRoom() до того, как
определили все обработчики событий; иначе вы можете получить информацию о
вашей игре, которая не вызывает правильных событий. Наконец, в строке 5
выполняется iAmln(). Эта функция, которую мы будем обсуждать ниже,
создает переменную в вашей комнате, указывающую, что вы находитесь там.
Ниже представлена эта функция iAmlnQ.
1 function iAmln() {
2 var name = "player"+ ES.pi ayer;
3 var val = "here";
4 ES.createVariable(name, val);
5 i
440
Часть 2. Исследование основ
Эта функция создает переменную в вашей комнате на сервере с именем
playerl или player2 (в зависимости от того, каким игроком вы являетесь).
Когда вы вьн зываете кого-то, свойство объекта ElectroServerAS с именем
player устанавливав ется в 1. Если вы тот, кого вызывают, то это свойство
устанавливается в 2. К не* му обращаются для создания имени переменной в
строке 2 выше. Значение это переменной равно "here" (строка 3). В строке
4 мы устанавливаем переменну1 на сервере, вызывая метод createVariable()
объекта ElectroServerAS. Далее mi рассматриваем функцию roomVarChanged(),
и поэтому мы устанавливаем эт переменные на сервере в первую очередь.
Это функция roomVarChanged():
1 function гoomVarChanged(ob) {
2 if {ob.playerl == "here" && ob.player2 == "here") {
3 locked = false;
4 if ( ! initializedYet) (
5 initializedYet = true;
6 startGame();
Эта функция вызывается всякий раз, когда переменная в вашей комнате
создан; модифицирована или удалена. Объект передается со всеми
находящимися в в; шем пространстве переменными. Есть некоторые другие
необязательные парг метры, которые мы здесь не используем и которые
передают информацию о торЯ какие переменные были модифицированы или
удалены. (См. приложение С* "Объект ElectroServerAS", для получения
дополнительной информации см. осо бенно переменную onRoomVarChange.) Как
вы можете видеть в строке 2, мы проверяем, равны ли playerl и player2
значению "here". Если да, то это означасЛ что оба игрока находятся в
комнате и готовы к игре. Тогда мы устанавливаем" значение переменной
locked в false. Значение locked равно true перед тем, как м ы проверили
наличие обоих игроков. Мы используем эту переменную для удержяИ ния
игрока от совершения хода до того, как готовы оба игрока. Вы увидите
позднее, как это используется. В строке 4 мы проверяем, равно ли значение
пя
7
8
} else {
9
10 11 12
13
14
locked = true; if (initializedYet) {
popup.gotoAndStopf"player left");
Глава 17. Крестики-нолики: ваша первая многопользовательская игра
441
ременной initializedYet значению true или нет. Если оно не равно true, то
мы устанавливаем его в true и вызываем функцию startGame(). Переменная
initializedYet используется для определения того, когда игрок покинул
игру. В строке 10 вы можете видеть, что если значение initializedYet
равно true и playerl или player2 не равен "here", то игрок покинул игру.
(c)Способность правильно определять, когда игрок покинул игру, была главной
проблемой во Flash-игрзх. Это труднее, чем должно было бы быть. Это может
быть сделано с помощью обычных многопользовательских серверов, но обычно
требует нудного сравнения списка пользователей. Вы сравнивали бы список
пользователей со старым списком пользователей, чтобы увидеть, кто вошел в
комнату или кто покинул ее. С описанной методикой переменной комнаты вы
можете очень легко сказать, когда ваш соперник находится в комнате. Если
соперник покидает комнату, сервер удаляет его переменную из комнаты и
сообщает вам
об этом. Вы при этом знаете, что он больше не участвует в игре.
Мы рассмотрели код ActionScript, необходимый для входа в кадр Game,
подключения к игре, установки переменной в комнате для указания, что вы
здесь, и определения доступности обоих игроков. Теперь мы взглянем на код
ActionScript, необходимый для посылки хода вашему сопернику. Для того
чтобы понять, что происходит, когда посылается ход, мы должны также
рассмотреть немного саму игру (которую мы должны в идеале оставить для
следующего раздела этой главы). То, что мы рассмотрим в коде ActionScript
здесь, мы будем рассматривать в следующем разделе.
Игра крестики-нолики имеет 9 клеток (которые представляют собой клипы) в
трех строках и трех колонках. Используя соглашение об именах, которое мы
применяли на протяжении всей этой книги, клетки названы именами от piece
1_1 до piece3_3. Первое число представляет собой номер колонки; вто-
рое является номером строки.
Таким образом, клетка в колонке 1 и строке 2 называется piecel_2. Каждый
из этих клипов содержит три ключевых кадра. Первый из них (кадр 1)
Предыдущая << 1 .. 142 143 144 145 146 147 < 148 > 149 150 151 152 153 154 .. 210 >> Следующая