Иллюстрированный самоучитель по созданию Flash-игр

Игра в очко, или двадцать одно

Один из недостатков использования шести колод состоит в том, что программе требуется время для, их перетасовки. Следовательно, кадр "shuffle" появляется перед ключевым кадром, вызывающим функцию createDeck. Поэтому слово "shuffle" (Идет перетасовка колоды) появится на экране прежде, чем код начнет тасовать карты. Следовательно, игрок не должен удивляться, почему его компьютер вдруг "завис".

// Создаем перетасованную колоду карт,
function createDeck() {
    // Создаем упорядоченную колоду.
    suits = ["c", "d", "s", "h"];
    temp = new Array();
    for (i = 0; i < 6; i++) {
        for (suit = 0; suit < 4; suit++) {
            for (num = 1; num < 4; num++) {
                temp.push(suits[suit] + num);
            }
        }
    }
    // Карты выбираются случайным образом до тех пор, пока
    // колода не будет перемешана,
    deck = new Array();
    while (temp.length > 0) {
        r = int(Math.random() * temp.length);
        deck.push(temp[r]);
        temp.splice(r, 1);
    }
}

В функции initHand создаются массивы playerHand и dealerHand. Переменной showDealerFirstCard присваивается значение false, по умолчанию делается ставка в пять долларов.

// Инициализируем массивов расклада и определяем сумму ставки,
function initHand() {
    playerHand = new Array();
    dealerHand = new Array();
    showDealerFirstCard = false;
    bet = 5;
    showBet();
}

Когда игрок щелкает по кнопке Add to bet (Повысить ставку), вызывав функция addToBet, которая повышает ставку на пять долларов и не позволяет сделать ставку, превышающую 25 долларов.

// Функция увеличивает ставку игрока вплоть до 25 долларов,
function addToBet() {
    bet += 5;
    if (bet > 25)
        bet = 25;
    showBet;
}

Когда игрок щелкает по кнопке Deal (Раздать), вызывается функция makeBet, которая вычитает сумму ставки из суммы наличных игрока, Затем ролик проходит по четырем кадрам от "Deal1" до "Deal4".

// Вычитаем сумму ставки из суммы наличных денег игрока.
function makeBet() {
    cash -= bet;
    showCash();
}

В каждом из четырех кадров вызывается функция dealCard, дважды с использованием массива playerHand и дважды – dealerHand. При выполнении этой функции по две карты раздаются игроку и раздающему. Также в каждом кадре вызывается функция showCards.

// Раздаем игроку одну карту из колоды.
function dealCard(hand) {
    hand.push(deck.pop());
}

Функции showBet и showCash отображают текущую ставку и текущую сумму наличных с добавлением знака "$" впереди. Не забудьте создать, соответствующие текстовые поля для каждой из этих сумм.

// Отображаем сумму наличности со знаком "$".
function showCash() {
    cashDisplay = "$" + cash;
}
// Отображаем сумму ставки со знаком "$".
function showBet() {
    betDisplay = "$" + bet;
}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.