You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
151 lines
3.6 KiB
151 lines
3.6 KiB
var dealerSum = 0;
|
|
var yourSum = 0;
|
|
|
|
var dealerAceCount = 0;
|
|
var yourAceCount = 0;
|
|
|
|
var hidden;
|
|
var deck;
|
|
|
|
var canHit = true;
|
|
|
|
window.onload = function() {
|
|
buildDeck();
|
|
shuffleDeck();
|
|
startGame();
|
|
}
|
|
|
|
function buildDeck() {
|
|
let values = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];
|
|
let types = ["C", "D", "H", "S"];
|
|
deck = [];
|
|
|
|
for (let i = 0; i < types.length; i++) {
|
|
for (let j = 0; j < values.length; j++) {
|
|
deck.push(values[j] + "-" + types[i]);
|
|
}
|
|
}
|
|
// console.log(deck);
|
|
}
|
|
|
|
function shuffleDeck() {
|
|
for (let i = 0; i < deck.length; i++) {
|
|
let j = Math.floor(Math.random() * deck.length);
|
|
let temp = deck[i];
|
|
deck[i] = deck[j];
|
|
deck[j] = temp;
|
|
}
|
|
console.log(deck);
|
|
}
|
|
|
|
function startGame() {
|
|
hidden = deck.pop();
|
|
dealerSum += getValue(hidden);
|
|
dealerAceCount += checkAce(hidden);
|
|
// console.log(hidden);
|
|
// console.log(dealerSum);
|
|
while (dealerSum < 17) {
|
|
//<img src="./cards/4-C.png">
|
|
let cardImg = document.createElement("img");
|
|
let card = deck.pop();
|
|
cardImg.src = "./cards/" + card + ".png";
|
|
dealerSum += getValue(card);
|
|
dealerAceCount += checkAce(card);
|
|
document.getElementById("dealer-cards").append(cardImg);
|
|
}
|
|
console.log(dealerSum);
|
|
|
|
for (let i = 0; i < 2; i++) {
|
|
let cardImg = document.createElement("img");
|
|
let card = deck.pop();
|
|
cardImg.src = "./cards/" + card + ".png";
|
|
yourSum += getValue(card);
|
|
yourAceCount += checkAce(card);
|
|
document.getElementById("your-cards").append(cardImg);
|
|
}
|
|
|
|
console.log(yourSum);
|
|
document.getElementById("hit").addEventListener("click", hit);
|
|
document.getElementById("stay").addEventListener("click", stay);
|
|
|
|
}
|
|
|
|
function hit() {
|
|
if (!canHit) {
|
|
return;
|
|
}
|
|
|
|
let cardImg = document.createElement("img");
|
|
let card = deck.pop();
|
|
cardImg.src = "./cards/" + card + ".png";
|
|
yourSum += getValue(card);
|
|
yourAceCount += checkAce(card);
|
|
document.getElementById("your-cards").append(cardImg);
|
|
|
|
if (reduceAce(yourSum, yourAceCount) > 21) {
|
|
canHit = false;
|
|
}
|
|
|
|
}
|
|
|
|
function stay() {
|
|
dealerSum = reduceAce(dealerSum, dealerAceCount);
|
|
yourSum = reduceAce(yourSum, yourAceCount);
|
|
|
|
canHit = false;
|
|
document.getElementById("hidden").src = "./cards/" + hidden + ".png";
|
|
|
|
let message = "";
|
|
if (yourSum > 21) {
|
|
message = "Tu as perdu!";
|
|
}
|
|
else if (dealerSum > 21) {
|
|
message = "Tu as gagné!";
|
|
}
|
|
//both you and dealer <= 21
|
|
else if (yourSum == dealerSum) {
|
|
message = "Egalite!";
|
|
}
|
|
else if (yourSum > dealerSum) {
|
|
message = "Tu as gagné!";
|
|
}
|
|
else if (yourSum < dealerSum) {
|
|
message = "Tu as perdu!";
|
|
}
|
|
|
|
document.getElementById("dealer-sum").innerText = dealerSum;
|
|
document.getElementById("your-sum").innerText = yourSum;
|
|
document.getElementById("results").innerText = message;
|
|
}
|
|
|
|
function getValue(card) {
|
|
let data = card.split("-"); // "4-C" -> ["4", "C"]
|
|
let value = data[0];
|
|
|
|
if (isNaN(value)) { //A J Q K
|
|
if (value == "A") {
|
|
return 11;
|
|
}
|
|
return 10;
|
|
}
|
|
return parseInt(value);
|
|
}
|
|
|
|
function checkAce(card) {
|
|
if (card[0] == "A") {
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
function reduceAce(playerSum, playerAceCount) {
|
|
while (playerSum > 21 && playerAceCount > 0) {
|
|
playerSum -= 10;
|
|
playerAceCount -= 1;
|
|
}
|
|
return playerSum;
|
|
}
|
|
|
|
var refresh = window.getElementById('refresh');
|
|
refresh.addEventListener('click', location.reload(), false);
|
|
|
|
|