diff --git a/game-logic.js b/game-logic.js index ec4ef27baf096a098e5f4968d822eaa889ba8521..e3386b3d7d1e45c19cb172d5a52892e14064aa8e 100644 --- a/game-logic.js +++ b/game-logic.js @@ -66,6 +66,32 @@ function handValue(totalScore, numAces){ return finalScore; } +function hitOrStay(){ + const threshold = 12 + Math.floor(Math.random() * 6); + const currentValue = handValue(playerScore, playerNumAces); + + if (currentValue > threshold){ + // stay + return false; + } else { + // hit + return true; + } +} + +function doesDealerHit(){ + const threshold = 17; + const currentValue = handValue(dealerScore, dealerNumAces); + + if (currentValue >= threshold){ + // stay + return false; + } else { + // hit + return true; + } +} + function newGame(){ // player places a bet // we need to check that the bet is valid (> 0 and < total wallet) @@ -90,21 +116,85 @@ function newGame(){ return true; } // otherwise - console.log("Game still on") // LOOP // player decides if hitting another card or sit - // we check the cards, if 21 automatic WINS, if more than 21 is busted (LOST) - // LOOP ENDS if we get 21 or more than 21 OR player sits + while (hitOrStay()){ + let newCard = dealCard(); + console.log("You got a new card with value " + newCard); + if (newCard == 11){ + playerNumAces++; + } + playerScore += newCard; + + let currentScore = handValue(playerScore, playerNumAces); + console.log("Your current score is " + currentScore); + // we check the cards, if 21 automatic WINS, if more than 21 is busted (LOST) + // LOOP ENDS if we get 21 or more than 21 OR player sits + + if (currentScore >= 21){ + if (currentScore == 21){ + // blackjack + console.log("You win!"); + playerWallet += bet * 2; + + return true; + } else { + // busted + console.log("You lose!"); + return false; + } + } + + } + + console.log("Game still on") // we show the dealer cards + console.log("The dealer hidden card is " + hiddenCard); + console.log(`The dealer has a score of ${handValue(dealerScore, dealerNumAces)}`); // LOOP // we check if dealer has 17 or more, if not hit a new card - // LOOP ENDS if the dealer has 17 or more + while(doesDealerHit()){ + let newCard = dealCard(); + console.log("The dealer got a new card with value " + newCard); + if (newCard == 11){ + dealerNumAces++; + } + dealerScore += newCard; + + let currentScore = handValue(dealerScore, dealerNumAces); + console.log("The dealer current score is " + currentScore); + + if (currentScore > 21){ + // busted + console.log("You win!"); + + playerWallet += bet * 2; + + return true; + } + } // dealer is not busted: either player or dealer win (based on their score) // OR dealer got busted and player WIN + + let playerFinalScore = handValue(playerScore, playerNumAces); + console.log("Your final score is: " + playerFinalScore); + let dealerFinalScore = handValue(dealerScore, dealerNumAces); + console.log("The dealer final score is: "+ dealerFinalScore); + + if (playerFinalScore > dealerFinalScore){ + console.log("You win!"); + + playerWallet += bet * 2; + + return true; + } else { + console.log("You lose!"); + return false; + } } newGame(); \ No newline at end of file