// Определяем расклад.
function handValue {
// Копируем и сортируем карты игрока.
hand = cards.slice;
(1) → hand.sort(compareHands);
// Создаем массив мастей и рангов для более легкого доступа к ним.
suits = new Array;
nums = new Array;
for (i=0; i<5; i++) {
suits.push(hand[i].substr(0,1));
nums.push(Number(hand[i].substr(1,2)));
}
(2) → // Проверяем, расположены ли они по возрастанию.
straight = true;
for (i=0; i<4; i++) {
if (nums[i]+1 != num[i+1]) straight = false;
}
(3) → // Ищем десятку, валета, даму, короля и туза.
if (nums[0] == 1) and (nums[1] == 10) and (nums[2]) == 11) and (nums[3] == 12) and (nums[4] == 13)) straight = true;
(4) → // Выясняем, одной ли масти карты.
flush = true;
for (i=1; i<5;l i++) {
if (suits[i] != suits[0]) flush = false;
}
(5) → // Создаем массив для подсчета, сколько карт одного
// достоинства находится в раскладе.
counts = new Array;
for (i=0; i<14; i++) {
counts.push(0);
}
for (i=0; i<5; i++) {
counts[nums[i]]++;
}
(6) → // Используя массив counts, ищем совпадения.
pair = false;
twoPair = false;
threeOfAKind = false;
fourOfAKind = false;
for (i=1; i<14; i++) {
// Найдена пара.
if (counts[i] == 2) {
// Найдена вторая пара.
if (pair) {
twoPair = true;
// Найдена только одна пара.
} else {
pair = true;
}
// Три карты одного достоинства.
} else if (counts[i] == 3) {
threeOfAKind = true;
// Четыре карты одного достоинства.
} else if (counts[i] == 4) {
fourOfAKind = true;
}
}
(7) → // Проверяем, есть ли среди совпадающих карт валеты или
// карты более высокого ранга.
jackOrHigher = false;
for (i=1; i<14; i++) {
if (((i==1) or (i>10) and (counts[i]>=2)) {
jackOtHigher = true;
}
}
(8) → // Выясняем, является ли карта более высокого ранга тузом.
hasAce = false;
if (counts[1] > 0) hasAce = true;
(9) → // Делаем вывод, какой расклад на руках у игрока.
if (straight and flush and hasAce) {
return("Royal Flush");
} else if (straight and flush) {
return("Straight Flush");
} else if (fourOfAKind) {
return("Four-Of-A-Kind");
} else if (pair and threeOfAKind) {
return("Full House");
} else if (flush) {
return("Flush");
} else if (straight) {
return("Straight");
} else if (threeOfAKind) {
return("Three-Of-A-Kind");
} else if (twoPair) {
return("Two Pair");
} else if (pair and jaskOrHigher) {
return("High Pair");
} else if (pair) {
return("Low Pair");
} else {
return("Nothing");
}
}И последняя оставшаяся функция – winning, которой передается строчка, сгенерированная функцией handValue и которая определяет соответствующую сумму выигрыша.