Читаем Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript полностью

Программа создает сетку, заполняющую экран. Каждая ячейка может содержать или не содержать точку. Щелкнув по ячейке, пользователь может изменить ее состояние.

Когда пользователь завершает наполнение ячеек, он нажимает кнопку начала игры. При каждом проигрывании кадра применяется к каждой ячейке описанный набор правил. В результате наполнение некоторых ячеек меняется.

Пользователь может нажать кнопку Stop для остановки игры. Имеются также кнопка пошагового исполнения алгоритма (Step) и кнопка очистки игрового поля (Clear).

Подход

Ролик начинается с создания сетки, состоящей из клипов (ячеек). Также создается двумерный массив булевых переменных. Каждый элемент массива соответствует определенной ячейке и указывает, в каком кадре находится этот клип-ячейка (то есть находится ли в данной ячейке жилец).

Основная функция ролика просматривает все ячейки и вычисляет изменения в них. Выполнение этой функции представляет собой один шаг игры. Если пользователь нажимает кнопку Run, ролик выполняет эти шаги непрерывно. При выборе кнопки Step исполняется только один шаг.

Подготовка ролика

В дополнение к четырем кнопкам (рис 6.15) необходимо создать клип-ячейку. Назовем этот клип «gridbox». Он не должен изначально находиться на рабочем поле, но ему надо присвоить имя в панели Linkage Properties, чтобы можно было создавать его копии с помощью ActionScript.

Клип "gridbox" должен содержать два кадра – один с точкой, а второй – в виде пустой ячейки. Первому кадру назначьте сценарий с командой stop(). В отдельный слой клипа поместите кнопку, чтобы пользователь мог кликать по ячейке.

Наконец, создайте клип "actions", который будет содержать обращение к основной функции нашего кода.

Создание кода

Первая функция создает сетку из 25x15 ячеек и двумерный массив. Каждая строка массива представляет собой столбец (одномерный массив) булевых переменных. Таким образом, для доступа к верхнему левому элементу сетки надо написать grid[0][0] , а для доступа к пятому слева и седьмому сверху – grid[4][6] (то есть центр координат находится в верхнем левом углу).

function createGrid() {

// Создаем клипы и заполняем массив.

grid = new Array();

for(y=0;y<15;y++) {

var temp = new Array();

for(x=0; x<25; x++) {

mc = attachMovie("gridbox", "gridbox "+x+" "+y,y*25+x);

mc._x = x*20+30;

mc._y = y*20+30;

mc.x = x;

mc.y = y;

temp.push(false);

}

grid.push(temp);

}

}

Функция cycle является центральным моментом нашей программы. Она используется для вычисления правил применительно к каждой ячейке. Обратите внимание, что мы дублируем массив grid. Это делается для того, чтобы при изменении значения какого-нибудь элемента массива grid это не повлияло на дальнейшие вычисления на данном шаге программы. Все вычисления происходят опираясь на значения элементов массива baseGrid.

function cycle() {

// Дублируем массив grid.

var baseGrid = duplicateGrid();

// Делаем проход по всем ячейкам.

for(y=0;y<15;y++) {

for(x=0;x<25;x++) {

thisBox = baseGrid[y][x];

mc = this["gridbox "+x+" "+y];

// Вычисляем количество "заселенных" ячеек вокруг

// данной.

n = 0;

n += baseGrid[y-1][x-1];

n += baseGrid[y-1][x];

n += baseGrid[y-1][x+1];

n += baseGrid[y][x-1];

n += baseGrid[y][x+1];

n += baseGrid[y+1][x-1];

n += baseGrid[y+1][x];

n += baseGrid[y+1][x+1];

// Если в этой ячейке уже была точка и если количество

// "жильцов" вокруг равно 2 или 3, то точка остается.

if (thisBox) {

if ((n == 2) or (n == 3)) {

newValue = true;

} else {

newValue = false;

}

// Новая точка "рождается", если ячейка была пуста

// и если в смежных ячейках находится ровно 3 точки.

} else {

if (n == 3) {

newValue = true;

} else {

newValue = false;

}

}

// Меняем текущий кадр клипа mc.

grid[y][x] = newValue;

if (newValue) {

mc.gotoAndStop(2);

} else {

mc.gotoAndStop(1);

}

}

}

}

Функция duplicateGrid() создает копию массива grid и возвращает ее в качестве своего значения.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных