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

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

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

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

А. Алексашин , Дэвид Томас , Эндрю Хант

Программирование / Книги по IT