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

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

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

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

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

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

Макар Дж. Секреты разработки игр в Macromedia Flash MX — М.: КУДИЦ-ОБРАЗ , 2004. — 608 c.
ISBN 0-201-77021-0
Скачать (прямая ссылка): sekretirazrabotkiigr2004.djvu
Предыдущая << 1 .. 51 52 53 54 55 56 < 57 > 58 59 60 61 62 63 .. 210 >> Следующая

(глубина). Это шчение будет увеличиваться на 1 и использоваться для
назначения глубины "сположения каждому вновь создаваемому клипу. Как мы
видели в предыду-(м\ главах, у нас входит в привычку хранить ссылки на
клипы в объекте. Это >ает наш код более объектно-ориентированным. Так, в
строке 6 вы можете и геть, что создается ссылка на клип сетки grid.
Всякий раз, когда мы хотим юлать что-либо с сеткой, мы не пишем
_root.grid, а пишем game.path. Ссылка ime.path будет интерпретирована как
_root.grid, поскольку является ссылкой, чорую мы назначили выше в строке
6. Если на некотором этапе в процессе i .работки игры нам потребовалось
бы изменить имя или положение клипа сет-н grid, то все, что нам нужно
было бы сделать для обновления кода, было бы именение ссылки game.path
для указания нового положения сетки grid. Если мы | используем ссылку
game.path, то изменение имени или пути к сетке стано-шся серьезным
предприятием, поскольку нам приходится обновлять большое ( тичество кода.
Последняя строка вышеприведенного кода ActionScript припаивает переменную
с именем numberOfTypes в объекте game. Эта переменная ранит количество
типов плиток, которые определены для этой игры. Поскольку и имеем восемь
кадров в клипе плитки tile и каждая плитка отличается, то мы присваиваем
numberOfTypes значение 8.
алее определяется функция buildGridQ.
1 function b uildGr id() (
2 for (var j = l j<=game.rows; ++j) {
3 for (v ar i = l ; i<=game.columns; + + i) (
4 var name = " с e 11" + i +" _ " + j ;
5 var x = (i -1)*game.spacing;
6 var У = (j -1)*game.spacing;
7 var type = 1;
8 game .path. attachMovie("cell", j П0.Ш6 |
9 game .path[ name], x = x;
10 gam e.path [name], у = у;
170 Часть 2. Исследование oci
11 game[name] = (x:i, у: j, name:name, type:type,
clip:game.path[name]|;
12 }
13 }
14 }
Эта функция использует вложенные циклы, как это было описано ранее в этс
разделе. Внешний цикл проходит по строкам. В каждой итерации внешнего цик
внутренний цикл проходит по каждой колонке. Каждой плитке (которую мы н
зываем здесь cell) дается уникальное имя с использованием строки и колон!
ячейки как части имени ячейки. Например, если ячейка принадлежит к
колонке
и строке 6, имя будет се!18_6. В строках 5 и 6 вычисляется необходимое
поло"
ние нового клипа. Затем создается переменная type со значением, равным 1.
О. ссылается на кадр, который отобразит плитка. В этом примере мы
иницииру< каждую плитку на 1 кадре. Далее создается клип и
устанавливается в нужные ординаты. В строке 11 мы делаем нечто
действительно важное - мы создаем об ект для хранения информации о
ячейке, которая только что была создана, такс как ее тип, имя и ссылка на
клип, которым она представлена.
Заключительная строка кода ActionScript в этом файле (непоказанная) ¦
buildGrid(). Она вызывает функцию, которую мы только что разобрали, для
cd дания сетки.
ва 7. Миры, основанные на плитках
171
цчность обнаружения
иерь пришло время познакомиться с уловкой, о которой я упоминал: простой,
• мощный прием, который чрезвычайно облегчает загрузку процессора в
пли-•¦шых мирах. Представьте следующее: если игра ПэкМэн была написана I-
lash, как бы вы обнаруживали, столкнулся ли персонаж ПэкМэн с точкой i
сбора (или поедания, или что там еще ПэкМэн делает с ней)? Прежде всего
Мок Мэн все двигается довольно медленно, и точность не важна, так что
TestO будет неплохим выбором. Многие начинающие программисты игр I 1ючая
меня самого в тот период) предположили бы, что вам нужен цикл всей доске,
непрерывно выполняющий hitTest() чтобы проверить столкнулся
I ПэкМэн с какой-либо точкой. Это не очень эффективный процесс. К
счастью, (ь уловка, которая позволяет нам легко узнать, в какой ячейке
находится •кМэн, и, следовательно, нужна проверка столкновения лишь в
этой ячейке, конечно, обнаружение одного столкновения требует от
процессора гораздо •иьшей интенсивности вычислений, чем обнаружение 100
столкновений. Да-мте посмотрим, как определить, в какой ячейке находится
ПэкМэн.
Гг X = 0 х 20 х = 40 х = = 60 х 80 х (г О О
X = 53 е
VS 1 2 3 4 5 Ширина ячейки = 20
начале давайте рассмотрим только одно направление, горизонтальное. На ил-
клрации выше вы можете видеть, что имеется пять ячеек, каждая шириной 20.
юрдината х ПжМэиа равна 53. В какой ячейке он находится?
172
Часть 2. Исследование oci
1 spacing = 20;
2 х = 53;
3 cell_column =Math.ceil(x/spacing);
В строке 1 мы устанавливаем переменную с именем spacing. Это ширина кала
ячейки. Строка 2 создает переменную с именем х, которая хранит координг
ПэкМэна. В строке 3 мы употребляем простой математический трюк деле!
координаты на шаг. Затем мы округляем это число до ближайшего целс (в
сторону уменьшения). С помощью этой уловки мы можем легко найти, в i кой
ячейке находится ПэкМэн! Это работает аналогичным образом и для ко*
динаты по вертикали.
4
5

у = 30 €



у = о
у = 20
у = 40
у = 60
Предыдущая << 1 .. 51 52 53 54 55 56 < 57 > 58 59 60 61 62 63 .. 210 >> Следующая