-
Notifications
You must be signed in to change notification settings - Fork 0
/
start.js
101 lines (86 loc) · 2.76 KB
/
start.js
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
const { DefaultDeserializer } = require("v8");
const readline = require("readline").createInterface({
input: process.stdin,
output: process.stdout,
});
// start of cards
let suits = ["Clubs", "Diamonds", "Hearts", "Spades"];
let values = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];
let cards = [];
for (let s = 0; s < suits.length; s++) {
for (let n = 0; n < values.length; n++) {
cards.push(suits[s] + "-" + values[n]);
}
}
// console.log(cards);
// end of cards
// functions
function shuffle() {
// for 1000 turns
// switch the values of two random cards
for (let i = 0; i < 1000; i++) {
let location1 = Math.floor(Math.random() * cards.length);
let location2 = Math.floor(Math.random() * cards.length);
let tmp = cards[location1];
cards[location1] = cards[location2];
cards[location2] = tmp;
}
// console.log(cards);
}
function pickCards() {
for (let i = 0; i < 4; i++) {
if (i % 2 === 0) player_cards.push(cards[i]);
else dealer_cards.push(cards[i]);
}
console.log(`You got ${player_cards[0]}, ${player_cards[1]}`);
console.log(`The dealer got ${dealer_cards[0]}, ${dealer_cards[1]}`);
}
function calculateWinner(player_cards, dealer_cards) {
let player_scores = player_cards.map((card) => card.split("-")[1]);
let dealer_scores = dealer_cards.map((card) => card.split("-")[1]);
// console.log(player_scores, dealer_scores);
let player_final_score = calculateScore(player_scores);
let dealer_final_score = calculateScore(dealer_scores);
//check who has greater score
if (player_final_score > dealer_final_score) return "player";
else if (player_final_score < dealer_final_score) return "dealer";
return "tie";
}
function calculateScore(scores) {
let final_score = 0;
for (let i = 0; i < 2; i++) {
if (scores[i] === "A") final_score += 1;
else {
let s;
s = parseInt(scores[i]);
if (!Number.isNaN(s)) final_score += s;
}
}
final_score = final_score % 10;
return final_score;
}
function calculateBalance(winner, player_chips, playerBet) {
if (winner === "player") {
console.log(`You won!!!, received ${playerBet} chip(s)`);
return player_chips + playerBet;
} else if (winner === "dealer") {
console.log(`You lose!!!, lost ${playerBet} chip(s)`);
return player_chips - playerBet;
} else if (winner === "tie") {
console.log(`It's a tie!!!, no lose no gain`);
return player_chips;
}
}
// main logic
let player_chips = 0;
let player_cards = [];
let dealer_cards = [];
let playerBet = 0;
readline.question("Please put your bet\n>", (bet) => {
playerBet = bet;
shuffle();
pickCards();
let winner = calculateWinner(player_cards, dealer_cards);
player_chips = calculateBalance(winner, player_chips, playerBet);
readline.close();
});