diff --git a/script.js b/script.js
index bbe8a293..fda7e3d4 100644
--- a/script.js
+++ b/script.js
@@ -1,4 +1,166 @@
-var main = function (input) {
- var myOutputValue = 'hello world';
- return myOutputValue;
-};
+var cardDeck = [];
+var playerCards = [];
+var compCards = [];
+var gameStep = "start";
+var win = 0;
+var sumOfPlayerCards = 0;
+var sumOfCompCards = 0;
+
+function createDeck() {
+ var suits = ["hearts", "diamonds", "clubs", "spades"];
+ var nums = [
+ "ace",
+ "two",
+ "three",
+ "four",
+ "five",
+ "six",
+ "seven",
+ "eight",
+ "nine",
+ "ten",
+ "jack",
+ "queen",
+ "king",
+ ];
+
+ for (var i = 0; i < nums.length; i++) {
+ for (var j = 0; j < suits.length; j++) {
+ var card = {
+ name: nums[i] + " " + suits[j],
+ suit: suits[j],
+ num: i + 1,
+ };
+
+ cardDeck.push(card);
+ }
+ }
+}
+
+function getRandomIndex() {
+ return Math.floor(Math.random() * 52);
+}
+
+function shuffleCards() {
+ var currentIndex = 0;
+ while (currentIndex < cardDeck.length) {
+ var randomIndex = getRandomIndex(cardDeck.length);
+ var randomCard = cardDeck[randomIndex];
+ var currentCard = cardDeck[currentIndex];
+ cardDeck[currentIndex] = randomCard;
+ cardDeck[randomIndex] = currentCard;
+ currentIndex = currentIndex + 1;
+ }
+ return cardDeck;
+}
+
+function dealCards() {
+ playerCards = [cardDeck.pop(), cardDeck.pop()];
+ compCards = [cardDeck.pop(), cardDeck.pop()];
+}
+
+function sumCards(input) {
+ var sum = 0;
+ var hasAce = false;
+
+ for (var i = 0; i < input.length; i++) {
+ var cardValue = input[i].num;
+
+ if (cardValue > 10) {
+ sum += 10;
+ } else if (cardValue == 1) {
+ hasAce = true;
+ sum += 11; // Assume Ace is worth 11 initially
+ } else {
+ sum += cardValue;
+ }
+ }
+
+ // If the sum is greater than 21 and there's an Ace, adjust the value of Ace to 1
+ while (sum > 21 && hasAce) {
+ sum -= 10;
+ hasAce = false; // Ensures we don't keep subtracting for multiple Aces
+ }
+
+ return sum;
+}
+
+function checkForBlackJack() {
+ sumOfPlayerCards = sumCards(playerCards);
+
+ if (
+ (playerCards[0].num == 1 && playerCards[1].num >= 10) ||
+ (playerCards[1].num == 1 && playerCards[0].num >= 10)
+ ) {
+ return "Blackjack! Player wins.";
+ } else if (
+ (compCards[0].num == 1 && compCards[1].num >= 10) ||
+ (compCards[1].num == 1 && compCards[0].num >= 10)
+ ) {
+ return "Blackjack! Computer wins.";
+ } else {
+ return "Would you like to hit or stand?";
+ }
+}
+
+function playerHit() {
+ playerCards.push(cardDeck.pop());
+ console.log(playerCards);
+}
+
+function playerStand() {
+ console.log(compCards);
+ sumOfCompCards = sumCards(compCards);
+ // console.log(sumOfCompCards);
+ while (sumOfCompCards <= 16) {
+ // console.log(cardDeck);
+ compCards.push(cardDeck.pop());
+ sumOfCompCards = sumCards(compCards);
+ }
+}
+
+function checkWhoWins() {
+ sumOfCompCards = sumCards(compCards);
+ sumOfPlayerCards = sumCards(playerCards);
+ if (sumOfPlayerCards > 21 && sumOfCompCards > 21) {
+ return "Both over 21. Type 'restart' to play again.";
+ } else if (sumOfPlayerCards > 21) {
+ return "Over 21, you lose! Computer wins! Type 'restart' to play again.";
+ } else if (sumOfCompCards > 21) {
+ return "Computer over 21, you win! Type 'restart' to play again.";
+ } else if (sumOfPlayerCards == sumOfCompCards) {
+ return "It's a tie. Type 'restart' to play again.";
+ } else if (sumOfPlayerCards > sumOfCompCards) {
+ return "You win! Type 'restart' to play again.";
+ } else if (sumOfCompCards > sumOfPlayerCards) {
+ return "Computer wins! Type 'restart' to play again.";
+ }
+}
+
+function main(input) {
+ if (gameStep == "start" || input == "restart") {
+ createDeck();
+ shuffleCards();
+ dealCards();
+ startingResults = checkForBlackJack();
+ gameStep = "hit or stand";
+ // console.log(gameStep);
+ return `Player cards: ${playerCards[0].name}, ${playerCards[1].name}
Computer cards: ${compCards[0].name}, ${compCards[1].name}
${startingResults}`;
+ } else if (input == "hit") {
+ playerHit();
+ return `Player cards: ${playerCards
+ .map((card) => card.name)
+ .join(", ")}
Computer cards: ${compCards
+ .map((card) => card.name)
+ .join(", ")} `;
+ // map creates an array of card.name join joins them into a string separated by ,
+ } else if (input == "stand") {
+ playerStand();
+ var results = checkWhoWins();
+ return `Player cards: ${playerCards
+ .map((card) => card.name)
+ .join(", ")}
Computer cards: ${compCards
+ .map((card) => card.name)
+ .join(", ")}
Results: ${results}`;
+ }
+}