Игра в очко, или двадцать одно
Один из недостатков использования шести колод состоит в том, что программе требуется время для, их перетасовки. Следовательно, кадр "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;
}