Гэри Розенцвейг - Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
- Название:Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Гэри Розенцвейг - Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript краткое содержание
Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.
Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
"Стрит" определяется путем просмотра каждой карты и выяснением, больше ли ранг этой карты на единицу ранга карты предыдущей (2). Если такое условие выполняется для всего массива, то тогда на руках у игрока «стрит».
Таким образом будет определен не только стрит: когда стрит начинается с десятки и заканчивается тузом, то это "флэш стрит". Произошло ли так или нет, можно определить с помощью простого теста (3).
Затем вы проверяете, одной ли масти карты (4). Для этого все карты, кроме первой, сравниваются с первой. Если масть всех карт совпадает с мастью первой карты, значит, все карты одной масти.
На следующем шаге создается массив counts,в котором будет храниться число карт одинакового достоинства (5). В этом массиве находится 14 элементов, каждый из которых будет отвечать за число карт определенного ранга, имеющихся у игрока. Первый элемент массива не используется, так как нет карт с нулевым рангом.Совет
Некоторые люди думают, что стритом можно считать и такой набор карт, в котором задействован туз. Например, дама, король, туз, двойка и тройка. Это не стрит, а всего лишь его дополнительная вариация, используемая в любительских играх в покер. Туз может быть использован и как первая карта стрита (туз, двойка, тройка, четверка, пятерка), и как последняя (десять, валет, дама, король, туз), но только не в середине.
Например, если на руках туз, две тройки, четверка и валет, массив будет выглядеть следующим образом: [0,1,0,2,1,0,0,0,0,0,0,1,0,0].
Теперь, наконец, программа может начать определение расклада на руках у игрока. Просматривается массив countsи отмечаются все значения пары, тройки или четверки (6). Если один раз встречаются две карты одного достоинства, то у игрока пара. Если один раз встречается три карты одного достоинства, то у игрока тройка; если один раз встречается четыре карты одного достоинства, то – каре. Также можно дважды обнаружить две карты одного достоинства или пару и тройку. В первом случае будет две пары, а втором – фул хаус.
Затем проверяется, есть ли на руках пары с валетом или картами высшего достоинства (7). Обычно видеопокер отмечает только такие пары.
Следующий тест проверяет, есть ли в раскладе туз (8). Это будет нужно для определения флэш стрита. Если у игрока флэш стрит, и одна из карт – туз, то у него самый высший тип флэш стрита – флэш роял.
Теперь у функции есть весь набор значений логических переменных: straight, flush, hasAce, fourOfAKind, threeOfAKind, twoPair, pair, fullHouseи jackOrHigher.С их помощью определяется действительная ценность расклада, и возвращается символьная строка (9).
// Определяем расклад.
function handValue() {
// Копируем и сортируем карты игрока.
hand = cards.slice();
(1) →hand.sort(compareHands);
// Создаем массив мастей и рангов для более легкого доступа к ним.
suits = new Array();
nums = new Array();
for (i=0; i<5; i++) {
suits.push(hand[i].substr(0,1));
nums.push(Number(hand[i].substr(1,2)));
}
(2) →// Проверяем, расположены ли они по возрастанию.
straight = true;
for (i=0; i<4; i++) {
if (nums[i]+1 != num[i+1]) straight = false;
}
(3) →// Ищем десятку, валета, даму, короля и туза.
if (nums[0] == 1) and (nums[1] == 10) and (nums[2]) == 11) and (nums[3] == 12) and (nums[4] == 13)) straight = true;
(4) →// Выясняем, одной ли масти карты.
flush = true;
for (i=1; i<5;l i++) {
if (suits[i] != suits[0]) flush = false;
}
(5) →// Создаем массив для подсчета, сколько карт одного
// достоинства находится в раскладе.
counts = new Array();
for (i=0; i<14; i++) {
counts.push(0);
}
for (i=0; i<5; i++) {
counts[nums[i]]++;
}
(6) → // Используя массив counts, ищем совпадения.
pair = false;
twoPair = false;
threeOfAKind = false;
fourOfAKind = false;
for (i=1; i<14; i++) {
// Найдена пара.
if (counts[i] == 2) {
// Найдена вторая пара.
if (pair) {
twoPair = true;
// Найдена только одна пара.
} else {
pair = true;
}
// Три карты одного достоинства.
} else if (counts[i] == 3) {
threeOfAKind = true;
// Четыре карты одного достоинства.
} else if (counts[i] == 4) {
fourOfAKind = true;
}
}
(7) → // Проверяем, есть ли среди совпадающих карт валеты или
// карты более высокого ранга.
jackOrHigher = false;
for (i=1; i<14; i++) {
if (((i==1) or (i>10) and (counts[i]>=2)) {
jackOtHigher = true;
}
}
(8) → // Выясняем, является ли карта более высокого ранга тузом.
hasAce = false;
if (counts[1] > 0) hasAce = true;
(9) → // Делаем вывод, какой расклад на руках у игрока.
if (straight and flush and hasAce) {
return("Royal Flush");
} else if (straight and flush) {
return("Straight Flush");
} else if (fourOfAKind) {
return("Four-Of-A-Kind");
} else if (pair and threeOfAKind) {
return("Full House");
} else if (flush) {
return("Flush");
} else if (straight) {
return("Straight");
} else if (threeOfAKind) {
return("Three-Of-A-Kind");
} else if (twoPair) {
return("Two Pair");
} else if (pair and jaskOrHigher) {
return("High Pair");
} else if (pair) {
return("Low Pair");
} else {
return("Nothing");
}
}И последняя оставшаяся функция – winning,которой передается строчка, сгенерированная функцией handValueи которая определяет соответствующую сумму выигрыша.
// Исходя из типа расклада возвращаем сумму выигрыша.
function winnings(handVal) {
if (handVal == "Royal Flush") return(800);
if (handVal == "Straight Flush") return(50);
if (handVal == "Four-Of-A-Kind") return(25);
if (handVal == "Full House") return(8);
if (handVal == "Flush") return(5);
if (handVal == "Straight") return(4);
if (handVal == "Three-Of-A-Kind") return(3);
if (handVal == "Two Pair") return(2);
if (handVal == "High Pair") return(1);
if (handVal == "Low Pair") return(0);
if (handVal == "Nothing") return(0);
}
К сведению
К каждой кнопке Hold/Draw прикреплен собственный фрагмент кода. Для первой кнопки он выглядит следующим образом:on (press) {
holdDraw(0);
}Цифра 0сообщает функции holdDraw,что действие производится с нулевой картой. Для остальных четырех кнопок вместо нуля стоят числа от 1 до 4.
Хотя первый кадр ролика сразу же вызывает функцию startGame(см. раздел «Создание кода»), второй кадр должен вызывать функцию startDeal.Просмотрите ролик, приведенный в качестве примера, чтобы самостоятельно изучить, как это реализовано.
Другие возможности
Суммы, указанные в функции winnings,я выбрал, руководствуясь обычными правилами покера. Однако вы можете указать другие числа в зависимости от той суммы, которую хотите переводить на счет виртуального казино или игрока.
Можно сделать и так: когда на счету игрока не остается денег, переходить, например, к кадру game over.
Еще одна вариация игры – позволить игроку ставить от одного до пяти долларов за игру. Таким образом, игрок ставит меньшую сумму, когда чувствует, что ему не везет, и большую – в других случаях.Игра в очко, или двадцать одно
Исходный файл: Blackjack.fla
Двадцать одно – еще одна популярная карточная игра в казино, которую легко можно перенести на компьютер. Раздающий карты следуют определенному набору правил, следовательно, можно написать программу, которая будет имитировать действия раздающего.
Читать дальшеИнтервал:
Закладка: