Гэри Розенцвейг - Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
- Название:Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Гэри Розенцвейг - Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript краткое содержание
Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.
Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
function createRow() {
// Создается новый ряд из пяти пустых мест.
for(i-0;i<5;i++) {
attachMovie("rock","rock"+row+"-"+i,row*10+i);
clip = _root["rock"+row+"-"+i];
clip._x = leftColLoc + i*horizSpace;
clip._y = topRowLoc + row*vertSpace;
clip.active = true;
}
// Создается кнопка Done.
attachMovie("done","done",1000);
_root.done._x = rightColLoc+20;
_root.done._y = topRowLoc + row*vertSpace;
}Когда игрок щелкает по кнопке Done, вызывается функция doneGuess.Сначала пять кнопок в текущем ряду становятся неактивными. В функции createRowсвойству activeкаждого клипа было присвоено значение true. Теперь же этому свойству присваивается значение false (1). Код, прикрепленный к каждой кнопке, с помощью этого свойства определяет, можно ли щелкнуть по кнопке или нет.
В массиве tempсодержатся номера каждого цвета последовательности (2).Например, если даны два первых цвета, один четвертый и два пятых, массив будет выглядеть следующим образом: [2,0,0,1,2].
Следующий цикл проверяет, сколько цветов точно совпадают с предопределенным расположением (3). Если были найдены совпадения, числа в массиве tempуменьшаются. То есть теперь в этом массиве отображаются те цвета, совпадения с которыми еще надо найти.
Следующий цикл проверяет несовпавшие цвета в последовательности игрока и определяет, какие из этих цветов находятся в массиве temp (4). Подсчитав, можно выяснить, сколько цветов правильно угаданы, но помещены не на свое место.
Следующие два цикла создают белые и черные камешки, которые будут соответствовать числу правильно угаданных цветов и числу угаданных цветов, расположенных не на своем месте (5).
Кнопка Done удаляется, так что теперь она не будет появляться в каждой строке (6). Когда пользователю дается следующая попытка, создается новая кнопка Done.
В конце функции проверяется, совпадают ли все пять цветов или нет (7). Если да, то ролик переходит к кадру «win». В противном случае код проверяет, была ли эта попытка десятой (последней), и если так, ролик перейдет к кадру «lose», иначе для следующей попытки вызывается функция createRow.function doneGuess() {
numRightSpot = 0;
numRightColor = 0;
(1) →// Пять кнопок становятся неактивными.
for (i=0;i<5;i++) {
_root["rock"+row+"-"+i].active = false;
}
(2) →// Определяем, сколько имеется кнопок одного цвета.
temp = [0,0,0,0,0];
for (i=0;i<5;i++) {
temp[solution[i]]++;
}
(3) →// Выясняем, сколько цветов правильно угадано.
for (i=0;i<5;i++) {
color = _root["rock"+row+"-"+i]._currentFrame – 2;
if (color == solution[i]) {
numRightSpot++;
temp[color]–;
}
}
(4) →// Проверяем, сколько цветов угадано,
// но находится не на своих местах.
for (i=0;i<5;i++) {
color = _root["rock"+row+"-"+i]._currentFrame – 2;
if (color != solution[i]) {
if (temp[color] > 0) {
numRightColor++;
temp[color]–;
}
}
}
(5) →// Создаем белые камешки.
level = row*10+5;
x = rightColLoc;
for(i=0;i
attachMovie("rock","white rock"+level,level);
clip = _root["white rock"+level];
clip.gotoAndStop("white");
clip._x = x;
clip._y = topRowLoc + row*vertSpace;
level++
x+=horizSpace;
}
// Создаем черные камешки.
for(i=0;i
attachMovie("rock","black rock"+level,level);
clip = _root["black rock"+level];
clip.gotoAndStop("black");
clip._x = x;
clip._y = topRowLoc + row*vertSpace;
level++;
x+=horizSpace;
}
(6) →// Удаляем кнопку Done.
done.removeMovieClip();
(7) →// Выясняем, выиграл ли игрок.
if (numRightSpot == 5) {
gotoAndPlay("win");
} else {
row++;
// Проверяем, проиграл ли игрок.
if (row >= 10) {
showSolution();
gotoAndPlay("lose");
} else {
createRow();
}
}
}Когда игрок проигрывает, функция showSolutionсоздает пять новых экземпляров клипа и с их помощью отображает правильный вариант. В ролике, размещенном на Web-сайте, это решение располагается в нижней части игрового поля.
function showSolution() {
// Размещаем правильный вариант внизу экрана.
for(i=0;i<5;i++) {
attachMovie("rock","solution"+i,1001+i);
clip = _root[“solution”+i];
clip._x = solutionx + i*horizSpace;
clip._y = solutiony;
clip.foroAndStop(solution[i]+2);
}
}На рис. 14.6 показан фрагмент ролика, когда игра уже проиграна. Функция showSolutionпоместила правильную последовательность (решение) внизу экрана.
Рисунок 14.6. Игра проиграна, код поместил правильную последовательность решения внизу экранаЕдинственный оставшийся фрагмент кода – небольшой сценарий, прикрепленный к кнопке в каждом клипе «rock». Его задача состоит в том, чтобы переключать цвета один за другим и возвращаться к первому кадру (пустому месту), если пользователь щелкнул определенное число раз. Этот код также проверяет свойство active,чтобы убедиться, что ряд – текущий.
on (press) {
if (active) {
f = _currentFrame+1;
if (f > 6) f = 1;
gotoAndStop(f);
}
}
К сведению
Не забудьте присвоить последним двум кадрам клипа «rock» метки «white» и «black». Также обязательно поместите кнопку Done внутрь клипа «done», которому потом необходимо присвоить имя «done» в панели Linkage Properties. К сожалению, это необходимо, так как ActionScript не может динамически создавать кнопки сами по себе. Считайте, что клип «done» – это просто «обертка» для кнопки Done.
Другие возможности
Важно помнить о том, что если вы хотите изменить какие – либо элементы игры, надо соответственно подкорректировать константы, представленные в начале кода. Если вы не будете о этом забывать, с игрой можно делать практически что угодно.
Чтобы изменить уровень сложности игры попробуйте изменить количество попыток угадать решение. Также можно увеличить или уменьшить число цветов и мест для них.Йога
Исходный файл: Pegs.fla
Классическая игра "Йога" известна уже тысячи лет. Современные версии сделаны из дешевого пластика. С развитием Web-технологий появился и виртуальный вариант этой игры.
Для игры требуется решетка с отверстиями для колышков (рис. 14.7). Колышки расположены во всех отверстиях, кроме одного. Игрок должен взять один колышек и "перепрыгнуть" через другой, при этом попасть на пустое место. Колышек, через который "перепрыгнули", при этом удаляется. Игра продолжается до тех пор, пока нельзя будет сделать больше ни одного передвижения.
Рисунок 14.7. Наиболее распространенная конфигурация доски с колышками. Вы можете создать свой вариант
Хороший игрок может выиграть, если у него останется только один колышек. При быстрой игре, без раздумий, может остаться примерно от 8 до 12 колышков.
Задача проекта
Цель проекта – создать компьютерный вариант игры «Йога» (рис. 14.7). Игрок щелкает мышкой и перемещает колышки. Неверный ход сделать нельзя, а правильный автоматически удаляет элемент, через который «перепрыгнули».
Подход
Вся игра происходит в одном кадре. Сначала на рабочем поле нет никаких элементов.
Отверстия и колышки – отдельные клипы, они помещаются на рабочее поле с помощью кода, что избавляет вас от необходимости размещать каждый клип и присваивать ему имя. Вместо вас всю работу выполнит программа.
Читать дальшеИнтервал:
Закладка: