Skip to content

hw week 4 #7

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 66 additions & 9 deletions blackjack.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,21 @@ const blackjackDeck = getDeck();
* @constructor
* @param {string} name - The name of the player
*/
class CardPlayer {}; //TODO
class CardPlayer {
constructor(name) {
this.name = name;
this.hand = [];
}
//selects a card at random from the deck, and adds to hand array
drawCard() {
let drawRandomCard = blackjackDeck[Math.floor(Math.random() * blackjackDeck.length)];
this.hand.push(drawRandomCard);
}
};

// CREATE TWO NEW CardPlayers
const dealer; // TODO
const player; // TODO
const dealer = new CardPlayer('Dealer');
const player = new CardPlayer('Sonia');

/**
* Calculates the score of a Blackjack hand
Expand All @@ -20,8 +30,34 @@ const player; // TODO
*/
const calcPoints = (hand) => {
// CREATE FUNCTION HERE
total = 0;
acePresent = 0;
cardValue = 0;

}
hand.forEach((card) => {
if (card.displayVal !== 'Ace') {
cardValue = card.val;
} else if (card.displayVal === 'Ace' && total < 21) {
cardValue = 11;
acePresent += 1;
} else if (card.displayVal === 'Ace' && total > 21) {
cardValue = 1;
acePresent += 1;
};//display val

total += cardValue;

}); //for each card

if (acePresent = 1) {
isSoft = false;
} else if (acePresent > 1) {
isSoft = true;
};

return { total, isSoft };

}; // calc points

/**
* Determines whether the dealer should draw another card.
Expand All @@ -31,8 +67,20 @@ const calcPoints = (hand) => {
*/
const dealerShouldDraw = (dealerHand) => {
// CREATE FUNCTION HERE

pointsReturned = calcPoints(dealerHand);
totalPointsReturned = pointsReturned.total;
isSoft = pointsReturned.isSoft;

}
if (totalPointsReturned <= 16) {
drawCard = true;
} else if (totalPointsReturned >= 17) {
drawCard = false;
} else if (totalPointsReturned === 17 && isSoft == false) {
drawCard = true;
}
return drawCard;
};

