Игровой автомат
Запрограммировать случайный выбор символа непросто. Если вероятность выбора каждого из семи символов одинакова, тогда вероятность Я вывода трех совпадений одинакова для любого символа. Другими словами, три изображения желудя появляются так же часто, как и три изображения лисы. То есть не имеет смысла выплачивать различные суммы за совпадения различных картинок.
У реальных игровых автоматов необычайно сложный метод выбора символов, которые появятся в окошках. В таком методе используются сложные математические формулы, так что казино может точно рассчитать вероятность выигрыша.
Но вероятность появления одного символа должна отличаться от вероятности появления другого символа. Например, символ с бревном появляется в 29% случаев. С другой стороны, символ лисы появляется только в 3% случаев.
Это осуществляется с помощью массива, куда записывается вероятность появления того или иного символа. Затем произвольным образом выбирается число из этого массива. Если оно попадает в диапазон между нулем и вероятностью появления первого символа, выбирается первый символ. В противном случае программа переходит к следующему числу в массиве. Так происходит до тех пор, пока какой-нибудь символ не будет выбран. Просмотрите следующий код, чтобы увидеть, как работает эта схема.
// Выбираем произвольный символ в зависимости от вероятности его появления.
function
randomSymbol() {
// Задаем вероятность появления каждого символа.
chances
=
[
29
,
21
,
16
,
12
,
9
,
7
,
6
];
// Определяем сумму вероятностей.
totalChances
=
0
;
for
(j
=
0
; j
<
chances.length; j
+
+
) {
totalChances
+
=
chances[j];
// Выбираем случайное число.
r
=
int(Math.random()
*
totalChances);
// Определяем, какой символ это число представляет,
for
(j
=
0
; j
<
chances.length; j
+
+
) {
if
(r
<
chances[j]) {
return
(j
+
1
);
}
else
{
r
-
=
chances[j];
}
}
}
}
Когда анимация клипа "spin" завершается, вызывается функция spinDone, которой передается имя экземпляра клипа. Клип "spin1" представляет собой последнюю анимацию в последовательности. Когда эта анимация закончена (то есть все три барабана прекратили вращаться), вызывается функция calcwin, чтобы определить сумму выигрыша.
// Вызываем функцию после каждой анимации вращения,
function
spinDone(name) {
// Определяем, последний ли это символ, остановились ли барабаны.
if
(name
=
=
"spinl"
) {
// Подсчитываем сумму выигрыша,
win
=
calcWin();
cash
+
=
win;
showCash();
}
}
Функция calcWIN определяет, совпадают ли три символа, а также подсчитывает число изображений с желудем в последовательности. Если все три символа совпадают, сумма выигрыша определяется тем, какой это символ. В противном случае игрок все равно может выиграть небольшую сумму денег, если в последовательности находятся одно или два изображения желудя.
// Определяем сумму выигрыша,
function
calcWin() {
// Выясняем, сколько выпало изображений с желудем
numAcorns
=
0
;
for
(i
=
l; i
<
4
; i
+
+
) {
if
(_root[
"symbol"
+
i]._currentFrame
=
=
2
)
numAcorns
+
+
;
// Проверяем, совпадают ли три символа.
firstSymbol
=
_root[
"symboll"
]._currentFrame;
threeOfAkind
=
true
;
for
(i
=
2
; i
<
4
; i
+
+
) {
if
(_root[
"symbol"
+
i]._currentFrame !
=
firstSymbol)
threeOfAKind
=
false
;
// Определяем сумму выигрыша в соответствии с типом символа.
if
(threeOfAKind) {
if
(firstSymbol
=
=
1
) {
win
=
20
;
}
else
if
(firstSymbol
=
=
2
) {
win
=
10
;
}
else
if
(firstSymbol
=
=
3
) {
win
=
30
;
}
else
if
(firstSymbol
=
=
4
) {
win
=
50
;
}
else
if
(firstSymbol
=
=
5
) {
win
=
80
;
}
else
if
(firstSymbol
=
=
6
) {
win
=
100
;
}
else
if
(firstSymbol
=
=
7
) {
win
=
1000
;
// Два изображения желудя.
}
else
if
(numAcorns
=
=
2
) {
win
=
2
;
// Один желудь.
}
else
if
(numAcorns
=
=
1
) {
win
=
1
;
// Изображений желудя нет.
}
else
{
win
=
0
;
return
(win);
}
}
}
}
}
К сведению
Если вы посмотрите на ролик, который приводится в качестве примера, то увидите, что фон игрового автомата на самом деле располагается на переднем плане. Три окна – это "дырки" в изображении, сквозь них видно, как проигрывается анимация вращения, а также видны символы на барабанах.
Вы можете указать действия, которые будут совершаться, если деньги на счету игрока закончатся. Можно проверять это условие и, если оно оказывается истинным, переходить к другому кадру. Можно сообщить игроку, что игра окончена, либо предоставить еще 100 долларов, чтобы игрок сыграл еще раз.
Другие возможности
В более сложных игровых автоматах в одном окне могут находиться сразу несколько символов. В некоторых автоматах символы отображаются также и по вертикали, так что игрок может выиграть, если совпадут символы по трем горизонтальным линиям и двум диагоналям. Иногда игрок может выбирать, сколько монет (от одной до пяти) "вставить" в автомат, чтобы определить потенциальный выигрыш (он будет зависеть от величины ставки).
Так как Flash-ролик – не игра на деньги, а просто развлечение, то более важно предусмотреть возможность изменения графики для соответствия различным темам Web-сайтов. Например, для детского сайта можно сделать картинки с конфетами. Изменяя внешний вид автомата и картинки, одну и ту же программу можно использовать для оформления разных сайтов.