Головоломки Flash

         

II Проверяем его соседей по


// Определяем цвет этого блока.

var с = _root["block "+x+" "+y]._currentframe;

_root["block "+x+" "+y].gotoAndStop(5);

II Проверяем его соседей по всем направлениям.

var n = 1;

n += testNeighbor(х-1,у,с);

n += testNeighbor(х+1,у,с);

n += testNeighbor(х,у-1,с);

n += testNeighbor(х,у+1,с);

// Если один их них того же цвета,

if (n > 1) {

// Уничтожаем группу блоков.

collapseDown();

collapseAcross();

// Начисляем очки,

score += n*n;

} else {

// Оставляем блок на месте.

_root["block "+x+" "+y].gotoAndStop(с);

}}

Функция testNeighbor проверяет цвет нового блока. Если цвет подходит, блок удаляется. Дальше функция вызывает сама себя и проверяет цвета четырех соседних блоков. Она следит за переменной n, которая определяет количество подходящих соседей.
Если текущий блок не подходит по цвету, вместо n возвращается 0, чтобы показать, что в этом направлении не было найдено ни одного подходящего блока.

function testNeighbor(x,у,с) {

if (_root["block "+x+" "+y]._current frame = = с) {

// Удаляем соседа.

_root [ "block "+x+""+y].gotoAndStop(5);

var n = 1;

// Проверяем всех его соседей,

n += testNeighbor(x-1,y,с);
n += testNeighbor(х+1,у,с);

n += testNeighbor(х,у-1,с);

n += testNeighbor(x,y+l,с);

// Возвращаем количество найденных соседей,

return(n);

} else {

// Не найдено никаких подходящих блоков.

return(0);

}}

После того как блок выбран и все соседи одного с ним цвета удалены, следующий шаг - это позволить всем оставшимся блокам упасть вниз на все свободные места. Это достигается прохождением по всем столбцам в цикле по переменной х. Затем, во вложенном цикле по у происходит проверка всех блоков в этом столбце снизу вверх. И если блок пустой, первый заполненный блок сверху смешается вниз.

function collapseDown() {

// Проходим по всем столбцам.

for(var x=0;x

// Проходим по всем блокам столбца снизу вверх.

for(var y=11;y>0;y--) {

// Смотрим, пустой ли блок.
thisColor = _root["block "+x+'"+y]._currentFrame;


Содержание раздела