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

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

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

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

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

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

Макар Дж. Секреты разработки игр в Macromedia Flash MX — М.: КУДИЦ-ОБРАЗ , 2004. — 608 c.
ISBN 0-201-77021-0
Скачать (прямая ссылка): sekretirazrabotkiigr2004.djvu
Предыдущая << 1 .. 161 162 163 164 165 166 < 167 > 168 169 170 171 172 173 .. 210 >> Следующая

15 me ='worId[ES.username];
16 you = worId[ES.opponent];
17 }
Вначале мы помечаем экземпляр игры как способный послать или получить ход
(строка 2) Затем мы устанавливаем значение переменной inPlay в true. Этим
сообщается некоторым другим функциям, таким, как positionCharacterQ, что
им разрешено выполняться. Затем мы устанавливаем ход таким образом, что
Игрок
1 может ходить первым.
О Важно обратить внимание, что происходит в строках 6 и 10. Мы
устанавливаем ссылку world.char для указания на персонаж, который должен
ходить. Когда текущий ход завершен, мы устанавливаем ссылку world.char
для указания на другой объект персонажа. Мы создаем эту ссылку и
перекидываем ее, что удобно. Во многих функциях, которые вы видели, мы
использовали world.char для доступа к значениям и их модификации. Таким
путем мы можем легко изменить объект, на который указывает ссылка и по-
прежнему использовать те же функции. Также для удобства мы устанавливаем
другие ссылки в объектах персонажей в строках 15 и 16. Они используются в
функции fall(), рассмотренной далее.
Глава 19. "Не провались!"
world С li eked ()
Функция worldClicked() вызывается при нажатии на плитку. В ней мы
преобрачу ем координаты мыши в изометрический мир. По этим координатам мы
опрсде ляем область, в которой произошло нажатие. Затем мы проверяем,
существуем ли плитка (если плитка упала, то она больше не существует). Мы
также пропс ряем, был ли щелчок на плитке, смежной с той, на которой в
данный момеш стоит ваш персонаж. Если плитка существует и является
смежной с плипсоп персонажа, то мы принимаем щелчок и вызываем функцию
clickAcceptedQ.
Ниже приведена эта функция.
1 function worldClicked(xm, ym) (
2 var temp = iso.mapToIsoWor1d(xm, ym);
3 var xm = temp[0];
4 var zm = temp[1];
5 var xcell = Math.cei1(xm/wor1d.ce11Width ) ;
6 var z_cel 1 = Math.ceil(Math.abs(zm)/world.cellWidth);
7 var xm = x_cell*world.cellWidth-world. cellWidth/2;
8 var zm = -(z cell*world.cellWidth-world.cellWidth/2);
9 var x_cell_diff = wor1d.char.x_ce11-x_ce11;
10 var z_cell_diff = world.char.z_cell-z_cell;
11 if (!worId . char .moving && wor1d.tiles[x_cel1] [z_ce11]
exists && (x_cell_diff != 0 || z_cell_diff != 0) &&
((x_cell_diff == 0 || Math.abs(x_cell diff) == 1) && (z_cell_diff == 0 ||
Math.abs(z_cell_diff) == 1)))
12 clickAccepted (xm, zm, x_cell, z_cell);
13 sendMove({type:"move", xm:xm, zm:zm, x_cel1:x_cel1,
z_cell:z_cell});
14 }
15 )
Посмотрите на строки 12 и 13. В строке 12 вызывается функция
clickAccepted(), и в нее передаются значения для положения курсора мыши и
плитки, которая была нажата. В строке 13 мы посылаем ход другому игроку.
Когда экземпляр игры другого игрока получает ход, то в экземпляре этого
игрока вызывается функция moveReceived(). Этот экземпляр игры вызывает
функцию clickAccepted() и передает информацию, необходимую для
перемещения персонажа.
Функция clickAccepted() вращает персонаж для ходьбы в направлении, кого
рое вы щелкнули, и затем начинает движение персонажа в этом направлении.
ю
Часть 2. Исследование основ
etermineFaLI.()
огда персонаж настроен для движения, функция moveCharacter() определяет и
сдую щ и й шаг персонажа и перемещает его в памяти. Если она
обнаруживает, го персонаж достиг цели назначения, она вызывает
determineFall(). Эта функ-ия приказывает плитке (той, которую персонаж
только что покинул) упасть, атем она проверяет окружающие плитки, чтобы
проверить, была ли какая-либо
з них дестабилизирована достаточно, чтобы упасть. (Помните, что
плитка олжна по крайней мере одной полной стороной касаться другой
плитки, чтобы ставаться в воздухе.)
Ниже приводится эта функция.
1 function determineFall() {
var х = world.char.old_x_cell;
3 var z = worId.char.old_z_cel1;
4 var ob = world.tiles[x][z];
5 f a 11 (о b) ;
6 checkTile(x-l, z) ;
7 checkTile(x, z + 1) ;
8 checkTile (_x + l, z);
9. checkTi!e(x, z-1) ;
l строках 2 и 3 мы устанавливаем переменные, которые хранят
координаты по-ледней плитки, над которой был персонаж. В строке 4 мы
создаем ссылку на (бъект, который представляет эту плитку. Затем
выполняется вызываемая функ-щя fall(), а в нее передается ссылка на
объект плитки. Эта функция обрабатывав! фоцедуру реализации падения
плитки. Мы будем говорить о ней позднее. Затем лы вызываем функцию
checkTile() для каждой из четырех соседей только что 'павшей плитки.
Функция checkTile() проверяет, наступил ли момент для паде-1ИЯ плитки.
Эта функция вызывается-, когда определено, что плитка должна упасть.
3 нее передается ссылка на объект, который представляет плитку. Мы
проверяем, находится ли на этой плитке какой-нибудь из монстров. Если
один или оба персонажа находятся на плитке, то мы приказываем персонажу
упасть и игра на >том заканчивается.
Ниже приведен код этой функции.
10
Глава 19. "Не провались!"
491
1 function fall (ob) {
2 if (ob.x == me.x_cell && ob.z == me.z_cell) {
3 var clip = me.clip;
4 clip.ymov = 0;
Предыдущая << 1 .. 161 162 163 164 165 166 < 167 > 168 169 170 171 172 173 .. 210 >> Следующая