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


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


_root.onMouseDown = function() {

var card = undefined;

(18) // Смотрим, был ли щелчок по одной из карт пирамиды.

for(var i=27;i>=0;i--) {

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

var card = _root["card"+i];

break;

}}

(19)// Если был, закрывают ли эту карту другие карты?

if (card != undefined) {

if (cardPresent(card.row+l,card.col) or cardPresent(card.row+1,card.col+l)) {

card = undefined;

}}

(20)// Был ли щелчок по стопке карт, лежащих мастью вверх?

if (card == undefined) {

if (stackl.hitTest(_xmouse,_ymouse)) {

card = stack1;

}}

// Проверяем, выбрана ли еще одна карта,

if (card != undefined) {

(21)// Первая выбранная карта,

if (firstCard == undefined) {

firstCard = card;

// Игнорируем второй щелчок по той же карте.

} else if (firstCard == card) {

(22)// Если выбраны две карты и их сумма равна 13.

} else if (cardValueffirstCard) + cardValue(card) == 13) {

// Удаляем обе карты.

removeCard(card);

removeCard(firstCard);

firstCard = undefined;

// В противном случае считаем, что это первая выбранная

// карта.

} else {

firstCard = card;

}}

(23)// Если выбрана одна карта, и это "король"

if (cardValueffirstCard) ==13) {

removeCardffirstcard);

firstCard = undefined;

}}

(24)// Если щелкнули по колоде закрытых карт, переворачиваем

// очередную карту.

if (stackO.hitTest(_xmouse,_ymouse)) {

stackl.value = deck.pop();

stackl.gotoAndStop(stackl.value);

stack.push(stackl.value);

// Когда закрытая колода кончается, удаляем ее.

if (deck.length == 0) {

stackO.removeMovieClip();

}}

(25)// Помещаем рамку около выделенной карты,

if (firstCard != undefined) {

outline._x = firstCard._x;

outline._y = firstCard._y;

} else {

outline._x = -1000;}

(26)// Если удалена первая карта в пирамиде, значит игрок

// выиграл.

if (_root["card0"] == undefined) {

gotoAndStop("game over");

}}

Осталось рассмотреть несколько полезных функций. Первая, removeCard, удаляет карту из колоды открытых карт или из пирамиды. Чтобы удалить карту из открытой колоды , она должна просто отправить клип "stack1" к кадру, который представляет предыдущую карту. Именно в этом месте оказывается полезным массив stack. Каждая карта, положенная мастью вверх, добавляется к stack. Чтобы достать карту опять, вам нужно удалить последнюю карту из массива stack и затем обратиться к последнему члену этого массива. Если карта оказалась из пирамиды, то клип просто удаляется.




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



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