// Найдена только одна пара.
} 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
Двадцать одно – еще одна популярная карточная игра в казино, которую легко можно перенести на компьютер. Раздающий карты следуют определенному набору правил, следовательно, можно написать программу, которая будет имитировать действия раздающего.
Задача проекта
Наша цель – создать базисный вариант игры в очко, не стремясь реализовать полный набор функций. Некоторые правила в этой игре редко используются, например удваивание ставки, страхование и разделение, но если вы захотите включить их в свою игру, написание кода окажется очень сложной задачей. Оценить наличие таких правил смогут только избранные, поэтому здесь они опущены, чтобы не перегружать книгу лишней информацией.
На рис. 15.4 показан кадр ролика Blackjack.fla. Вы видите, что игрок взял пять карт, которые в сумме дали 18 очков. А раздающий карты взял три карты, их сумма составляет 21.
Рисунок 15.4. Расклад, когда раздающий выиграл, так как у него 21, а у игрока только 18 очков
В этой простой игре игроку и раздающему дается по две карты. Первая карта раздающего остается лежать рубашкой вверх до тех пор, пока игрок не закончит набирать карты. Игрок может брать карты до тех пор, пока у него не окажется двадцать одно очко или более. Затем компьютер выдает карты раздающему, пока у того не будет минимум 17 очков.
Если с первыми двумя картами у игрока 21 очко, он сразу же выигрывает и получает дополнительно 50 % суммы выигрыша. Если у раздающего получается 21, игра сразу же приостанавливается. Если же так не случилось, то выигрывает тот, у кого на руках большее количество очков, не превышающее 21.
Игрок может контролировать свои ставки (от 5 до 25 долларов), каждый раз повышая ставку на пять долларов.
Подход
Как и в видеопокере, здесь есть массив deck,в котором содержится перетасованная колода карт. Разница заключается в том, что в этой игре в массиве находятся шесть колод. В игре в очко такой массив называется shoe.
Читать дальше
Конец ознакомительного отрывка
Купить книгу