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

Видеопокер

Подготовка ролика

Основной библиотечный элемент в данной игре – колода карт, то есть клип с 54 кадрами. Первый кадр отображает пустой контур карты. Во втором кадре содержится рубашка карты. Кадры 3-54 показывают различные карты колоды. Каждый кадр имеет такое же имя, какое используется в коде для идентификации карт. Например, "c1" – туз треф и "h11" – валет червей.

Просмотрите ролик Videopoker.fla и вы увидите, что для клипа "deck" выделена целая папка библиотеки, заполненная графическими изображениями. Это упрощает повторное использование элементов для разных карт.

Ролик составлен из пяти экземпляров клипа "deck" (колода), которые называются "card0", "card1", "card2", "card3" и "card4". В первом кадре нужна только кнопка "Deal" (Раздать), которая отображается также и в третьем кадре.

Во втором кадре находится кнопка "Draw" (Выигрыш), а под каждой картой – кнопка "Hold/Replace" (Оставить/Поменять).

Создание кода

Большая часть кода содержится в первом кадре основной временной шкалы. Начинается она с того, что игроку предоставляется 100 долларов.

startGame();
stop();
// "Выдаем" исходную сумму,
function startGame() {
    cash = 100;
}

Как и в предыдущем проекте, перед суммой наличных денег игрока отобразите знак "$".

// Отображаем сумму наличных со знаком доллара,
function showCash() {
    cashDisplay = "$" + cash;
}

Раздача карт начинается с того, что у игрока изымается один доллар. Каждая раздача производится из новой колоды, состоящей из 52 карт. Функция firstDraw берет первые пять карт, а функция showCards помешает клипы соответствующих карт на рабочее поле.

// Сдача карты,
function startDeal() {
    // Уменьшаем сумму наличных денег.
    cash--;
    showCash();
    // Перетасовываем карты и снова сдаем их.
    createDeck();
    f irstDraw();
    showCards();
}

Создание полностью произвольной перетасованной колоды включает в себя два шага. Первый – создание упорядоченной колоды. Это осуществляется путем циклического просмотра всех мастей и всех рангов карт и для каждой комбинации добавляется соответствующий элемент массива.

Затем программа случайным образом выбирает карты из упорядоченной колоды и помещает их в другой массив. Когда массив заполняется, а предыдущий массив оказывается пустым, у вас получается перетасованная колода карт.

// Создаем перетасованную колоду,
function createDeck() {
    // Создаем упорядоченную колоду,
    suits = ["c", "d", "s", "h"];
    temp = new Array();
    for (suit = 0; suit < 4; suit++) {
        for (num = 1; num < 14; 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);
        }
    }
}

Функция firstDraw берет пять карт из колоды и помешает их в массив cards, а также создает небольшой массив hold, в котором хранятся имена тех карт, которые игрок хочет оставить.

// Сдаем первые пять карт.
function firstDraw() {
    cards = new Array();
    for (i = 0; i < 5; i++) {
        cards.push(deck.pop());
    }
    // Допускаем, что игрок оставляет все карты,
    hold = [true, true, true, true, true];
    showCards();
}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.