Игровой автомат
Подготовка ролика
В этом ролике используются три ключевых библиотечных эталона, все остальное – элементы фона. Первый эталон – рычаг, в его первом кадре находится кнопка, по которой может щелкнуть игрок. Остальная часть клипа – анимация рычага, показывающая, как нажали рычаг.
Клип "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
=
l; 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
=
l; i
<
4
; i
+
+
) {
// Сообщаем, сколько раз нужно вращать барабан.
_root[
"spin"
+
i].numTimes
=
8
-
i
*
2
;
_root[
"spin"
+
i].gotoAndPlay(
2
);
}
// Выбираем результат для каждого символа случайным образом.
for
(i
=
l; i
<
4
; i
+
+
) {
_root[
"symbol"
+
i].gotoAndStop(randomSymbol());
}
}