-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathorder.mjs
86 lines (72 loc) · 1.55 KB
/
order.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import { Deck } from './deck.mjs';
import { Card, Rank, Suit } from './card.mjs';
export function Order() {
this.trumps = new Deck();
this.dominants = new Deck();
}
Order.prototype.dominate = function(card) {
this.dominants.clear();
if (card && !this.trumps.contains(card)) {
let suit = card.suit;
for (let rank of Rank) {
let dominant = Card[suit][rank];
if (!this.trumps.contains(dominant)) {
this.dominants.add(dominant);
}
}
}
};
Order.prototype.promote = function(suits = [], ranks = []) {
this.trumps.clear();
for (let suit of suits) {
for (let rank of Rank) {
if (!ranks.includes(rank)) {
let trump = Card[suit][rank];
this.trumps.add(trump);
}
}
}
for (let rank of ranks) {
for (let suit of Suit) {
let trump = Card[suit][rank];
this.trumps.add(trump);
}
}
};
Order.prototype.valueOf = function(card) {
let value = 1;
for (let dominant of this.dominants) {
if (dominant == card) {
return value;
}
value++;
}
for (let trump of this.trumps) {
if (trump == card) {
return value;
}
value++;
}
return 0;
};
Order.prototype.orderOf = function(card) {
let value = 1;
for (let suit of Suit) {
for (let rank of Rank) {
let c = Card[suit][rank];
if (!this.trumps.contains(c)) {
if (card == c) {
return value;
}
value++
}
}
}
for (let trump of this.trumps) {
if (trump == card) {
return value;
}
value++;
}
return 0;
};