Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Монкур М. -> "Освой самостоятельно JavaScript за 24 часа" -> 98

Освой самостоятельно JavaScript за 24 часа - Монкур М.

Монкур М. Освой самостоятельно JavaScript за 24 часа — М.: Вильяме, 2001. — 320 c.
ISBN 5-8459-0159-6
Скачать (прямая ссылка): javascriptza24chasasamostoyatelno2001.pdf
Предыдущая << 1 .. 92 93 94 95 96 97 < 98 > 99 100 101 102 103 104 .. 110 >> Следующая

Листинг 23.7. Код отображения новых карт_
1: //Добор новых карт
2: function Draw() {
3: var curcard = 6;
4: for (i=l; i<6; i++) {
5: if (!held[i]) {
6: hand[i] = deck[curcard++];
7: document.images(i].src = hand[i].fname();
8: }
9: }
10: dealt = false;
11: document.images[11].src="deal.gif”;
score += Addscore(); document, forml, total, value = score;
H:_}_
Вот что делает эта функция.
• Строка 3 определяет локальную переменную curcard, используемую для указания следующей отображаемой карты. Поскольку всего на руках у игрока только пять карт, начальное ее значение 6.
• Строки 4-9 задают цикл проверки статуса карты по значению массива held. Если карта сдается, то она заменяется следующей картой и изображение страницы обновляется.
• Поскольку перебираются все карты, находящиеся на руках у пользователя, в строках 10 и 11 переменной dealt определяется значение false и кнопка Deal заменяет кнопку Draw.
• Строки 12 и 13 вызывают функцию определения счета. Детально она рассмотрена в следующем разделе.
Определение счета игрока
Последняя рассматриваемая нами функция — это Addscore, позволяющая определить очки пользователя. Очки определяются по наличию у игрока следующих комбинаций карт.
23-й час. Создание сценария игры 271
http://ITBookz.ru/
• Одна пара (валетов и выше) — 1 очко
• Две пары — 2 очка
• Три короля — 3 очка
• — 4 очка
• Флэш — 5 очков
• Фул хаус — 10 очков
• Четыре короля — 25 очков
• Прямой флэш — 50 очков
• Королевский флэш: 100 очков
В листинге 23.8 представлен код этой функции.
Листинг 23.8. Подсчет очков игрока
1: //Вычисление счета
2: function Addscore() {
3: var straight = false;
4: var flush = false;
5: var pairs = 0;
6: var three = false;
7: var tally = new Array(14);
8: //Сортировка по категориям
var nums = new Array(5);
10: for (i=0; i<5; i++) {
11: nums[i] = hand[i+l].num;
12 : }
13: nums.sort(Nurnsort);
14: //Флэш
15: if (hand(1 ] .suit == hand[2].suit fes
16: hand[2].suit == hand[3].suit &&
17: hand[3].suit == hand[4].suit sk
18: hand[4].suit == hand[5].suit) flush = true;
19: //Стрит (малый)
20: if (nums[0 ] == nums[l] - 1 SS nums[l] == nums[2] - 1 &S
22: nums[2] == nums[3] - 1 Sk
23: nums[3] == nums [ 4 ] - 1) straight = true;
24: //Стрит (большой)
25: if (nums[0] == 1 kk tiums[l] == 10 SS nums[2] == 11
26: SS nums[3] == 12 SS nums[4] == 13)
27: straight = true;
28: //Королевский флэш, прямой флэш, стрит, флэш
29: if (straight SS flush SS nums [4] == 13 SS nums[0] == 1) {
30: document.forml .message.value=,,Royal Flush";
31: return 100;
32: }
33: if (straight SS flush) {
34: document.forml.message.value="Straight Flush";
35: return 50;
36: }
37: if (straight) {
272 Часть VI. Сложные приложения JavaScript
http://ITBookz.
38: document, forml.message. value=" Straight";
39: return 4;
40: }
41: if (flush) {
42: document.forml.message.value="Flush";
43: return 5;
44: }
45: //Счет по отдельным картам
46: for (i=l; i<14; i++) {
47: tally[i] = 0;
48: }
49: for (i=0; i<5; i++) {
50: tally[nums[i]] += 1;
51: }
52: for (i=l; i<14; i++) {
53: if (tally[i] == 4) {
54: document.forml.message.value = "Four of a Kind";
55: return 25;
56: }
57: if (tally[i] == 3) three = true;
58: if (tally[i] == 2) pairs += 1;
59: }
60: if (three && pairs == 1) {
61: document.forml.message.value="Full House";
62: return 10;
63: }
64: if (pairs ==2) {
65: document.forml.message.value="Two Pair";
66: return 2;
67: }
68: if (three) {
69: document.forml.message.value="Three of a Kind"; return 3;
71: }
72: if (pairs == 1) {
73: if (tally[1] == 2 \ \ tally[11] ==2
74: i 1 tally[12] == 2 ] | tally[13]==2) {
75: document.forml.message.value="Jacks or Better";
76: return 1;
77: }
78: }
79: document.forml.message.value="No Score"; return 0;
31:_}_
Эта функция проводит некоторые сложные вычисления. Понять их не так уж и сложно.
• Строки объявляют переменные и флаги для разных раскладов карт игрока.
• Строки 8_ 13 создают массив nums, определяющий разные категории наборов карт. Он позволяет упростить процедуру определения счета.
• Строки 14—18 определяют флэш.
23-й час. Создание сценария игры 273
http://ITBookz.
• Строки 19-27 определяют стрит (последовательный набор карт). Поскольку туз может иметь индекс либо либо 13. стрит с ним определяется отдельно.
• Строки 28-32 определяют королевский флэш (10, валет, дама, король, туз).
• Строки 4 4 44 возвращают значения описанных выше категорий.
• Строки 45 5 создают массив tally. Он позволяет рассчитать очки отдельных карт в раскладе игрока.
• Строки 52—71 определяют допустимые комбинации отдельных карт, за которые насчитываются очки.
• Если в предыдущем коде определены пары, то строки 72—78 определяют наличие пар валетов и возвращают соответствующий счет.
• Если комбинации карт, за которые насчитываются очки, не найдены, то в строках 79 и 80 выводится сообщение о добавлении нуля очков.
Готовый документ со сценарием
Листинг 23.9 содержит готовый программный код документа со сценарием игры.
Предыдущая << 1 .. 92 93 94 95 96 97 < 98 > 99 100 101 102 103 104 .. 110 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.