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

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

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

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

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

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

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

вызывающим, то ваш -юмер игрока равен 1; в другом случае он равен 2. В
строке 3 переменная nitializedYet устанавливается в значение false. Это
переменная, которая сообщаем там, находятся ли в комнате оба игрока. Мы
начинаем со значения false, и затем, шгда в первый раз playerl и player2
имеют значение "here", мы устанавливаем nitializedYet в значение true.
(Это то же самое, что мы видели в гл. 17.)
В строке 4 мы устанавливаем обработчик события onRoomVarChange для вы-юва
roomVarChanged(), когда поступает информация переменной комнаты.1
Аналогично в следующей строке мы устанавливаем обработчик события!
moveReceived для вызова функции moveReceived(), когда поступает
информация
э сделанном ходе. Теперь, когда все обработчики событий установлены,
можно эезопасно подключиться к игре. Мы делаем это в строке 6. Помните,
что порядок, в котором вы делаете это, очень важен. Для меня важно
напомнить еще раз гели вы должны подключиться к игре до определения всех
обработчиков собы-i гий, то вы бы избежали риска получения данных о
комнате или вашем противнике до того, как вы сможете обработать это. В
последней строке мы создаем!! переменную комнаты для вашего игрока и
назначаем ей значение "here".
Мы собираемся рассмотреть все функции в этом кадре. Прежде чем мы сдели-
зм это, я хочу напомнить о различных типах ходов в этой игре. Вы помнте
из гл. 17, что, когда мы посылаем ход, мы посылаем объект нашему
противнику^
Глава 18. Девять шаров
459
Мы добавляем свойство объекта с именем type, который хранит строчное
значение вида хода move. В крестиках-ноликах мы имели лишь два типа -
"move" и "restart". Ниже перечислены виды ходов, которце мы имеем в игре
Девять шаров.
Удар. Этот ход посылает вашему противнику информацию, которая скопирует
ваш удар на ее экране, включая положение шара по х и у, скорость, с
которой его ударили, и угол удара.
Поставить биток. Когда вы ставите шар-биток в случае шар в руке, этот ход
посылается вашему противнику. Когда информация получена, положение шара-
битка на экране вашего противника обновляется. В настоящее время этот ход
посылается только после установки шара-битка. Однако вы можете изменить
этот порядок и посылать информацию в процессе движения шара-битка, чтобы
создать ощущение большего реализма.
Перезапуск. Этот ход посылается вашему противнику, когда вы щелкаете на
кнопке Restart (Перезагрузка, Перезапуск). Когда ваш противник получает
информацию, вся игра перезапускается.
Если вы хотите сделать эту игру более совершенной, вы можете добавить
другие типы ходов. Например, пока игрок крутит кий вокруг шара или
отводит кий от шара для увеличения силы удара, вы можете посылать эту
информацию. Эти виды усовершенствований могут придать игре большую
реалистичность. Эти три хода, которые были реализованы в данной игре,
минимально необходимы для того, чтобы она работала.
Давайте рассмотрим функцию moveReceivedQ.
1 function moveReceived(ob) {
2 if (ob.type == "shot") {
3 game.bal11.x = ob.x;
4 game.balll.у = ob.y;
5 shoot(ob.speed, ob.angle);
6 } else if (ob.type == "place_cue") (
7 game.balll.x = ob.x;
8 game.balll.у = ob.y;
9 game.ba111.с 1 ip._x = ob.x;
10 game.ba111.с 1 ip._y = ob.y;
11 ) else if (ob.type == "restart") (
12 restart!);
13 }
14 )
>0
Часть 2. Исследование основ
га функция вызывается при получении хода. Объект, содержащий информа-1Ю,
посланную вашим противником, передается в нее. Для хода типа "shot" мы
.1деляем координаты шара-битка х и у и устанавливаем его позицию на их
ос-эве. Шар-биток представлен объектом Ьа111, который хранится в объекте
game. $ы узнаете об это больше позднее.) Затем мы вызываем функцию
shoot(), пере-шая в нее скорость и угол. Функция shoot(). которая
обрабатывает ударяемый ар, будет рассмотрена позднее. Когда ход имеет тип
"сне", мы обновляем по-щию шара-битка как в памяти, так и на экране. А
если ход имеет тип "restart", > мы вызываем функцию restart().
Теперь давайте рассмотрим три различные функции, которые используются 1Я
посылки этих типов ходов.
1 function sendShot (speed, angle) {
2 var ob = (speed:speed, angle:angle, x:game.bal11.x,
у : game . ba 111 . у, type shot11 } ;
3 ES.sendMove(ES.opponent, ob);
4 )
5 function sendCuePlacement () {
6 var ob = {x:game.ba111.x, у:game.ba111.у, type:"place_cue" } ;
I ES.sendMove(ES.opponent, ob);
8 }
9 function sendRestart () (
10 var ob = {type restart"} ;
II ES.sendMove(ES.opponent, ob);
12 }
ак видите, послать ход просто. Сначала создается объект для хранения
инфор-ации, которую вы хотите послать, и объект отправляется. В
sendShot() в до-элнение к свойству type мы посылаем скорость и позицию
шара-битка, а также т>л, в котором был произведен удар. В
sendCuePlacement() мы просто отправим положение шара в дополнение к type.
А в restart() мы просто посылаем на-!ание хода.
Мы создаем два типа переменных комнаты для этой игры: одну для индика-ии
нахождения игрока в комнате, а другую для индикации способности экзем-
Предыдущая << 1 .. 149 150 151 152 153 154 < 155 > 156 157 158 159 160 161 .. 210 >> Следующая