/**
* Determines the winner if both player and dealer stand
Expand All @@ -43,7 +91,16 @@ const dealerShouldDraw = (dealerHand) => {
const determineWinner = (playerScore, dealerScore) => {
// CREATE FUNCTION HERE

}
if (playerScore === dealerScore) {
console.log(`Player score is ${playerScore}. Dealer score is ${dealerScore}. A tie!`);
} else if (playerScore <= 21 && playerScore > dealerScore) {
console.log(`Player score is ${playerScore}. Dealer score is ${dealerScore}. ${player.name} wins`);
} else if (dealerScore <= 21 && dealerScore > playerScore) {
console.log(`Player score is ${playerScore}. Dealer score is ${dealerScore}. ${dealer.name} wins`);
} else {
console.log("I am not sure who won. Look for errors");
}
};

/**
* Creates user prompt to ask if they'd like to draw a card
Expand All @@ -66,14 +123,14 @@ const showHand = (player) => {
/**
* Runs Blackjack Game
*/
const startGame = function() {
const startGame = function () {
player.drawCard();
dealer.drawCard();
player.drawCard();
dealer.drawCard();

let playerScore = calcPoints(player.hand).total;
showHand(player);
showHand(player);
while (playerScore < 21 && confirm(getMessage(playerScore, dealer.hand[0]))) {
player.drawCard();
playerScore = calcPoints(player.hand).total;
Expand All @@ -97,4 +154,4 @@ const startGame = function() {

return determineWinner(playerScore, dealerScore);
}
// console.log(startGame());
console.log(startGame());
6 changes: 5 additions & 1 deletion cardsWorthTen.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,11 @@ const cards = [
* @param {array} cards
* @return {string} displayVal
*/
const cardsWorthTen = cards => {};
const cardsWorthTen = cards => {
const filterResult = cards.filter((card) => card.val === 10 );
const newFilterResult = filterResult.map(card => card.displayVal);
return newFilterResult.join(', ');
};

console.log(cardsWorthTen(cards));
// should return/log "10, Jack, Queen, King"
81 changes: 74 additions & 7 deletions createCardDeck.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,90 @@
*/
const getDeck = () => {

}
const cardSuit = ["hearts", "diamonds", "spades", "clubs"];
const faceCards = ["jack", "queen", "king", "ace"];
const completeDeck = [];

for (let i = 0; i < cardSuit.length; i++) {
let suit = cardSuit[i];

let numberOfCardsInSuit = 1;
let cardNumber = 2;
let faceCardNumber = 0;

while (numberOfCardsInSuit < 10) {

if (numberOfCardsInSuit === 10) {
continue;
}

let deck = {
val: cardNumber,
displayVal: cardNumber.toString(),
suit: suit
}

completeDeck.push(deck);

cardNumber +=1;
numberOfCardsInSuit +=1;

} // number lt 10

while ( numberOfCardsInSuit >= 10 && numberOfCardsInSuit <= 12 ) {

if (numberOfCardsInSuit === 13) {
break;
}

let deck = {
val: 10,
displayVal: faceCards[faceCardNumber],
suit: suit,
}

completeDeck.push(deck);

faceCardNumber +=1;
numberOfCardsInSuit +=1;

} //number between 10 and 12

while ( numberOfCardsInSuit == 13 ) {

let deck = {
val: 11,
displayVal: faceCards[faceCardNumber],
suit: suit,
}

completeDeck.push(deck);

numberOfCardsInSuit +=1;

} //while 13

} //for loop

return completeDeck;
} // function call




// CHECKS
const deck = getDeck();
console.log(`Deck length equals 52? ${deck.length === 52}`);
//console.log(`Deck length equals 52? ${deck.length === 52}`);

const randomCard = deck[Math.floor(Math.random() * 52)];

const cardHasVal = randomCard && randomCard.val && typeof randomCard.val === 'number';
console.log(`Random card has val? ${cardHasVal}`);
//console.log(`Random card has val? ${cardHasVal}`);

const cardHasSuit = randomCard && randomCard.suit && typeof randomCard.suit === 'string';
console.log(`Random card has suit? ${cardHasSuit}`);
//console.log(`Random card has suit? ${cardHasSuit}`);

const cardHasDisplayVal = randomCard &&
randomCard.displayVal &&
typeof randomCard.displayVal === 'string';
console.log(`Random card has display value? ${cardHasDisplayVal}`);
randomCard.displayVal &&
typeof randomCard.displayVal === 'string';
//console.log(`Random card has display value? ${cardHasDisplayVal}`);
19 changes: 18 additions & 1 deletion foodIsCooked.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,25 @@
const foodIsCooked = function(kind, internalTemp, doneness) {
// Write function HERE

}
if ( kind === 'chicken') {
return internalTemp >= 165;

} else if ( kind === 'beef' ) {

if (doneness === 'rare') {
return internalTemp >= 125;
}
else if (doneness === 'medium') {
return internalTemp >= 135;
}
else if (doneness === 'well') {
return internalTemp >= 150;
}
} else {
return error
}

}


// Test function
Expand Down
8 changes: 6 additions & 2 deletions logCardDeck.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const cards = [
const cards = [
{ val: 2, displayVal: '2', suit: 'hearts' },
{ val: 3, displayVal: '3', suit: 'hearts' },
{ val: 4, displayVal: '4', suit: 'hearts' },
Expand Down Expand Up @@ -58,4 +58,8 @@ const cards = [
*
* @param {array} deck A deck of cards
*/
const logCardDeck = deck => {};
const logCardDeck = deck => {
deck.forEach((card) => {
console.log(card.val, card.displayVal, card.suit);
});
};