Чтение онлайн

на главную - закладки

Жанры

Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Розенцвейг Гэри

Шрифт:
...

Совет

Приступая к разработке, необходимо помнить о различиях между игрой просто для развлечения и реальной игрой на деньги или призы. В играх для настоящих казино требуется более сложная программа защиты информации, чтобы пользователь не смог взломать компьютер или незаконно получить данные, передаваемые через сеть. Разработчик, принимающий заказ на изготовление такой игры, должен быть не только экспертом в области Flash, но также и экспертом в области защиты компьютерной информации и защиты информации в сети. Лаже если вы и специалист в выше обозначенных областях, с большой осторожностью принимайтесь за такой проект: он будет

сложным и, возможно, не раз вызовет у вас головную боль.

Игровой автомат

Исходный файл: Slotmachine.fla

Игровой автомат – игра функционально простая, но с довольно сложным интерфейсом. Игрок просто щелкает по рычагу игрового автомата и ждет результата. Автомат сам выполняет всю оставшуюся работу.

На рис. 15.1 показан фрагмент ролика Slotmachine.fla. Рычаг справа – единственный элемент, который будет реагировать на действия игрока. Когда игровой автомат останавливается, в трех окошках отображаются картинки.

Рисунок 15.1. Простой игровой автомат с рычагом и тремя окошками

Задача проекта

В отличие от многих игровых автоматов, в которых используются интересные, но сложные способы для определения ставок и получения выигрыша, этот предельно прост. Игрок щелкает по рычагу, чтобы привести его в действие. Затем барабаны в трех окнах начинают крутиться. Один за другим они будут останавливаться, показывая произвольный элемент (картинку).

Когда все три барабана останавливаются, картинки, оказавшиеся в них, и определяют результат. Выигрыш соответствует тем суммам, которые показаны внизу игрового автомата (см. рис. 15.1).

Подход

Единственной сложной частью кода в игре является вращение. Осуществить это можно следующим образом: сделать так, чтобы различные картинки прокручивались в окошке снизу вверх. Проблема заключается в том, что картинки должны вертеться так же быстро, как крутятся барабаны в реальном игровом автомате. На большинстве компьютеров программа Flash не может проигрывать ролик с такой скоростью.

Вместо этого можно воспользоваться размытой анимацией вращения, которая представляет собой клип, состоящий из нескольких размытых кадров. На рис. 15.2 показаны несколько подобных кадров.

Рисунок 15.2. Эти кадры анимации создают эффект крутящегося барабана при быстром воспроизведении

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

Просмотрите ролик Slotmachine.fla, чтобы увидеть, как крутятся барабаны и как они последовательно останавливаются.

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

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

Клип spin начинается с пустого кадра, где он ждет, пока игрок не щелкнет по рычагу. Кадр прозрачный, так что сквозь него виден клип "symbols".

В остальных кадрах клипа "spin" находится размытая анимация. За изображениями, показанными на рис. 15.2, расположен белый непрозрачный фон, закрывающий клип "symbols" во время вращения колес.

В клипе "symbols" находятся семь кадров, во всех содержатся разные символы. В ролике Slotmachine.fla это изображения желудя, яблока,

листа, бревна, луны, солнца и лисы.

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

Большая часть кода для этой игры находится в основной временной шкале. Однако сначала разберем те фрагменты кода, которые относятся к клипам.

В ролике Slotmachine.fla под клипом с рычагом размещена кнопка. К ней прикреплен простой сценарий, который вызывает функцию pull, находящуюся в основной временной шкале.

on (release) {

pull;

}

В клипе «spin» содержатся два небольших сценария. Команда stop находится в первом кадре. Сценарий, который уменьшает значение счетчика numTimes на единицу, располагается в последнем кадре. Если значение счетчика равно нулю, сценарий переходит к первому кадру ролика и сообщает об этом функции в основной временной шкале. В противном случае клип снова возвращается ко второму кадру.

numTimes–;

if (numTimes <= 0) {

gotoAndStop(1);

_root.spinDone(_name);

} else {

gotoAndPlay(2);

}

Большой фрагмент программы в основной временной шкале определяет, сколько денег выиграл пользователь, если выиграл вообще. Программа начинается с того, что случайным образом выбирает кадр для трех символов и предоставляет игроку $100, на которые он может играть в этой виртуальной игре.

