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

_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+1,card.col) or cardPresent(card.row+1,card.col+1)) {

card = undefined;

}

}

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

if (card == undefined) {

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

card = stack1;

}

}

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

if (card != undefined) {

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

if (firstCard == undefined) {

firstCard = card;

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

} else if (firstCard == card) {

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

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

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

removeCard(card);

removeCard(firstCard);

firstCard = undefined;

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

} else {

firstCard = card;

}

}

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

if (cardValue(firstCard) == 13) {

removeCard(firstcard);

firstCard = undefined;

}

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

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

stack1.value = deck.pop();

stack1.gotoAndStop(stack1.value);

stack.push(stack1.value);

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

if (deck.length == 0) {

stack0.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 и затем обратиться к последниму члену этого массива. Если карта оказалась из пирамиды, то клип просто удаляется.

function removeCard(thisCard) {

if (thisCard == stack1) {

// Удаляем карту из открытой колоды.

stack1.gotoAndStop(1);

stack.pop();

stack1.value = stack[stack.length-1];

stack1.gotoAndStop(stack1.value);

} else {

// Удаляем карту из пирамиды.

thisCard.removeMovieClip();

}

}

Следующая функция, cardPresent, проверяет в цикле все карты, чтобы определить, существует ли карта в позиции, определенной аргументами вызова данной функции.

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

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

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

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

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

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

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

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

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