-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.ts
132 lines (106 loc) · 2.52 KB
/
index.ts
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
function rollDice(type: number, quantity: number): number | number[] {
if (quantity < 1) return -1;
if (quantity === 1) return Math.floor(Math.random() * type) + 1;
const rolls: number[] = [];
let i;
for (i = 0; i < quantity; i += 1) {
rolls.push(Math.floor(Math.random() * type) + 1);
}
return rolls;
}
function flipCoin(): string {
const coinFace = Math.floor(Math.random() * 2);
const coinArray = ['heads', 'tails'];
return coinArray[coinFace];
}
function d2(dices = 1): number | number[] {
return rollDice(2, dices);
}
function d3(dices = 1): number | number[] {
return rollDice(3, dices);
}
function d4(dices = 1): number | number[] {
return rollDice(4, dices);
}
function d6(dices = 1): number | number[] {
return rollDice(6, dices);
}
function d8(dices = 1): number | number[] {
return rollDice(8, dices);
}
function d10(dices = 1): number | number[] {
return rollDice(10, dices);
}
function d12(dices = 1): number | number[] {
return rollDice(12, dices);
}
function d20(dices = 1): number | number[] {
return rollDice(20, dices);
}
function d30(dices = 1): number | number[] {
return rollDice(30, dices);
}
function d60(dices = 1): number | number[] {
return rollDice(60, dices);
}
function d100(dices = 1): number | number[] {
return rollDice(100, dices);
}
function d1000(dices = 1): number | number[] {
return rollDice(1000, dices);
}
function janKenPo(includeBomb = false): string {
const jkp = Math.floor(Math.random() * (includeBomb ? 4 : 3));
const jkpArray = ['rock', 'paper', 'scissors', 'bomb'];
return jkpArray[jkp];
}
/*
interface IJanKenPoPlayers {
player1: 'rock' | 'paper' | 'scissors' | 'bomb';
player2: 'rock' | 'paper' | 'scissors' | 'bomb';
}
*/
function compareJanKenPo(player1: string, player2: string): number {
if (
player1 !== 'rock' &&
player1 !== 'paper' &&
player1 !== 'scissors' &&
player1 !== 'bomb'
) {
return -100;
}
if (
player2 !== 'rock' &&
player2 !== 'paper' &&
player2 !== 'scissors' &&
player2 !== 'bomb'
) {
return -100;
}
if (player1 === player2) return 0;
if (
(player1 === 'rock' && player2 === 'scissors') ||
(player1 === 'paper' && player2 === 'rock') ||
(player1 === 'scissors' && (player2 === 'bomb' || player2 === 'paper')) ||
(player1 === 'bomb' && (player2 === 'rock' || player2 === 'paper'))
)
return -1;
return 1;
}
export {
flipCoin,
d2,
d3,
d4,
d6,
d8,
d10,
d12,
d20,
d30,
d60,
d100,
d1000,
janKenPo,
compareJanKenPo,
};