Иллюстрированный самоучитель по Flash-games


Создание кода - часть 2


return("below");

}}

// Элементы мозаики имеются со всех сторон,

return ("none");

}

Если перед выражением стоит восклицательный знак, значит, OHO отрицается, то есть true превращается в false, a false в true. Эта операция известна как логическое не (not). Например, в предыдущем коде проверяется не tileThere, a not tileThere.

Функция findEmpty использует метод tileThere, чтобы определить, находится ли элемент на определенном месте. Метод tileThere вызывается для определения элементов слева, справа, снизу и сверху.

// Проверяем, находится ли элемент мозаики на определенном месте,

function tileThere (thisx, thisy) {

// Просматриваем элементы на предмет совпадения координат,

for (i=l;i

// Выясняем, совпадают ли значения положения

//по горизонтали,

if (_root["tile"+i]._x == thisx) {

// Совпадает ли положение по вертикали,

if (_root["tile"+i]._у == thisy) {

return true;

}
}} // Эти координаты соответствуют пустому квадратику,

return false;

}

После того как было решено переместить элемент, вызывается функция moveTile. Эта же функция используется, когда игрок перемешает элементы.

// Перемещаем элемент в определенном направлении,

function moveTile (tile, direction) {

if (direction == "above") {

_root[tile]._y -= tileDist;

} else if (direction == "below") {

_root[tile]._y += tileDist;

} else if (direction == "left") {

_root[tile]._x -= tileDist;

} else if (direction == "right") {

_root[tile]._x += tileDist;

}}

После того как контроль передается игроку, надо определить, по какому элементу щелкнули мышкой. Для этого вызывается функция tileUnderMouse.

// Определяем, по какому элементу щелкнул игрок,

function tileUnderMouse О {

for (i = l; i< = 15; i + +) {

if (_root["tile"+i].hitTest(_xmouse, _ymouse)) {

return (i);
}

}}

Сценарий в основной временной шкале заканчивается вызовом функции initGame и выводом на экран перемешанных элементов.

initGame();

stop();

Игрок взаимодействует с картинкой мозаики посредством клипа "actions», расположенным вне рабочего поля. Клип воспринимает щелчок мыши, определяет, по какому элементу щелкнул пользователь, и перемещает этот элемент.

onClipEvent (mouseDown) {

// Определяем, по какому элементу щелкнул пользователь.

tileClicked = _root.tileUnderMouse();

// Определяем, есть ли рядом пустое пространство.

emptySpace = _root.findEmpty("tile"+tileClicked);
// Перемещаем элемент на свободное место.

_root.moveTile("tile"+tileClicked, emptySpace);

}




Начало  Назад  Вперед



Книжный магазин