JSFiddle - React, Tailwind, and code Playground
by willbuck
JavaScript
// Card Constructor
var Card = function(suit, number) {
var thisCard = {};
thisCard.getSuit = function() {
return suit;
};
thisCard.getNumber = function() {
return number;
};
thisCard.getValue = function() {
if(number === 1) {
return 11; // an Ace
} else if (number > 9) {
return 10; // face cards
} else {
return number;
}
};
return thisCard;
};
// UTILITIES
var randomInt = function(max) {
return Math.ceil(Math.random()*max);
};
var deal = function() {
var suit = randomInt(4);
var number = randomInt(13);
return Card(suit, number);
};
// HAND CONSTRUCTOR
var Hand = function() {
var cards = [];
cards.push(deal());
cards.push(deal());
var thisHand = {};
thisHand.getHand = function() {
return cards;
};
thisHand.score = function() {
var sum = 0, numAces = 0, i = 0;
console.log("Scoring Hand");
for(card in cards) {
if(card.getValue() === 11) {
numAces++;
}
sum += card.getValue();
}
for(i; i<numAces; i++) {
if(sum >21) {
sum -= 10;
}
}
return sum;
};
thisHand.printHand = function() {
var handString = '';
console.log("Printing Hand");
for(card in cards) {
handString += card.getNumber() + ' of suit ' + card.getSuit();
}
return handString;
};
thisHand.hitMe = function() {
cards.push(deal());
};
return thisHand;
};
var playAsDealer = function() {
var myHand = Hand();
while(myHand.score() < 17) {
myHand.hitMe();
}
return myHand;
};
var playAsUser = function() {
var myHand = Hand();
console.log("My hand contains: " + myHand.getHand());
// Use confirm box to ask for hitting
var decision =...