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

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



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

Почти весь код находится в одном кадре основной временной шкале. Он начинается с создания экземпляров клипов "peg" и "hole" и их размещения на рабочем поле. С помощью оператора if создаются необходимые для игры отверстия. Также код проверяет, во все ли отверстия, кроме одного в центре, вставлены колышки.
В конце функции переменной maxHole присваивается значение, равное количеству всех отверстиях. Эта' переменная будет использоваться в тех функциях, где необходимо выяснить, все ли клипы удовлетворяют определенным условиям.

initGame();

stop();

function initGame() {

// Определяем постоянное расположение клипов.

holeSpace =30;

puzzleLeft = 160;

puzzleTop = 80;

// Просматриваем все отверстия создаем в них колышки.

i = 0;

for(y=0;y

for (x=0;x



// Проверяем, должен ли быть создан колышек.

// Если да, создаем его.

if (((у < 3) or (у > 5)) and ((х < 3) or (x > 5) continue;

// Добавляем и размещаем новое отверстие. attachMovie("hole", "hole"+i, i);

_root["hole"+i]._x = x*holeSpace + puzzleLeft;

_root["hole"+i]._y - y*holeSpace + puzzleTop;

II He добавляем колышек в центральное отверстие,
if ((x != 4) or (у != 4)) {

// Добавляем и размещаем

// новое отверстие.

attachMovie("peg","peg"+i,100+i);

_root["peg"+i]._x = x*holaSpace + puzzleLeft;

_root["peg"+i]._y = y*holaSpace + puzzleTop;
}

i++;
}}

// Запоминаем количество колышков.
maxHole = i;
}

Когда игрок щелкает по колышку, на самом деле он щелкает по кнопке, расположенной внутри клипа. Оба действия, "press" и "release", передаются функциям в основной временной шкале. Функция dragPeg вызывается действием "press". Эта функция сохраняет положение колышка в переменных pegх и pegу, а затем разрешает перемешать колышек. Также она использует функцию swapDepths, чтобы колышек отображался поверх всех остальных.

function dragPeg(peg) {
// Запоминаем исходное положение колышка,
pegх = peg._х; pegу = peg._у;
// Размещаем колышек поверх остальных,
peg.swapDepths(2000);
// Разрешаем программе Flash перемещать клип.
startDrag(peg, true);
}




Функция dropPeg использует полезную функцию pegThere, которой передается расположение отверстия и которая возвращает значение true, если именно в этом месте обнаружен клип "peg".

function pegThere(x.у) {
// Выясняем, находится ли в этом месте колышек,
for (i=0;i peg = _root["peg"+i];
if ((peg._x == x) and (peg._y == y)) {
return true;
}}
return false;
}

Во время игры внизу экрана все время находится кнопка Restart Game (Начать заново), которая позволяет заново начать игру, когда больше нельзя сделать ни одного действия или когда пользователь понимает, что плохо начал игру. Эта кнопка должна не только вызывать функцию initGame, но и очищать оставшиеся клипы "peg" и "hole".

function restartGamef) {
// Удаляем все клипы,
for (i=0;i _root["peg"+i].removeMovieClip();
_root["hole"+i].removeMovieClip();
}
// Начинаем новую игру.
initGame();
}

Код, прикрепленный к кнопке, расположенной внутри клипа "peg» очень прост. Все, что он делает, это передает функциям действия press и release.

on (press) {
_root.dragPeg(this);
}


on (release) {
_root.dropPeg(this);
}


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