function dealCard(hand) {
hand.push(deck.pop());
}
Функции showBetи showCashотображают текущую ставку и текущую сумму наличных с добавлением знака "$" впереди. Не забудьте создать соответствующие текстовые поля для каждой из этих сумм.
// Отображаем сумму наличности со знаком "$".
function showCash() {
cashDisplay = "$" + cash;
}
// Отображаем сумму ставки со знаком "$".
function showBet() {
betDisplay = "$" + bet;
}
Функция showCardsпросматривает карты, имеющиеся на руках у игрока и раздающего, и помещает соответствующие клипы на рабочее поле. С помощью переменной showDealerFirstCardуказывается, отображается ли первая карта раздающего или показывается всего лишь рубашка карты.
// Отображаем карты на руках у игрока и раздающего.
function showCards() {
// Отображаем первую карту раздающего, когда игроку
// все карты розданы.
if (showDealerFirstCard) {
_root["dealer0"].gotoAndStop(dealerHand[0]);
} else {
_root["dealer0"].gotoAndStop(2);
}
// Показываем остальные карты раздающего.
for (i=1; i
_root["dealer"+i].gotoAndStop(dealerHand[i]);
}
// Показываем все карты игрока.
for (i=0; i
_root["player"+i].gotoAndStop(playerHand[i]);
}
// Отображаем сумму карт на руках.
playerValue = handValue(playerHand);
dealerValue = handValue(dealerHand);
}
После того как были розданы первые две карты, существует вероятность того, что у кого-то уже двадцать одно очко. Если у игрока, то он сразу же выигрывает, сумма выигрыша составляет 150 % от ставки. Если же у раздающего, то игрок проигрывает.
// Проверяем, есть ли 21 очко.
function checkForBlackjack() {
// Если двадцать одно у игрока,
// выигрыш составляет 150 % ставки.
if (playerHand.length == 2) and (playerValue == 21)) {
cash += bet*2.5;
showCash();
result = "Blackjack!";
gotoAndPlay("Done");
// Если у раздающего двадцать одно, игрок проиграл.
} else if ((dealeerHand.length == 2) and
(dealerHand == 21)) {
result = "Dealer has blackjack!";
gotoAndPlay("Done");
}
}
После того как были розданы первые четыре карты, ролик переходит в режим ожидания, к кадру «Player». В этом кадре находятся две кнопки: «Hit» (Еще) и «Stay» (Хватит). Игрок может щелкнуть по кнопке Hit" и запросить еще одну карту, при этом вызывается функция hit.Если с новой картой у игрока 21 очко или больше, игра автоматически переходит дальше к кадру выигрыша или проигрыша соответственно.
// Игрок берет еще одну карту.
function hit() {
dealCard(playeerHand);
showCards();
playerValue = handValue(playerHand);
// Если у игрока 21 очко или больше, выясняем,
// сколько очков у раздающего.
if (playerValue >= 21) startDealer();
}
Когда игрок закончит набирать карты, очередь переходит к раздающему. Функция startDealerначинается с того, что переменной showDealerFirstCardприсваивается значение true. Когда снова вызывается функция showCards,отображается первая карта раздающего. Затем игра переходит к кадру «Dealer».
// Отображаем первую карту раздающего,
// теперь он может набирать себе карты.
function startDealer() {
showDealerFirstCard = true;
showCards(0;
gotoAndPlay("Dealer");
}
Кадр «Dealer» проигрывается снова и снова, каждый раз вызывается функция dealerMove,проверяется сумма очков раздающего, больше ли она 17 или нет. Правилами казино определено, что раздающий берет еще одну карту до тех пор, пока сумма очков не превысила 16. Когда раздающий закончил набирать карты, вызывается функция decideWinner.
// Раздающий берет еще одну карту до тех пор,
// пока сумма очков меньше 17.
function dealerMove() {
if (handValue(dealerHand) < 17) {
dealCard(dealerHand);
shoCards();
gotoAndPlay("Dealer");
// Раздающий закончил набирать карты.
} else {
decideWinner();
}
}
Функция handValueиспользуется во многих ранее рассмотренных функциях для того, чтобы определить сумму очков на руках. Ранг каждой карты добавляется к сумме очков, при этом туз равен одному очку. Если на руках находится туз и добавление 10 очков не приведет к перебору, тогда к общей сумме прибавляется 10 очков.
// Подсчитываем очки.
function handValue(hand) {
total = 0;
ace = false;
for (i=0; i
// Добавляем ранг карты.
val = Number(hand[i].substr(1,2));
// За валета, даму и короля начисляем 10 очков.
if (val > 10) val = 10;
total += val;
// Запоминаем, если был найден туз.
if (val == 1) ace = true;
}
// Туз может стоить 11 очков, если у игрока не будет перебора.
if ((ace) and (total <= 11)) total += 10;
return(total);
}
С помощью набора правил следующая функция определяет победителя. В случае выигрыша игрока не только корректируется сумма наличных, но и определяется значение переменной result,которая затем отображается на рабочем поле в кадре с меткой «Done».
// Определяем победителя или случай игры в ничью.
function decideWinner() {
showCash();
if (playerValue > 21) {
result = "You Busted!";
} else if (dealerValue > 21) {
Читать дальше
Конец ознакомительного отрывка
Купить книгу