initGame;

stop;

function initGame {

// Случайным образом выбираем кадры для трех символов.

for (i=1;i<4;i++) {

_root["symbol"+i].gotoAndStop(randomSymbol);

}

// Начинаем со $100.

cash = 100;

showCash;

}

Вместо того чтобы отображать сумму, имеющуюся у игрока, просто цифрами, следующая функция помещает перед ней знак доллара и добавляет переменную cash в displayCash. Эта переменная связана с текстовым полем на рабочем поле.

// Отображаем сумму в долларах.

function showCash {

cashDisplay = "$"+cash;

}

Когда игрок щелкает по рычагу, происходит несколько событий. Сначала из суммы наличных денег игрока вычитается $1. Затем клип «arm» переходит ко второму кадру, то есть показывается, что рычаг переходит в нижнее положение. Затем все три клипа «spin» начинают проигрываться. Каждому клипу сообщаются различные значения переменной numTimes – 8, 6 и 4 – то есть первая анимация будет проигрываться восемь раз, вторая – шесть и третья – четыре. Также здесь определяется результат каждого вращения, устанавливаются клипы symbol, хотя они скрыты за непрозрачными анимациями spin до тех пор, пока эти анимации не будут проиграны.

// Рычаг переходит в нижнее положение.

function pull; {

// Когда рычаг приводится в действие,

// каждый раз вычитаем один доллар.

cash–;

showCash;

// Воспроизводим анимацию рычага.

_root["arm"].gotoAndPlay(2);

// Воспроизводим анимацию вращения.

for (i=1; i<4; i++) {

// Сообщаем, сколько раз нужно вращать барабан.

_root["spin"+i].numTimes = 8-i*2;

_root["spin"+i].gotoAndPlay(2);

}

// Выбираем результат для каждого символа случайным образом.

for (i=1; i<4; i++) {

_root["symbol"+i].gotoAndStop(randomSymbol);

}

}

Запрограммировать случайный выбор символа непросто. Если вероятность выбора каждого из семи символов одинакова, тогда вероятность вывода трех совпадений одинакова для любого символа. Другими словами, три изображения желудя появляются так же часто, как и три изображения лисы. То есть не имеет смысла выплачивать различные суммы за совпадения различных картинок.

...

Примечание

У реальных игровых автоматов необычайно сложный метод выбора символов, которые появятся в окошках. В таком методе используются сложные математические формулы, так что казино может точно рассчитать вероятность выигрыша.

Поделиться:
Популярные книги

Газлайтер. Том 10

Володин Григорий
10. История Телепата
Фантастика:
боевая фантастика
5.00
рейтинг книги
Газлайтер. Том 10

На границе империй. Том 7. Часть 2

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Звездная Кровь. Изгой

Елисеев Алексей Станиславович
1. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Изгой

Хозяин Теней 4

Петров Максим Николаевич
4. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 4

Картофельное счастье попаданки

Иконникова Ольга
Фантастика:
фэнтези
5.00
рейтинг книги
Картофельное счастье попаданки

Экзорцист: Проклятый металл. Жнец. Мор. Осквернитель

Корнев Павел Николаевич
Фантастика:
фэнтези
героическая фантастика
5.50
рейтинг книги
Экзорцист: Проклятый металл. Жнец. Мор. Осквернитель

Доктора вызывали? или Трудовые будни попаданки

Марей Соня
Фантастика:
юмористическая фантастика
попаданцы
5.00
рейтинг книги
Доктора вызывали? или Трудовые будни попаданки

Метатель

Тарасов Ник
1. Метатель
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
постапокалипсис
5.00
рейтинг книги
Метатель

Моя на одну ночь

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Моя на одну ночь

Чехов. Книга 2

Гоблин (MeXXanik)
2. Адвокат Чехов
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Чехов. Книга 2

Хозяин Теней 2

Петров Максим Николаевич
2. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 2

Сумеречный стрелок 7

Карелин Сергей Витальевич
7. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный стрелок 7

Жизнь под чужим солнцем

Михалкова Елена Ивановна
Детективы:
прочие детективы
9.10
рейтинг книги
Жизнь под чужим солнцем

Красноармеец

Поселягин Владимир Геннадьевич
1. Красноармеец
Фантастика:
боевая фантастика
попаданцы
4.60
рейтинг книги
Красноармеец