I am trying to create a Blackjack game and I am stuck at the part where I am dealing to the player. My function dealHands
tallies the points like I want but it will not display the Value
and Suit
that I need. I feel like I am missing something but not sure what. Any help would be appreciated. So far I have tried to convert player[x].Hand.push(card)
to a string but that just prints obj undefined and it also doesn't tally the score since it turns the property into a string.
var suits = ["Spades","Hearts","Diamonds","Clubs"];
var values = ["2","3","4","5","6","7","8","9","10","J","Q","K","A"];
var deck = new Array();
//creates players
var players = new Array();
function createPlayers(num) {
players = new Array();
for (var i = 1; i <= num; i++) {
var hand = new Array();
var player = { Name: 'Player ' + i, ID: i, points: 0, Hand: hand };
players.push(player);
}
}
//Creates deck
function createDeck(x) {
deck = new Array();
for (var i = 0; i < values.length; i++) {
for (var x = 0; x < suits.length; x++) {
var weight = parseInt(values[i]);
if (values[i] == "J" || values[i] == "Q" || values[i] == "K") {
weight = 10;
} if (values[i] == "A") {
weight = 11;
}
var card = { Value: values[i], Suit: suits[x], Weight: weight };
deck.push(card);
}
}
}
//shuffles
function shuffle() {
for (var i = 0; i < 1000; i++) {
var location1 = Math.floor((Math.random() * deck.length));
var location2 = Math.floor((Math.random() * deck.length));
var tmp = deck[location1];
deck[location1] = deck[location2];
deck[location2] = tmp;
}
}
//starts the game
function startblackjack(num){
currentPlayer = 0;
createDeck();
shuffle();
createPlayers(num);
dealHands()
console.log(players)
console.log(deck)
}
//Deals
function dealHands(){
for(var i =0; i<2;i++){
for( var x = 0; x<players.length; x++){
var card = deck.pop();
players[x].Hand.push(card);
updatePoints();
}
}
}
//updatePoints
function updatePoints(){
for (var i = 0; i<players.length;i++){
getPoints(i);
}
}
//getspoints
function getPoints(player){
var points = 0;
for(var i = 0; i < players[player].Hand.length; i++) {
points += players[player].Hand[i].Weight;
}players[player].points = points;
return points;
}
startblackjack(1)