1 | export function checkIfSameValue(cards) {
|
---|
2 | for (let i = 1; i < cards.length; i++) {
|
---|
3 | if (cards[i][1] !== cards[i-1][1]) {
|
---|
4 | return false;
|
---|
5 | }
|
---|
6 | }
|
---|
7 |
|
---|
8 | return true;
|
---|
9 | }
|
---|
10 |
|
---|
11 | function checkIf2CardsAreSameColour(card1, card2) {
|
---|
12 | if (card1[0] === card2[0]) return true;
|
---|
13 | if (card1[0] === 'H' && card2[0] === 'D') return true;
|
---|
14 | if (card1[0] === 'D' && card2[0] === 'H') return true;
|
---|
15 | if (card1[0] === 'S' && card2[0] === 'C') return true;
|
---|
16 | if (card1[0] === 'C' && card2[0] === 'S') return true;
|
---|
17 | return false;
|
---|
18 | }
|
---|
19 |
|
---|
20 | export function checkIfSameColour(cards) {
|
---|
21 | for (let i = 1; i < cards.length; i++) {
|
---|
22 | if (!checkIf2CardsAreSameColour(cards[i], cards[i-1])) {
|
---|
23 | return false;
|
---|
24 | }
|
---|
25 | }
|
---|
26 |
|
---|
27 | return true;
|
---|
28 | }
|
---|
29 |
|
---|
30 | export function checkIfSameSuit(cards) {
|
---|
31 | for (let i = 1; i < cards.length; i++) {
|
---|
32 | if (cards[i][0] !== cards[i-1][0]) {
|
---|
33 | return false;
|
---|
34 | }
|
---|
35 | }
|
---|
36 |
|
---|
37 | return true;
|
---|
38 | }
|
---|
39 |
|
---|
40 | export function checkIfStraight(cards) {
|
---|
41 | let values = ['A', '2', '3', '4', '5', '6', '7', '8', '9', 'X', 'J', 'Q', 'K'];
|
---|
42 |
|
---|
43 | let valuesInCards = [];
|
---|
44 | for (let i = 0; i < cards.length; i++) {
|
---|
45 | valuesInCards.push(cards[i][1]);
|
---|
46 | }
|
---|
47 |
|
---|
48 | let temp = values.reduce((c, v, i) => Object.assign(c, {[v]: i}), {});
|
---|
49 |
|
---|
50 | valuesInCards = valuesInCards.sort((a, b) => temp[a] - temp[b]);
|
---|
51 |
|
---|
52 | let idx = values.indexOf(valuesInCards[0]);
|
---|
53 |
|
---|
54 | let straight = true;
|
---|
55 |
|
---|
56 | for (let i = 0; i < valuesInCards.length; i++) {
|
---|
57 | if (valuesInCards[i] !== values[idx]) {
|
---|
58 | straight = false;
|
---|
59 | break;
|
---|
60 | }
|
---|
61 |
|
---|
62 | idx++;
|
---|
63 | if (idx >= temp.length) {
|
---|
64 | straight = false;
|
---|
65 | break;
|
---|
66 | }
|
---|
67 | }
|
---|
68 |
|
---|
69 | if (straight) {
|
---|
70 | return true;
|
---|
71 | }
|
---|
72 |
|
---|
73 | values = ['2', '3', '4', '5', '6', '7', '8', '9', 'X', 'J', 'Q', 'K', 'A'];
|
---|
74 | temp = values.reduce((c, v, i) => Object.assign(c, {[v]: i}), {});
|
---|
75 |
|
---|
76 | valuesInCards = valuesInCards.sort((a, b) => temp[a] - temp[b]);
|
---|
77 |
|
---|
78 | idx = values.indexOf(valuesInCards[0]);
|
---|
79 |
|
---|
80 | for (let i = 0; i < valuesInCards.length; i++) {
|
---|
81 | if (valuesInCards[i] !== values[idx]) return false;
|
---|
82 |
|
---|
83 | idx++;
|
---|
84 | if (idx >= temp.length) return false;
|
---|
85 | }
|
---|
86 |
|
---|
87 | return true;
|
---|
88 | }
|
---|