From 2510a22e0b5568c782a1190e4e91b22cb7ff20d0 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Wed, 8 Dec 2021 15:06:13 +0800 Subject: [PATCH 01/54] initial push --- index.html | 11 +++++++++++ script.js | 0 styles.css | 9 +++++++++ 3 files changed, 20 insertions(+) create mode 100644 index.html create mode 100644 script.js create mode 100644 styles.css diff --git a/index.html b/index.html new file mode 100644 index 00000000..62152c6f --- /dev/null +++ b/index.html @@ -0,0 +1,11 @@ + + + + + + + + Video Poker! + + + diff --git a/script.js b/script.js new file mode 100644 index 00000000..e69de29b diff --git a/styles.css b/styles.css new file mode 100644 index 00000000..bcfa3252 --- /dev/null +++ b/styles.css @@ -0,0 +1,9 @@ +*, +*::after, +*::before { + box-sizing: border-box; +} + +body { + background-color: lightgreen; +} From 6493c791bc8bc0c29a51660df61084e10ece84c4 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Fri, 10 Dec 2021 15:51:17 +0800 Subject: [PATCH 02/54] add CSS and JS functionality --- index.html | 4 +- script.js | 169 +++++++++++++++++++++++++++++++++++++++++++++++++++++ styles.css | 21 +++++++ 3 files changed, 193 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index 62152c6f..94d04a88 100644 --- a/index.html +++ b/index.html @@ -7,5 +7,7 @@ Video Poker! - + + + diff --git a/script.js b/script.js index e69de29b..325bde16 100644 --- a/script.js +++ b/script.js @@ -0,0 +1,169 @@ +/** + * Global variables + */ +let overallContainer; // contains all assets +let gameContainer; +let output; +let input; + +const userPoints = 100; +let deck = []; + +// TODO +// clicks a button to deal cards DOING +// user selects which card to keep +// game replaces the unselected cards, calculateds the handscore, and update total points. +// function that adds card in a loop and adds a click element to change cards. + +const dealCardBtn = () => { + // button is placed in overall container FYI + const btnEl = document.createElement('button'); + btnEl.innerText = 'Deal Cards'; + btnEl.classList.add('btn-deal-cards', 'btn'); + overallContainer.appendChild(btnEl); +}; + +const initGame = () => { + // create overall container + overallContainer = document.createElement('div'); + overallContainer.classList.add('overall-container'); + document.body.appendChild(overallContainer); + + // create card combination container + const cardComboContainer = document.createElement('div'); + cardComboContainer.classList.add('card-combintaion-container', 'section'); + overallContainer.appendChild(cardComboContainer); + + // create card display container + const gameContainer = document.createElement('div'); + gameContainer.classList.add('game-container', 'section'); + overallContainer.appendChild(gameContainer); + + // create output container + const outputContainer = document.createElement('div'); + outputContainer.classList.add('output-container', 'section'); + overallContainer.appendChild(outputContainer); + + // create input container, bet input and submit // + const inputContainer = document.createElement('div'); + inputContainer.classList.add('input-container'); + overallContainer.appendChild(inputContainer); + // bet input slider + input = document.createElement('input'); + input.type = 'range'; + input.name = 'quantity'; + input.classList.add('input-bet'); + input.setAttribute('min', 0); + input.setAttribute('max', 100); + inputContainer.appendChild(input); + + // bet submit button + // const inputBtn = document.createElement('button'); + // inputBtn.classList.add('input-btn'); + // inputBtn.innerText = 'Place Bet'; + // inputContainer.appendChild(inputBtn); + + output = document.createElement('output'); + output.classList.add('output'); + output.setAttribute('for', 'quantity'); + overallContainer.appendChild(output); + + // create deal cards button + dealCardBtn(); +}; +initGame(); +/** + * Function that sums returns the sum of the playing hand + * @param {array} cardHand the user's current playing hand + * @returns {number} sum of scores from the user's playing hand + */ +const calcHandScore = (cardHand) => { + return score; +}; + +////////////////// +// Slider Input // +////////////////// +const rangeInput = document.querySelector('.input-bet'); +const rangeOutput = document.querySelector('.output'); + +const outputDefaultState = () => { + rangeOutput.value = rangeInput.value; +}; +rangeInput.addEventListener('input', function () { + rangeOutput.value = this.value; +}); +document.addEventListener('DOMContentLoaded', function () { + outputDefaultState(); +}); + +////////////////////// +// helper functions // +////////////////////// +/** + * Function that makes a standard deck of cards + */ +const makeDeck = () => { + // 4 suits - diamond, clubs, heart, spades + // 13 cards per suit + // create a loop that generates 52 cards of 4 suits + let newDeck = []; + const suits = ['diamonds', 'clubs', 'hearts', 'spades']; + for (let i = 0; i < suits.length; i += 1) { + for (let j = 1; j < 14; j += 1) { + let cardSuits = suits[i]; + let suitColor; + let cardName = j; + + if (j === 1) { + cardName = 'ace'; + } else if (j === 11) { + cardName = 'jack'; + } else if (j === 12) { + cardName = 'queen'; + } else if (j === 13) { + cardName = 'king'; + } + if (cardSuits === 'diamonds' || cardSuits === 'hearts') { + suitColor = 'red'; + } else { + suitColor = 'black'; + } + let currentCard = { + name: cardName, + suit: cardSuits, + rank: j, + color: suitColor, + }; + newDeck.push(currentCard); + } + } + return newDeck; +}; + +/** + * Function that shuffles the deck + * @param {array} deck array of deck + */ +const shuffleDeck = (cards) => { + for (let i = 0; i < cards.length; i += 1) { + let randomIndex = randomNumberGenerator(cards.length); + let currentCard = cards[i]; + let randomCard = cards[randomIndex]; + cards[i] = randomCard; + cards[randomIndex] = currentCard; + } + return cards; +}; + +/** + * Function that gives a random number depending on deck size + * @param {number} deckLength length of deck + * @returns a random number from 0 - 51 + */ +const randomNumberGenerator = (deckLength) => { + return Math.floor(Math.random() * deckLength); +}; + +// +deck = shuffleDeck(makeDeck()); diff --git a/styles.css b/styles.css index bcfa3252..ea184e5e 100644 --- a/styles.css +++ b/styles.css @@ -7,3 +7,24 @@ body { background-color: lightgreen; } + +.overall-container { + max-width: 600px; + margin: 20px auto; + padding: 10px; + border: 3px solid black; +} + +.section { + padding: 10px; + margin: 20px auto; + padding: 10px; + border: 1px solid black; +} + +.btn { + display: flex; + margin: auto; + /* justify-content: center; + align-items: center; */ +} From 121153361ea43ecd448b87c12d6bbef30cde5e75 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Fri, 10 Dec 2021 20:44:56 +0800 Subject: [PATCH 03/54] add betting slider --- script.js | 11 +++-------- styles.css | 4 ++++ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/script.js b/script.js index 325bde16..ab9ad935 100644 --- a/script.js +++ b/script.js @@ -53,16 +53,11 @@ const initGame = () => { input.type = 'range'; input.name = 'quantity'; input.classList.add('input-bet'); - input.setAttribute('min', 0); - input.setAttribute('max', 100); + input.min = 0; + input.max = 100; inputContainer.appendChild(input); - // bet submit button - // const inputBtn = document.createElement('button'); - // inputBtn.classList.add('input-btn'); - // inputBtn.innerText = 'Place Bet'; - // inputContainer.appendChild(inputBtn); - + // output output = document.createElement('output'); output.classList.add('output'); output.setAttribute('for', 'quantity'); diff --git a/styles.css b/styles.css index ea184e5e..ce824997 100644 --- a/styles.css +++ b/styles.css @@ -28,3 +28,7 @@ body { /* justify-content: center; align-items: center; */ } + +.input-container { + display: inline-block; +} From 4b860845ec8b1c6f8b6bc970404b4343bec6605d Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Fri, 10 Dec 2021 21:02:26 +0800 Subject: [PATCH 04/54] add init.js --- index.html | 1 + init.js | 43 +++++++++++++++++++++++++++++++++++++++++++ script.js | 46 +--------------------------------------------- 3 files changed, 45 insertions(+), 45 deletions(-) create mode 100644 init.js diff --git a/index.html b/index.html index 94d04a88..dd8379b7 100644 --- a/index.html +++ b/index.html @@ -8,6 +8,7 @@ Video Poker! + diff --git a/init.js b/init.js new file mode 100644 index 00000000..c4d19b39 --- /dev/null +++ b/init.js @@ -0,0 +1,43 @@ +const initGame = () => { + // create overall container + overallContainer = document.createElement('div'); + overallContainer.classList.add('overall-container'); + document.body.appendChild(overallContainer); + + // create card combination container + const cardComboContainer = document.createElement('div'); + cardComboContainer.classList.add('card-combintaion-container', 'section'); + overallContainer.appendChild(cardComboContainer); + + // create card display container + const gameContainer = document.createElement('div'); + gameContainer.classList.add('game-container', 'section'); + overallContainer.appendChild(gameContainer); + + // create output container + const outputContainer = document.createElement('div'); + outputContainer.classList.add('output-container', 'section'); + overallContainer.appendChild(outputContainer); + + // create input container, bet input and submit // + const inputContainer = document.createElement('div'); + inputContainer.classList.add('input-container'); + overallContainer.appendChild(inputContainer); + // bet input slider + input = document.createElement('input'); + input.type = 'range'; + input.name = 'quantity'; + input.classList.add('input-bet'); + input.min = 0; + input.max = 100; + inputContainer.appendChild(input); + + // output + output = document.createElement('output'); + output.classList.add('output'); + output.setAttribute('for', 'quantity'); + overallContainer.appendChild(output); + + // create deal cards button + dealCardBtn(); +}; diff --git a/script.js b/script.js index ab9ad935..fcfebcf1 100644 --- a/script.js +++ b/script.js @@ -14,58 +14,14 @@ let deck = []; // user selects which card to keep // game replaces the unselected cards, calculateds the handscore, and update total points. // function that adds card in a loop and adds a click element to change cards. - const dealCardBtn = () => { - // button is placed in overall container FYI + // button is placed in overall container only FYI const btnEl = document.createElement('button'); btnEl.innerText = 'Deal Cards'; btnEl.classList.add('btn-deal-cards', 'btn'); overallContainer.appendChild(btnEl); }; -const initGame = () => { - // create overall container - overallContainer = document.createElement('div'); - overallContainer.classList.add('overall-container'); - document.body.appendChild(overallContainer); - - // create card combination container - const cardComboContainer = document.createElement('div'); - cardComboContainer.classList.add('card-combintaion-container', 'section'); - overallContainer.appendChild(cardComboContainer); - - // create card display container - const gameContainer = document.createElement('div'); - gameContainer.classList.add('game-container', 'section'); - overallContainer.appendChild(gameContainer); - - // create output container - const outputContainer = document.createElement('div'); - outputContainer.classList.add('output-container', 'section'); - overallContainer.appendChild(outputContainer); - - // create input container, bet input and submit // - const inputContainer = document.createElement('div'); - inputContainer.classList.add('input-container'); - overallContainer.appendChild(inputContainer); - // bet input slider - input = document.createElement('input'); - input.type = 'range'; - input.name = 'quantity'; - input.classList.add('input-bet'); - input.min = 0; - input.max = 100; - inputContainer.appendChild(input); - - // output - output = document.createElement('output'); - output.classList.add('output'); - output.setAttribute('for', 'quantity'); - overallContainer.appendChild(output); - - // create deal cards button - dealCardBtn(); -}; initGame(); /** * Function that sums returns the sum of the playing hand From a50198c8d7a886f50ccd597a8fe6d328c84f2540 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Fri, 10 Dec 2021 21:10:59 +0800 Subject: [PATCH 05/54] update jsdoc --- script.js | 62 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/script.js b/script.js index fcfebcf1..b1ea1a6a 100644 --- a/script.js +++ b/script.js @@ -5,24 +5,17 @@ let overallContainer; // contains all assets let gameContainer; let output; let input; +let betAmount = 0; const userPoints = 100; let deck = []; // TODO -// clicks a button to deal cards DOING -// user selects which card to keep +// clicks a button to deal cards +// user selects which card to keep DOING // game replaces the unselected cards, calculateds the handscore, and update total points. // function that adds card in a loop and adds a click element to change cards. -const dealCardBtn = () => { - // button is placed in overall container only FYI - const btnEl = document.createElement('button'); - btnEl.innerText = 'Deal Cards'; - btnEl.classList.add('btn-deal-cards', 'btn'); - overallContainer.appendChild(btnEl); -}; -initGame(); /** * Function that sums returns the sum of the playing hand * @param {array} cardHand the user's current playing hand @@ -32,25 +25,10 @@ const calcHandScore = (cardHand) => { return score; }; -////////////////// -// Slider Input // -////////////////// -const rangeInput = document.querySelector('.input-bet'); -const rangeOutput = document.querySelector('.output'); - -const outputDefaultState = () => { - rangeOutput.value = rangeInput.value; -}; -rangeInput.addEventListener('input', function () { - rangeOutput.value = this.value; -}); -document.addEventListener('DOMContentLoaded', function () { - outputDefaultState(); -}); - ////////////////////// // helper functions // ////////////////////// + /** * Function that makes a standard deck of cards */ @@ -115,6 +93,34 @@ const shuffleDeck = (cards) => { const randomNumberGenerator = (deckLength) => { return Math.floor(Math.random() * deckLength); }; +/** + * Function to create a button to deal shuffled cards + */ +const dealCardBtn = () => { + // button is placed in overall container only FYI + const btnEl = document.createElement('button'); + btnEl.innerText = 'Deal Cards'; + btnEl.classList.add('btn-deal-cards', 'btn'); + overallContainer.appendChild(btnEl); + btnEl.addEventListener('click', () => { + deck = shuffleDeck(makeDeck()); + }); +}; + +initGame(); -// -deck = shuffleDeck(makeDeck()); +/** + * Variables that make the betting slider function + */ +const rangeInput = document.querySelector('.input-bet'); +const rangeOutput = document.querySelector('.output'); + +const outputDefaultState = () => { + rangeOutput.value = rangeInput.value; +}; +rangeInput.addEventListener('input', function () { + rangeOutput.value = this.value; +}); +document.addEventListener('DOMContentLoaded', function () { + outputDefaultState(); +}); From 944bae69e584fdb934448818de5ba9c0030d270e Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Sun, 12 Dec 2021 22:42:33 +0800 Subject: [PATCH 06/54] add card styles --- styles.css | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/styles.css b/styles.css index ce824997..d8ea1a94 100644 --- a/styles.css +++ b/styles.css @@ -32,3 +32,42 @@ body { .input-container { display: inline-block; } + +.card { + display: inline-block; + margin: 10px; + padding: 10px; + background-color: white; + border-radius: 15px; + border: 1px solid black; + text-align: center; + width: 50px; +} + +.clicked { + border: 3px solid orange; +} + +.suit { + margin: 5px; + font-size: 20px; + align-items: center; +} + +.name { + margin: 5px; + font-size: 15px; + font-weight: bold; +} + +.red { + color: red; +} + +.black { + color: black; +} + +.card:hover { + border: 3px solid orange; +} From 092652feb2c858af8c8df2c87431d1950d46518d Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Sun, 12 Dec 2021 22:43:55 +0800 Subject: [PATCH 07/54] moved dealCard() from script.js --- init.js | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/init.js b/init.js index c4d19b39..17ad7873 100644 --- a/init.js +++ b/init.js @@ -5,22 +5,26 @@ const initGame = () => { document.body.appendChild(overallContainer); // create card combination container - const cardComboContainer = document.createElement('div'); + cardComboContainer = document.createElement('div'); + cardComboContainer.innerText = + 'Container that shows all combination of cards.'; cardComboContainer.classList.add('card-combintaion-container', 'section'); overallContainer.appendChild(cardComboContainer); // create card display container - const gameContainer = document.createElement('div'); + gameContainer = document.createElement('div'); + gameContainer.innerText = 'Container that shows cards dealt to player.'; gameContainer.classList.add('game-container', 'section'); overallContainer.appendChild(gameContainer); // create output container - const outputContainer = document.createElement('div'); + outputContainer = document.createElement('div'); + outputContainer.innerText = 'Container that gives instructions to player.'; outputContainer.classList.add('output-container', 'section'); overallContainer.appendChild(outputContainer); // create input container, bet input and submit // - const inputContainer = document.createElement('div'); + inputContainer = document.createElement('div'); inputContainer.classList.add('input-container'); overallContainer.appendChild(inputContainer); // bet input slider @@ -38,6 +42,23 @@ const initGame = () => { output.setAttribute('for', 'quantity'); overallContainer.appendChild(output); - // create deal cards button + /** + * Variables & functions that make the betting slider function + */ + const rangeInput = document.querySelector('.input-bet'); + const rangeOutput = document.querySelector('.output'); + + const outputDefaultState = () => { + rangeOutput.value = rangeInput.value; + }; + rangeInput.addEventListener('input', function () { + rangeOutput.value = this.value; + }); + document.addEventListener('DOMContentLoaded', function () { + outputDefaultState(); + }); + + // creates deal cards button dealCardBtn(); }; +initGame(); From 9db142b9bde5d36b143b203fb4ea7e26197acc76 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Sun, 12 Dec 2021 22:44:12 +0800 Subject: [PATCH 08/54] add script.js in src --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index dd8379b7..53b89c86 100644 --- a/index.html +++ b/index.html @@ -8,7 +8,7 @@ Video Poker! - + From 6c1fd253e25222a196509a177f4fa4acf5a435b5 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Sun, 12 Dec 2021 22:54:59 +0800 Subject: [PATCH 09/54] add makeCard() --- script.js | 83 ++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 61 insertions(+), 22 deletions(-) diff --git a/script.js b/script.js index b1ea1a6a..a3ffffe5 100644 --- a/script.js +++ b/script.js @@ -3,9 +3,15 @@ */ let overallContainer; // contains all assets let gameContainer; +let cardComboContainer; +let outputContainer; +let inputContainer; +let savedCardsArray = []; + let output; let input; let betAmount = 0; +const userHand = []; const userPoints = 100; let deck = []; @@ -17,12 +23,12 @@ let deck = []; // function that adds card in a loop and adds a click element to change cards. /** - * Function that sums returns the sum of the playing hand + * function that sums returns the sum of the playing hand * @param {array} cardHand the user's current playing hand * @returns {number} sum of scores from the user's playing hand */ const calcHandScore = (cardHand) => { - return score; + return 1; }; ////////////////////// @@ -30,7 +36,7 @@ const calcHandScore = (cardHand) => { ////////////////////// /** - * Function that makes a standard deck of cards + * function that makes a standard deck of cards */ const makeDeck = () => { // 4 suits - diamond, clubs, heart, spades @@ -39,19 +45,27 @@ const makeDeck = () => { let newDeck = []; const suits = ['diamonds', 'clubs', 'hearts', 'spades']; for (let i = 0; i < suits.length; i += 1) { + const suitSymbol = ['♦', '♣', '♥', '♠']; + let currentSuitSymbol = suitSymbol[i]; + for (let j = 1; j < 14; j += 1) { let cardSuits = suits[i]; let suitColor; let cardName = j; + let currentDisplayName = j; if (j === 1) { cardName = 'ace'; + currentDisplayName = 'A'; } else if (j === 11) { cardName = 'jack'; + currentDisplayName = 'J'; } else if (j === 12) { cardName = 'queen'; + currentDisplayName = 'Q'; } else if (j === 13) { cardName = 'king'; + currentDisplayName = 'K'; } if (cardSuits === 'diamonds' || cardSuits === 'hearts') { suitColor = 'red'; @@ -63,6 +77,8 @@ const makeDeck = () => { suit: cardSuits, rank: j, color: suitColor, + suitSymbol: currentSuitSymbol, + displayName: currentDisplayName, }; newDeck.push(currentCard); } @@ -86,15 +102,46 @@ const shuffleDeck = (cards) => { }; /** - * Function that gives a random number depending on deck size + * function that gives a random number depending on deck size * @param {number} deckLength length of deck * @returns a random number from 0 - 51 */ const randomNumberGenerator = (deckLength) => { return Math.floor(Math.random() * deckLength); }; -/** - * Function to create a button to deal shuffled cards + +/** DOING + * function that takes a card object and returns a div to display card + * adds a function that saves the card to an array when clicked + * @param {object} cardInfo contains info of the attributes of 1 card + * @returns a card div containing the attributes of the card + */ +const makeCard = (cardInfo) => { + const card = document.createElement('div'); + const cardName = document.createElement('div'); + const cardSuit = document.createElement('div'); + + card.classList.add('card'); + cardName.classList.add('name', cardInfo.color); + cardSuit.classList.add('suit', cardInfo.color); + + cardName.innerHTML = cardInfo.displayName; + cardSuit.innerHTML = cardInfo.suitSymbol; + + card.addEventListener('click', () => { + card.classList.toggle('clicked'); + savedCardsArray.push(cardInfo); + }); + + card.appendChild(cardName); + card.appendChild(cardSuit); + + return card; +}; + +/** DOING + * function to create a button to deal shuffled cards + * also displays cards in gameContainer */ const dealCardBtn = () => { // button is placed in overall container only FYI @@ -103,24 +150,16 @@ const dealCardBtn = () => { btnEl.classList.add('btn-deal-cards', 'btn'); overallContainer.appendChild(btnEl); btnEl.addEventListener('click', () => { - deck = shuffleDeck(makeDeck()); + for (let i = 0; i < 5; i += 1) { + userHand.push(deck.pop()); + console.log(`${userHand[i].name} of ${userHand[i].suit} dealt`); + const cardEl = makeCard(userHand[i]); + gameContainer.appendChild(cardEl); + } }); }; -initGame(); - /** - * Variables that make the betting slider function + * creates deck and shuffles deck */ -const rangeInput = document.querySelector('.input-bet'); -const rangeOutput = document.querySelector('.output'); - -const outputDefaultState = () => { - rangeOutput.value = rangeInput.value; -}; -rangeInput.addEventListener('input', function () { - rangeOutput.value = this.value; -}); -document.addEventListener('DOMContentLoaded', function () { - outputDefaultState(); -}); +deck = shuffleDeck(makeDeck()); From 16ab5b6a83f00485d1710686c67733e91970022a Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Wed, 15 Dec 2021 20:26:09 +0800 Subject: [PATCH 10/54] add swapCard() --- init.js | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/init.js b/init.js index 17ad7873..8a2e1abc 100644 --- a/init.js +++ b/init.js @@ -1,3 +1,13 @@ +let overallContainer; // contains all assets +let gameContainer; +let cardComboContainer; +let outputContainer; +let inputContainer; +let buttonsContainer; + +let output; +let input; + const initGame = () => { // create overall container overallContainer = document.createElement('div'); @@ -23,10 +33,15 @@ const initGame = () => { outputContainer.classList.add('output-container', 'section'); overallContainer.appendChild(outputContainer); - // create input container, bet input and submit // + // buttonsContainer + buttonsContainer = document.createElement('div'); + buttonsContainer.classList.add('buttons-container'); + overallContainer.appendChild(buttonsContainer); + + // create input container, bet input and submit inputContainer = document.createElement('div'); inputContainer.classList.add('input-container'); - overallContainer.appendChild(inputContainer); + buttonsContainer.appendChild(inputContainer); // bet input slider input = document.createElement('input'); input.type = 'range'; @@ -35,12 +50,17 @@ const initGame = () => { input.min = 0; input.max = 100; inputContainer.appendChild(input); - - // output + // output for slider output = document.createElement('output'); output.classList.add('output'); output.setAttribute('for', 'quantity'); - overallContainer.appendChild(output); + inputContainer.appendChild(output); + + // create swap cards button + swapCardsBtn = document.createElement('button'); + swapCardsBtn.innerText = 'Swap Cards'; + swapCardsBtn.classList.add('btn-swap-cards'); + buttonsContainer.appendChild(swapCardsBtn); /** * Variables & functions that make the betting slider function @@ -60,5 +80,6 @@ const initGame = () => { // creates deal cards button dealCardBtn(); + swapCards(); }; initGame(); From 9702c0c4a5393f2e0c7ae7d847fc1255b07c873b Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Wed, 15 Dec 2021 20:26:38 +0800 Subject: [PATCH 11/54] add buttons container --- styles.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/styles.css b/styles.css index d8ea1a94..f1b12640 100644 --- a/styles.css +++ b/styles.css @@ -33,6 +33,11 @@ body { display: inline-block; } +.buttons-container { + display: flex; + justify-content: flex-end; +} + .card { display: inline-block; margin: 10px; From 1dffe1124b04b9b94e3422e9697114158c160b42 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Wed, 15 Dec 2021 20:27:04 +0800 Subject: [PATCH 12/54] add swapCard function --- script.js | 73 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 56 insertions(+), 17 deletions(-) diff --git a/script.js b/script.js index a3ffffe5..31ad747f 100644 --- a/script.js +++ b/script.js @@ -1,15 +1,9 @@ /** * Global variables */ -let overallContainer; // contains all assets -let gameContainer; -let cardComboContainer; -let outputContainer; -let inputContainer; +let swapCardsBtn; let savedCardsArray = []; -let output; -let input; let betAmount = 0; const userHand = []; @@ -18,9 +12,12 @@ let deck = []; // TODO // clicks a button to deal cards -// user selects which card to keep DOING +// user selects which card to keep +// --> cards get saved to savedCardsArray when clicked. Need to create a function that replaces the unclicked cards // game replaces the unselected cards, calculateds the handscore, and update total points. +// game calculates the hand score upon dealt of first hand // function that adds card in a loop and adds a click element to change cards. +// once deal cards is pressed, hide button until end of game /** * function that sums returns the sum of the playing hand @@ -110,7 +107,7 @@ const randomNumberGenerator = (deckLength) => { return Math.floor(Math.random() * deckLength); }; -/** DOING +/** * function that takes a card object and returns a div to display card * adds a function that saves the card to an array when clicked * @param {object} cardInfo contains info of the attributes of 1 card @@ -128,11 +125,6 @@ const makeCard = (cardInfo) => { cardName.innerHTML = cardInfo.displayName; cardSuit.innerHTML = cardInfo.suitSymbol; - card.addEventListener('click', () => { - card.classList.toggle('clicked'); - savedCardsArray.push(cardInfo); - }); - card.appendChild(cardName); card.appendChild(cardSuit); @@ -140,20 +132,67 @@ const makeCard = (cardInfo) => { }; /** DOING + * function to swap cards that are not under holdStatus true + */ +const swapCards = () => { + swapCardsBtn.addEventListener('click', () => { + // saves cards on 'hold' status to an array + savedCardsArray = userHand.filter((x) => x.holdStatus === true); + console.log(savedCardsArray); + const amtOfCardsToFillHand = 5 - savedCardsArray.length; + console.log(`amt of cards needed = ${amtOfCardsToFillHand}`); + // add x amt of cards into saved hand array to make it 5 + // TODO keep cards in place after changing them + for (let i = 0; i < amtOfCardsToFillHand; i += 1) { + const newCard = deck.pop(); + savedCardsArray.push(newCard); + } + // makeCards this new array and deal + gameContainer.innerText = ''; + for (let i = 0; i < savedCardsArray.length; i += 1) { + const card = savedCardsArray[i]; + const cardEl = makeCard(card); + gameContainer.appendChild(cardEl); + } + // calculate the score of this card + }); +}; + +/** * function to create a button to deal shuffled cards * also displays cards in gameContainer */ const dealCardBtn = () => { - // button is placed in overall container only FYI const btnEl = document.createElement('button'); btnEl.innerText = 'Deal Cards'; btnEl.classList.add('btn-deal-cards', 'btn'); - overallContainer.appendChild(btnEl); + buttonsContainer.appendChild(btnEl); btnEl.addEventListener('click', () => { + gameContainer.innerText = ''; for (let i = 0; i < 5; i += 1) { - userHand.push(deck.pop()); + const card = deck.pop(); + card.holdStatus = false; + userHand.push(card); + console.log(`${userHand[i].name} of ${userHand[i].suit} dealt`); const cardEl = makeCard(userHand[i]); + + // adds the index of the card to saved card array on 1st click + let clickedTimes = 0; + cardEl.addEventListener('click', () => { + cardEl.classList.toggle('clicked'); + console.log(`cardname: ${card.name}`); + + if (clickedTimes % 2 === 0) { + // console.log('clickedTimes = 0'); + card.holdStatus = true; + // removes index of card from array on 2nd click + } else if (clickedTimes % 2 === 1) { + card.holdStatus = false; + // console.log('clickedTimes = 1'); + } + clickedTimes += 1; + }); gameContainer.appendChild(cardEl); } }); From 8600db33e5ac86d56259ef8a19ada43638904f64 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Wed, 15 Dec 2021 20:29:10 +0800 Subject: [PATCH 13/54] add removed functions --- depreciated functions.js | 44 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 depreciated functions.js diff --git a/depreciated functions.js b/depreciated functions.js new file mode 100644 index 00000000..c4e55e95 --- /dev/null +++ b/depreciated functions.js @@ -0,0 +1,44 @@ +const dealCardBtn = () => { + // button is placed in overall container only FYI + const btnEl = document.createElement('button'); + btnEl.innerText = 'Deal Cards'; + btnEl.classList.add('btn-deal-cards', 'btn'); + overallContainer.appendChild(btnEl); + btnEl.addEventListener('click', () => { + for (let i = 0; i < 5; i += 1) { + const card = deck.pop(); + card.holdStatus = false; + userHand.push(card); + + console.log(`${userHand[i].name} of ${userHand[i].suit} dealt`); + const cardEl = makeCard(userHand[i]); + + // adds the index of the card to saved card array on 1st click + let clickedTimes = 0; + cardEl.addEventListener('click', () => { + cardEl.classList.toggle('clicked'); + console.log(`cardname: ${card.name}`); + + if (clickedTimes % 2 === 0) { + // console.log('clickedTimes = 0'); + savedCardsArray.splice(i, 0, i); + console.log(`array of card: ${i}`); + // removes index of card from array on 2nd click + } else if (clickedTimes % 2 === 1) { + if (i >= savedCardsArray.length) { + savedCardsArray.splice(-1, 1); + console.log('last'); + } else { + savedCardsArray.splice(i, 1); + } + console.log(`splicing: ${i}`); + // console.log('clickedTimes = 1'); + } + clickedTimes += 1; + console.log(savedCardsArray); + }); + + gameContainer.appendChild(cardEl); + } + }); +}; From 24b078eb008f2ce260d7f036f37eddb12615fc3e Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Wed, 15 Dec 2021 22:23:28 +0800 Subject: [PATCH 14/54] add container names for easy reference --- index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/index.html b/index.html index 53b89c86..64e0a73d 100644 --- a/index.html +++ b/index.html @@ -10,5 +10,6 @@ + From 3887bb010a1fd6094ed93a92ae29b695d9f59639 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Fri, 17 Dec 2021 08:29:53 +0800 Subject: [PATCH 15/54] add test cases --- testHands.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 testHands.js diff --git a/testHands.js b/testHands.js new file mode 100644 index 00000000..c1f94e4b --- /dev/null +++ b/testHands.js @@ -0,0 +1,10 @@ +const playerHand = [ + { rank: 2, suit: 'hearts', name: '2' }, + { rank: 3, suit: 'hearts', name: '2' }, + { rank: 4, suit: 'hearts', name: '2' }, + { rank: 5, suit: 'hearts', name: '2' }, + { rank: 6, suit: 'hearts', name: '2' }, +]; + +// calcHandScore returns the number of points a given hand earns. +const pointsForHand = calcHandScore(playerHand); From 67192f5daab9533d7c98ca71f2f80cc852a3ea5e Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Fri, 17 Dec 2021 08:30:17 +0800 Subject: [PATCH 16/54] change container innerText --- init.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/init.js b/init.js index 8a2e1abc..105b4e6a 100644 --- a/init.js +++ b/init.js @@ -17,19 +17,20 @@ const initGame = () => { // create card combination container cardComboContainer = document.createElement('div'); cardComboContainer.innerText = - 'Container that shows all combination of cards.'; + ' that shows all combination of cards.'; cardComboContainer.classList.add('card-combintaion-container', 'section'); overallContainer.appendChild(cardComboContainer); // create card display container gameContainer = document.createElement('div'); - gameContainer.innerText = 'Container that shows cards dealt to player.'; + gameContainer.innerText = ' that shows cards dealt to player.'; gameContainer.classList.add('game-container', 'section'); overallContainer.appendChild(gameContainer); // create output container outputContainer = document.createElement('div'); - outputContainer.innerText = 'Container that gives instructions to player.'; + outputContainer.innerText = + ' that gives instructions to player.'; outputContainer.classList.add('output-container', 'section'); overallContainer.appendChild(outputContainer); From 44f4a016b757c0d07a3d63e741dd6797df843061 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Fri, 17 Dec 2021 08:30:33 +0800 Subject: [PATCH 17/54] add calcHandScore --- script.js | 47 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/script.js b/script.js index 31ad747f..d4be0266 100644 --- a/script.js +++ b/script.js @@ -3,9 +3,9 @@ */ let swapCardsBtn; let savedCardsArray = []; +let userHand = []; let betAmount = 0; -const userHand = []; const userPoints = 100; let deck = []; @@ -19,13 +19,47 @@ let deck = []; // function that adds card in a loop and adds a click element to change cards. // once deal cards is pressed, hide button until end of game -/** +/** DOING * function that sums returns the sum of the playing hand * @param {array} cardHand the user's current playing hand * @returns {number} sum of scores from the user's playing hand */ const calcHandScore = (cardHand) => { - return 1; + // 1 pair + // 2 pair + // 3 of a kind + // straight + // flush + // full house + // 4 of a kind + // straight flush + // 5 of a kind + let counter = 0; + // iterate through the userHand or savedCardArray + for (const [i, { rank, suit }] of Object.entries(cardHand)) { + let index = Number(i); + // check for 5 of a kind + if (rank === cardHand[0].rank) { + counter += 1; + if (counter === 5) { + // console.log(`5 of a kind!`); + outputContainer.innerText = '5 of a kind!'; + counter = 0; + } + } + counter = 0; // add counter here to ensure counter = 0 + // check for straight flush BUG + if ( + suit === cardHand[0].suit && + // check for sequential numbers + (index === cardHand.length - 1 || rank < cardHand[index + 1].rank) + ) { + counter += 1; + if (counter === 5) { + console.log(`Straight flush!`); + } + } + } }; ////////////////////// @@ -131,7 +165,7 @@ const makeCard = (cardInfo) => { return card; }; -/** DOING +/** * function to swap cards that are not under holdStatus true */ const swapCards = () => { @@ -156,6 +190,8 @@ const swapCards = () => { } // calculate the score of this card }); + // empties savedCardsArray + savedCardsArray = []; }; /** @@ -168,6 +204,9 @@ const dealCardBtn = () => { btnEl.classList.add('btn-deal-cards', 'btn'); buttonsContainer.appendChild(btnEl); btnEl.addEventListener('click', () => { + // empties user hand array + userHand = []; + gameContainer.innerText = ''; for (let i = 0; i < 5; i += 1) { const card = deck.pop(); From 4a80c3b4839cce077d1eb240d8ef5ecaf9bdbb0d Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Fri, 17 Dec 2021 19:13:40 +0800 Subject: [PATCH 18/54] add straightFlush() --- script.js | 46 +++++++++++++++++++++++++++++++++++----------- testHands.js | 2 +- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/script.js b/script.js index d4be0266..4efa9308 100644 --- a/script.js +++ b/script.js @@ -24,6 +24,11 @@ let deck = []; * @param {array} cardHand the user's current playing hand * @returns {number} sum of scores from the user's playing hand */ + +////////////////////////////////// +// Calculate Handscore function // +////////////////////////////////// + const calcHandScore = (cardHand) => { // 1 pair // 2 pair @@ -34,6 +39,12 @@ const calcHandScore = (cardHand) => { // 4 of a kind // straight flush // 5 of a kind + + fiveOfAKind(cardHand); + straightFlush(cardHand); +}; + +const fiveOfAKind = (cardHand) => { let counter = 0; // iterate through the userHand or savedCardArray for (const [i, { rank, suit }] of Object.entries(cardHand)) { @@ -43,20 +54,33 @@ const calcHandScore = (cardHand) => { counter += 1; if (counter === 5) { // console.log(`5 of a kind!`); - outputContainer.innerText = '5 of a kind!'; + outputContainer.innerText = '5 of a kind! 😍'; counter = 0; } } - counter = 0; // add counter here to ensure counter = 0 - // check for straight flush BUG - if ( - suit === cardHand[0].suit && - // check for sequential numbers - (index === cardHand.length - 1 || rank < cardHand[index + 1].rank) - ) { - counter += 1; - if (counter === 5) { - console.log(`Straight flush!`); + } +}; + +const straightFlush = (cardHand) => { + let counter = 0; + + // sort the cards in hand (ascending) according to rank DOING + + console.log(cardHand); + // iterate through the userHand or savedCardArray + for (const [i, { rank, suit }] of Object.entries(cardHand)) { + // check for straight flush + let index = Number(i); + + // check if suits are all the same + if (suit === cardHand[0].suit) { + // check if cards are in ascending order + if (index === cardHand.length - 1 || rank < cardHand[index + 1].rank) { + console.log(rank); + counter += 1; + if (counter === 5) { + outputContainer.innerText = 'Straight Flush! 🙌'; + } } } } diff --git a/testHands.js b/testHands.js index c1f94e4b..f83f0a45 100644 --- a/testHands.js +++ b/testHands.js @@ -1,9 +1,9 @@ const playerHand = [ { rank: 2, suit: 'hearts', name: '2' }, + { rank: 1, suit: 'hearts', name: '2' }, { rank: 3, suit: 'hearts', name: '2' }, { rank: 4, suit: 'hearts', name: '2' }, { rank: 5, suit: 'hearts', name: '2' }, - { rank: 6, suit: 'hearts', name: '2' }, ]; // calcHandScore returns the number of points a given hand earns. From f86949faa7426a5a2e2b0e570391705cf86f418d Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Sat, 18 Dec 2021 18:30:36 +0800 Subject: [PATCH 19/54] modified testHands --- testHands.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testHands.js b/testHands.js index f83f0a45..f8ea780a 100644 --- a/testHands.js +++ b/testHands.js @@ -1,9 +1,9 @@ const playerHand = [ { rank: 2, suit: 'hearts', name: '2' }, - { rank: 1, suit: 'hearts', name: '2' }, { rank: 3, suit: 'hearts', name: '2' }, - { rank: 4, suit: 'hearts', name: '2' }, + { rank: 2, suit: 'hearts', name: '2' }, { rank: 5, suit: 'hearts', name: '2' }, + { rank: 4, suit: 'hearts', name: '2' }, ]; // calcHandScore returns the number of points a given hand earns. From 36a831ae4cfc3ff6b7c5fae8f1494870be62d275 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Sat, 18 Dec 2021 18:30:58 +0800 Subject: [PATCH 20/54] add straights / flush / straightflush --- script.js | 150 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 119 insertions(+), 31 deletions(-) diff --git a/script.js b/script.js index 4efa9308..c32b0122 100644 --- a/script.js +++ b/script.js @@ -7,6 +7,17 @@ let userHand = []; let betAmount = 0; +// combintaions met +let fiveOfAKind = 0; +let straightFlush = 0; +let fullHouse = 0; +let straights = 0; +let flush = 0; +let quads = 0; +let thriples = 0; +let doublePairs = 0; +let pairs = 0; + const userPoints = 100; let deck = []; @@ -30,21 +41,26 @@ let deck = []; ////////////////////////////////// const calcHandScore = (cardHand) => { - // 1 pair + // 1 pair DONE // 2 pair - // 3 of a kind - // straight - // flush - // full house - // 4 of a kind - // straight flush - // 5 of a kind - - fiveOfAKind(cardHand); - straightFlush(cardHand); + // 3 of a kind DONE + // straight DONE + // flush DONE + // full house DONE + // 4 of a kind DONE + // straight flush DONE + // 5 of a kind DONE + + checkForStraight(cardHand); + checkForFlush(cardHand); + quadsThriplesPairsFullHouse(cardHand); + checkForFiveOfAKind(cardHand); + checkForStraightFlush(cardHand); + + checkIfHitCombo(); }; -const fiveOfAKind = (cardHand) => { +const checkForFiveOfAKind = (cardHand) => { let counter = 0; // iterate through the userHand or savedCardArray for (const [i, { rank, suit }] of Object.entries(cardHand)) { @@ -53,37 +69,104 @@ const fiveOfAKind = (cardHand) => { if (rank === cardHand[0].rank) { counter += 1; if (counter === 5) { - // console.log(`5 of a kind!`); - outputContainer.innerText = '5 of a kind! 😍'; + console.log(`5 of a kind!`); counter = 0; + fiveOfAKind = 1; } } } }; -const straightFlush = (cardHand) => { - let counter = 0; +const checkForStraightFlush = (cardHand) => { + // check if straight and flush are true; - // sort the cards in hand (ascending) according to rank DOING + if (straights && flush === 1) { + console.log('flush!'); + } +}; - console.log(cardHand); - // iterate through the userHand or savedCardArray +const checkForFlush = (cardHand) => { + // check if all the suits are the same + let suitTally = {}; + for (const [i, { suit }] of Object.entries(cardHand)) { + // check if all the suits are the same + if (suit in suitTally) { + suitTally[suit] += 1; + } else { + suitTally[suit] = 1; + } + } + if (Object.keys(suitTally).length === 1) { + flush = 1; + return true; + } +}; + +const checkForStraight = (cardHand) => { + // check if the cards are in running order DOING + + // sort the cards to be in descending order + const sortedHand = [...cardHand].sort((a, b) => b.rank - a.rank); + // console.log(sortedHand); + + // loop through the sortedHand to check if the difference between + // each card is 1 + let counter = 0; + for (let i = 0; i < sortedHand.length - 1; i += 1) { + if (sortedHand[i].rank - sortedHand[i + 1].rank === 1) { + counter += 1; + if (counter === 4) { + straights = 1; + } + } + } +}; + +// TODO 2 pair (set a counter) +const quadsThriplesPairsFullHouse = (cardHand) => { + let cardTally = {}; for (const [i, { rank, suit }] of Object.entries(cardHand)) { - // check for straight flush - let index = Number(i); + if (rank in cardTally) { + cardTally[rank] += 1; + } else { + cardTally[rank] = 1; + } + } + // console.log(cardTally); - // check if suits are all the same - if (suit === cardHand[0].suit) { - // check if cards are in ascending order - if (index === cardHand.length - 1 || rank < cardHand[index + 1].rank) { - console.log(rank); - counter += 1; - if (counter === 5) { - outputContainer.innerText = 'Straight Flush! 🙌'; - } + let card4x = false; + let card3x = false; + let card2x = false; + let card3x2x = false; + + for (const i of Object.keys(cardTally)) { + for (const j of Object.values(cardTally)) { + if (j === 4) { + card4x = true; + } + if (j === 2) { + card2x = true; + } + if (j === 3) { + card3x = true; + } + if (card3x === true && card2x === true) { + card3x2x = true; } } } + if (card4x === true) { + quads = 1; + } else if (card3x2x === true) { + fullHouse = 1; + } else if (card3x === true) { + thriples = 1; + } else if (card2x === true) { + pairs = 1; + } + // console.log( + // `card4x: ${card4x}, card3x: ${card3x}, card2x: ${card2x}, card3x2x: ${card3x2x}` + // ); }; ////////////////////// @@ -200,7 +283,6 @@ const swapCards = () => { const amtOfCardsToFillHand = 5 - savedCardsArray.length; console.log(`amt of cards needed = ${amtOfCardsToFillHand}`); // add x amt of cards into saved hand array to make it 5 - // TODO keep cards in place after changing them for (let i = 0; i < amtOfCardsToFillHand; i += 1) { const newCard = deck.pop(); savedCardsArray.push(newCard); @@ -261,6 +343,12 @@ const dealCardBtn = () => { }); }; +const checkIfHitCombo = () => { + console.log( + `fiveOfAKind: ${fiveOfAKind}, straightFlush: ${straightFlush}, fullHouse: ${fullHouse}, straights: ${straights}, flush: ${flush}, quads: ${quads}, thriples: ${thriples}, 2xPairs: ${doublePairs}, pairs: ${pairs}` + ); +}; + /** * creates deck and shuffles deck */ From 6f7c177af22e715903e21ffe14c340bbc40003c2 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Sat, 18 Dec 2021 23:29:29 +0800 Subject: [PATCH 21/54] removed testscript --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 64e0a73d..9c26bc55 100644 --- a/index.html +++ b/index.html @@ -10,6 +10,6 @@ - + From 79c3fa0c5b382a4bb23c9a21d018a5c3d123407d Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Sat, 18 Dec 2021 23:29:48 +0800 Subject: [PATCH 22/54] removed input box --- init.js | 55 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/init.js b/init.js index 105b4e6a..a80eaae9 100644 --- a/init.js +++ b/init.js @@ -39,28 +39,30 @@ const initGame = () => { buttonsContainer.classList.add('buttons-container'); overallContainer.appendChild(buttonsContainer); - // create input container, bet input and submit - inputContainer = document.createElement('div'); - inputContainer.classList.add('input-container'); - buttonsContainer.appendChild(inputContainer); + // // create input container, bet input and submit + // inputContainer = document.createElement('div'); + // inputContainer.classList.add('input-container'); + // buttonsContainer.appendChild(inputContainer); + + /** removed input slider */ // bet input slider - input = document.createElement('input'); - input.type = 'range'; - input.name = 'quantity'; - input.classList.add('input-bet'); - input.min = 0; - input.max = 100; - inputContainer.appendChild(input); - // output for slider - output = document.createElement('output'); - output.classList.add('output'); - output.setAttribute('for', 'quantity'); - inputContainer.appendChild(output); + // input = document.createElement('input'); + // input.type = 'range'; + // input.name = 'quantity'; + // input.classList.add('input-bet'); + // input.min = 0; + // input.max = 100; + // inputContainer.appendChild(input); + // // output for slider + // output = document.createElement('output'); + // output.classList.add('output'); + // output.setAttribute('for', 'quantity'); + // inputContainer.appendChild(output); // create swap cards button swapCardsBtn = document.createElement('button'); swapCardsBtn.innerText = 'Swap Cards'; - swapCardsBtn.classList.add('btn-swap-cards'); + swapCardsBtn.classList.add('btn-swap-cards', 'btn'); buttonsContainer.appendChild(swapCardsBtn); /** @@ -69,15 +71,16 @@ const initGame = () => { const rangeInput = document.querySelector('.input-bet'); const rangeOutput = document.querySelector('.output'); - const outputDefaultState = () => { - rangeOutput.value = rangeInput.value; - }; - rangeInput.addEventListener('input', function () { - rangeOutput.value = this.value; - }); - document.addEventListener('DOMContentLoaded', function () { - outputDefaultState(); - }); + /** logic for input slider */ + // const outputDefaultState = () => { + // rangeOutput.value = rangeInput.value; + // }; + // rangeInput.addEventListener('input', function () { + // rangeOutput.value = this.value; + // }); + // document.addEventListener('DOMContentLoaded', function () { + // outputDefaultState(); + // }); // creates deal cards button dealCardBtn(); From bef174907b41341277ee97a0118951a7a49daa5e Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Sat, 18 Dec 2021 23:30:20 +0800 Subject: [PATCH 23/54] main logic for calcHandScore done --- script.js | 106 +++++++++++++++++++++++++++++------------------------- 1 file changed, 57 insertions(+), 49 deletions(-) diff --git a/script.js b/script.js index c32b0122..1a61af42 100644 --- a/script.js +++ b/script.js @@ -10,10 +10,10 @@ let betAmount = 0; // combintaions met let fiveOfAKind = 0; let straightFlush = 0; +let quads = 0; let fullHouse = 0; let straights = 0; let flush = 0; -let quads = 0; let thriples = 0; let doublePairs = 0; let pairs = 0; @@ -22,15 +22,17 @@ const userPoints = 100; let deck = []; // TODO -// clicks a button to deal cards -// user selects which card to keep -// --> cards get saved to savedCardsArray when clicked. Need to create a function that replaces the unclicked cards -// game replaces the unselected cards, calculateds the handscore, and update total points. -// game calculates the hand score upon dealt of first hand -// function that adds card in a loop and adds a click element to change cards. -// once deal cards is pressed, hide button until end of game - -/** DOING +// clicks a button to deal cards DONE +// user selects which card to keep DONE +// --> cards get saved to savedCardsArray when clicked. Need to create a function that replaces the unclicked cards DONE +// game calculates the hand score upon dealt of first hand DONE +// function that adds card in a loop and adds a click element to change cards. DONE +// game replaces the unselected cards, calculates the handscore, and update total points. DOING +// come up with point system DOING +// once deal cards is pressed, hide button until end of game DOING +// add output container instructions DOING + +/** * function that sums returns the sum of the playing hand * @param {array} cardHand the user's current playing hand * @returns {number} sum of scores from the user's playing hand @@ -42,46 +44,46 @@ let deck = []; const calcHandScore = (cardHand) => { // 1 pair DONE - // 2 pair + // 2 pair DONE // 3 of a kind DONE // straight DONE // flush DONE // full house DONE // 4 of a kind DONE // straight flush DONE - // 5 of a kind DONE + // 5 of a kind checkForStraight(cardHand); checkForFlush(cardHand); quadsThriplesPairsFullHouse(cardHand); - checkForFiveOfAKind(cardHand); + // checkForFiveOfAKind(cardHand); checkForStraightFlush(cardHand); - checkIfHitCombo(); + checkIfHitCombo(); // logs the combo hit in console }; -const checkForFiveOfAKind = (cardHand) => { - let counter = 0; - // iterate through the userHand or savedCardArray - for (const [i, { rank, suit }] of Object.entries(cardHand)) { - let index = Number(i); - // check for 5 of a kind - if (rank === cardHand[0].rank) { - counter += 1; - if (counter === 5) { - console.log(`5 of a kind!`); - counter = 0; - fiveOfAKind = 1; - } - } - } -}; +// const checkForFiveOfAKind = (cardHand) => { +// let counter = 0; +// // iterate through the userHand or savedCardArray +// for (const [i, { rank, suit }] of Object.entries(cardHand)) { +// let index = Number(i); +// // check for 5 of a kind +// if (rank === cardHand[0].rank) { +// counter += 1; +// if (counter === 5) { +// console.log(`5 of a kind!`); +// counter = 0; +// fiveOfAKind = 1; +// } +// } +// } +// }; const checkForStraightFlush = (cardHand) => { // check if straight and flush are true; - if (straights && flush === 1) { - console.log('flush!'); + if (straights === 1 && flush === 1) { + straightFlush = 1; } }; @@ -103,7 +105,7 @@ const checkForFlush = (cardHand) => { }; const checkForStraight = (cardHand) => { - // check if the cards are in running order DOING + // check if the cards are in running order // sort the cards to be in descending order const sortedHand = [...cardHand].sort((a, b) => b.rank - a.rank); @@ -122,7 +124,6 @@ const checkForStraight = (cardHand) => { } }; -// TODO 2 pair (set a counter) const quadsThriplesPairsFullHouse = (cardHand) => { let cardTally = {}; for (const [i, { rank, suit }] of Object.entries(cardHand)) { @@ -132,29 +133,34 @@ const quadsThriplesPairsFullHouse = (cardHand) => { cardTally[rank] = 1; } } - // console.log(cardTally); + console.log(cardTally); let card4x = false; let card3x = false; let card2x = false; let card3x2x = false; - for (const i of Object.keys(cardTally)) { - for (const j of Object.values(cardTally)) { - if (j === 4) { - card4x = true; - } - if (j === 2) { - card2x = true; - } - if (j === 3) { - card3x = true; - } - if (card3x === true && card2x === true) { - card3x2x = true; + // for (const i of Object.keys(cardTally)) { + let counterForPairs = 0; + for (const j of Object.values(cardTally)) { + if (j === 4) { + card4x = true; + } + if (j === 2) { + card2x = true; + counterForPairs += 1; + if (counterForPairs === 2) { + doublePairs = 1; } } + if (j === 3) { + card3x = true; + } + if (card3x === true && card2x === true) { + card3x2x = true; + } } + // } if (card4x === true) { quads = 1; } else if (card3x2x === true) { @@ -295,6 +301,7 @@ const swapCards = () => { gameContainer.appendChild(cardEl); } // calculate the score of this card + calcHandScore(savedCardsArray); }); // empties savedCardsArray savedCardsArray = []; @@ -340,12 +347,13 @@ const dealCardBtn = () => { }); gameContainer.appendChild(cardEl); } + calcHandScore(userHand); }); }; const checkIfHitCombo = () => { console.log( - `fiveOfAKind: ${fiveOfAKind}, straightFlush: ${straightFlush}, fullHouse: ${fullHouse}, straights: ${straights}, flush: ${flush}, quads: ${quads}, thriples: ${thriples}, 2xPairs: ${doublePairs}, pairs: ${pairs}` + `fiveOfAKind: ${fiveOfAKind}, straightFlush: ${straightFlush}, quads: ${quads}, fullHouse: ${fullHouse}, straights: ${straights}, flush: ${flush}, thriples: ${thriples}, 2xPairs: ${doublePairs}, pairs: ${pairs}` ); }; From 6c21a1aff00a6b7ccd1a13cf849038c7ab583047 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Sat, 18 Dec 2021 23:30:39 +0800 Subject: [PATCH 24/54] centered elements, --- styles.css | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/styles.css b/styles.css index f1b12640..c8370bb8 100644 --- a/styles.css +++ b/styles.css @@ -16,6 +16,8 @@ body { } .section { + display: flex; + justify-content: center; padding: 10px; margin: 20px auto; padding: 10px; @@ -23,10 +25,8 @@ body { } .btn { - display: flex; - margin: auto; - /* justify-content: center; - align-items: center; */ + border-radius: 20%; + border: 2px solid red; } .input-container { @@ -35,7 +35,7 @@ body { .buttons-container { display: flex; - justify-content: flex-end; + justify-content: space-evenly; } .card { From 1334f93121b1ccfcaf2c5c1161a7ae2dcfe71515 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Sat, 18 Dec 2021 23:30:50 +0800 Subject: [PATCH 25/54] changed cards to test --- testHands.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testHands.js b/testHands.js index f8ea780a..0c84192b 100644 --- a/testHands.js +++ b/testHands.js @@ -1,9 +1,9 @@ const playerHand = [ - { rank: 2, suit: 'hearts', name: '2' }, - { rank: 3, suit: 'hearts', name: '2' }, - { rank: 2, suit: 'hearts', name: '2' }, { rank: 5, suit: 'hearts', name: '2' }, { rank: 4, suit: 'hearts', name: '2' }, + { rank: 2, suit: 'hearts', name: '2' }, + { rank: 2, suit: 'hearts', name: '2' }, + { rank: 2, suit: 'hearts', name: '2' }, ]; // calcHandScore returns the number of points a given hand earns. From 265310c216da161540108ae6b9f11fe9b26ac715 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Sun, 19 Dec 2021 22:09:34 +0800 Subject: [PATCH 26/54] moved functions involved in making a deck here --- makeDeck.js | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 makeDeck.js diff --git a/makeDeck.js b/makeDeck.js new file mode 100644 index 00000000..5667b28d --- /dev/null +++ b/makeDeck.js @@ -0,0 +1,98 @@ +/** + * function that makes a standard deck of cards + */ +const makeDeck = () => { + // 4 suits - diamond, clubs, heart, spades + // 13 cards per suit + // create a loop that generates 52 cards of 4 suits + let newDeck = []; + const suits = ['diamonds', 'clubs', 'hearts', 'spades']; + for (let i = 0; i < suits.length; i += 1) { + const suitSymbol = ['♦', '♣', '♥', '♠']; + let currentSuitSymbol = suitSymbol[i]; + + for (let j = 1; j < 14; j += 1) { + let cardSuits = suits[i]; + let suitColor; + let cardName = j; + let currentDisplayName = j; + + if (j === 1) { + cardName = 'ace'; + currentDisplayName = 'A'; + } else if (j === 11) { + cardName = 'jack'; + currentDisplayName = 'J'; + } else if (j === 12) { + cardName = 'queen'; + currentDisplayName = 'Q'; + } else if (j === 13) { + cardName = 'king'; + currentDisplayName = 'K'; + } + if (cardSuits === 'diamonds' || cardSuits === 'hearts') { + suitColor = 'red'; + } else { + suitColor = 'black'; + } + let currentCard = { + name: cardName, + suit: cardSuits, + rank: j, + color: suitColor, + suitSymbol: currentSuitSymbol, + displayName: currentDisplayName, + }; + newDeck.push(currentCard); + } + } + return newDeck; +}; + +/** + * Function that shuffles the deck + * @param {array} deck array of deck + */ +const shuffleDeck = (cards) => { + for (let i = 0; i < cards.length; i += 1) { + let randomIndex = randomNumberGenerator(cards.length); + let currentCard = cards[i]; + let randomCard = cards[randomIndex]; + cards[i] = randomCard; + cards[randomIndex] = currentCard; + } + return cards; +}; + +/** + * function that gives a random number depending on deck size + * @param {number} deckLength length of deck + * @returns a random number from 0 - 51 + */ +const randomNumberGenerator = (deckLength) => { + return Math.floor(Math.random() * deckLength); +}; + +/** + * function that takes a card object and returns a div to display card + * adds a function that saves the card to an array when clicked + * @param {object} cardInfo contains info of the attributes of 1 card + * @returns a card div containing the attributes of the card + */ +const makeCard = (cardInfo) => { + const card = document.createElement('div'); + const cardName = document.createElement('div'); + const cardSuit = document.createElement('div'); + + card.classList.add('card'); + cardName.classList.add('name', cardInfo.color); + cardSuit.classList.add('suit', cardInfo.color); + + cardName.innerHTML = cardInfo.displayName; + cardSuit.innerHTML = cardInfo.suitSymbol; + + card.appendChild(cardName); + card.appendChild(cardSuit); + + return card; +}; From 7a97886da0dc666dd9163ad8f0bbf292b49dc1d1 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Sun, 19 Dec 2021 22:09:45 +0800 Subject: [PATCH 27/54] moved eventlisteners here --- eventListeners.js | 95 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 eventListeners.js diff --git a/eventListeners.js b/eventListeners.js new file mode 100644 index 00000000..11c8f4b8 --- /dev/null +++ b/eventListeners.js @@ -0,0 +1,95 @@ +/** + * function to bet one credit + */ +betOneBtn.addEventListener('click', () => { + if (gameMode === 'bet') { + credits -= 1; + betAmount += 1; + updateCredits(); + if (betAmount >= 5) { + gameMode = 'deal'; + } + } +}); + +/** + * function to bet five credits + */ +betFiveBtn.addEventListener('click', () => { + if (gameMode === 'bet') { + credits -= 5; + betAmount += 5; + updateCredits(); + gameMode = 'deal'; + } +}); + +/** + * function to create a button to deal shuffled cards + * also displays cards in gameContainer + */ +dealCardsBtn.addEventListener('click', () => { + if (gameMode === 'deal') { + // empties user hand array + userHand = []; + + gameContainer.innerText = ''; + for (let i = 0; i < 5; i += 1) { + const card = deck.pop(); + card.holdStatus = false; + userHand.push(card); + + console.log(`${userHand[i].name} of ${userHand[i].suit} dealt`); + const cardEl = makeCard(userHand[i]); + + // adds the index of the card to saved card array on 1st click + let clickedTimes = 0; + cardEl.addEventListener('click', () => { + cardEl.classList.toggle('clicked'); + console.log(`cardname: ${card.name}`); + + if (clickedTimes % 2 === 0) { + // console.log('clickedTimes = 0'); + card.holdStatus = true; + // removes index of card from array on 2nd click + } else if (clickedTimes % 2 === 1) { + card.holdStatus = false; + // console.log('clickedTimes = 1'); + } + clickedTimes += 1; + }); + gameContainer.appendChild(cardEl); + } + calcHandScore(userHand); + } + gameMode = 'swap'; +}); + +/** + * function to swap cards that are not under holdStatus true + */ +swapCardsBtn.addEventListener('click', () => { + if (gameMode === 'swap') { + // saves cards on 'hold' status to an array + savedCardsArray = userHand.filter((x) => x.holdStatus === true); + console.log(savedCardsArray); + const amtOfCardsToFillHand = 5 - savedCardsArray.length; + console.log(`amt of cards needed = ${amtOfCardsToFillHand}`); + // add x amt of cards into saved hand array to make it 5 + for (let i = 0; i < amtOfCardsToFillHand; i += 1) { + const newCard = deck.pop(); + savedCardsArray.push(newCard); + } + // makeCards this new array and deal + gameContainer.innerText = ''; + for (let i = 0; i < savedCardsArray.length; i += 1) { + const card = savedCardsArray[i]; + const cardEl = makeCard(card); + gameContainer.appendChild(cardEl); + } + // calculate the score of this card + calcHandScore(savedCardsArray); + // empties savedCardsArray + savedCardsArray = []; + } +}); From 995520ba384738443e872d666e93e047c1e8d670 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Mon, 20 Dec 2021 21:25:20 +0800 Subject: [PATCH 28/54] add pointsboard and royaFlush() --- script.js | 242 +++++++++++++++--------------------------------------- 1 file changed, 66 insertions(+), 176 deletions(-) diff --git a/script.js b/script.js index 1a61af42..8110f259 100644 --- a/script.js +++ b/script.js @@ -1,14 +1,15 @@ /** * Global variables */ -let swapCardsBtn; let savedCardsArray = []; let userHand = []; +let gameMode = 'bet'; let betAmount = 0; -// combintaions met +// combinations met let fiveOfAKind = 0; +let royalFlush = 0; let straightFlush = 0; let quads = 0; let fullHouse = 0; @@ -18,19 +19,32 @@ let thriples = 0; let doublePairs = 0; let pairs = 0; -const userPoints = 100; +let credits = 100; let deck = []; +// An object that contains the point / score system of the game +const comboPoints = { + royalFlush: [250, 500, 750, 1000, 4000], + straightFlush: [50, 100, 150, 200, 250], + fourOfAKind: [25, 50, 75, 100, 125], + fullHouse: [9, 18, 27, 36, 45], + flush: [6, 12, 18, 24, 30], + straight: [4, 8, 12, 16, 20], + threeOfAKind: [3, 6, 9, 12, 15], + twoPair: [2, 4, 6, 8, 10], +}; + // TODO // clicks a button to deal cards DONE // user selects which card to keep DONE // --> cards get saved to savedCardsArray when clicked. Need to create a function that replaces the unclicked cards DONE // game calculates the hand score upon dealt of first hand DONE // function that adds card in a loop and adds a click element to change cards. DONE -// game replaces the unselected cards, calculates the handscore, and update total points. DOING -// come up with point system DOING -// once deal cards is pressed, hide button until end of game DOING -// add output container instructions DOING +// create status box to track: credits DONE +// add royal flush +// come up with point system +// game calculates the handscore, and update total points. +// add output container instructions, output final combo. /** * function that sums returns the sum of the playing hand @@ -51,12 +65,13 @@ const calcHandScore = (cardHand) => { // full house DONE // 4 of a kind DONE // straight flush DONE + // royal flush DOING // 5 of a kind checkForStraight(cardHand); checkForFlush(cardHand); + checkForRoyalFlush(cardHand); quadsThriplesPairsFullHouse(cardHand); - // checkForFiveOfAKind(cardHand); checkForStraightFlush(cardHand); checkIfHitCombo(); // logs the combo hit in console @@ -79,6 +94,42 @@ const calcHandScore = (cardHand) => { // } // }; +const checkForRoyalFlush = (cardHand) => { + // check if suits are the same + let rank = cardHand.rank; + + let ace = 0; + let king = 0; + let queen = 0; + let jack = 0; + let numTen = 0; + + if (flush === 1) { + // check if A, K, J, 10, 9 are in the hand (bruteforce) + for (let [i, { rank }] of Object.entries(cardHand)) { + if (rank === 1) { + ace = 1; + } + if (rank === 13) { + king = 1; + } + if (rank === 12) { + queen = 1; + } + if (rank === 11) { + jack = 1; + } + if (rank === 10) { + numTen = 1; + } + } + if ((ace, king, queen, jack, numTen === 1)) { + console.log('royal flush'); + royalFlush = 1; + } + } +}; + const checkForStraightFlush = (cardHand) => { // check if straight and flush are true; @@ -179,181 +230,20 @@ const quadsThriplesPairsFullHouse = (cardHand) => { // helper functions // ////////////////////// -/** - * function that makes a standard deck of cards - */ -const makeDeck = () => { - // 4 suits - diamond, clubs, heart, spades - // 13 cards per suit - // create a loop that generates 52 cards of 4 suits - let newDeck = []; - const suits = ['diamonds', 'clubs', 'hearts', 'spades']; - for (let i = 0; i < suits.length; i += 1) { - const suitSymbol = ['♦', '♣', '♥', '♠']; - let currentSuitSymbol = suitSymbol[i]; - - for (let j = 1; j < 14; j += 1) { - let cardSuits = suits[i]; - let suitColor; - let cardName = j; - let currentDisplayName = j; - - if (j === 1) { - cardName = 'ace'; - currentDisplayName = 'A'; - } else if (j === 11) { - cardName = 'jack'; - currentDisplayName = 'J'; - } else if (j === 12) { - cardName = 'queen'; - currentDisplayName = 'Q'; - } else if (j === 13) { - cardName = 'king'; - currentDisplayName = 'K'; - } - if (cardSuits === 'diamonds' || cardSuits === 'hearts') { - suitColor = 'red'; - } else { - suitColor = 'black'; - } - let currentCard = { - name: cardName, - suit: cardSuits, - rank: j, - color: suitColor, - suitSymbol: currentSuitSymbol, - displayName: currentDisplayName, - }; - newDeck.push(currentCard); - } - } - return newDeck; -}; +// points system DOING +// based on the bet amount, iterate on nth value in the object "comboPoints" and add that value to the credits. /** - * Function that shuffles the deck - * @param {array} deck array of deck + * function to update credits in HTML */ -const shuffleDeck = (cards) => { - for (let i = 0; i < cards.length; i += 1) { - let randomIndex = randomNumberGenerator(cards.length); - let currentCard = cards[i]; - let randomCard = cards[randomIndex]; - cards[i] = randomCard; - cards[randomIndex] = currentCard; - } - return cards; -}; - -/** - * function that gives a random number depending on deck size - * @param {number} deckLength length of deck - * @returns a random number from 0 - 51 - */ -const randomNumberGenerator = (deckLength) => { - return Math.floor(Math.random() * deckLength); -}; - -/** - * function that takes a card object and returns a div to display card - * adds a function that saves the card to an array when clicked - * @param {object} cardInfo contains info of the attributes of 1 card - * @returns a card div containing the attributes of the card - */ -const makeCard = (cardInfo) => { - const card = document.createElement('div'); - const cardName = document.createElement('div'); - const cardSuit = document.createElement('div'); - - card.classList.add('card'); - cardName.classList.add('name', cardInfo.color); - cardSuit.classList.add('suit', cardInfo.color); - - cardName.innerHTML = cardInfo.displayName; - cardSuit.innerHTML = cardInfo.suitSymbol; - - card.appendChild(cardName); - card.appendChild(cardSuit); - - return card; -}; - -/** - * function to swap cards that are not under holdStatus true - */ -const swapCards = () => { - swapCardsBtn.addEventListener('click', () => { - // saves cards on 'hold' status to an array - savedCardsArray = userHand.filter((x) => x.holdStatus === true); - console.log(savedCardsArray); - const amtOfCardsToFillHand = 5 - savedCardsArray.length; - console.log(`amt of cards needed = ${amtOfCardsToFillHand}`); - // add x amt of cards into saved hand array to make it 5 - for (let i = 0; i < amtOfCardsToFillHand; i += 1) { - const newCard = deck.pop(); - savedCardsArray.push(newCard); - } - // makeCards this new array and deal - gameContainer.innerText = ''; - for (let i = 0; i < savedCardsArray.length; i += 1) { - const card = savedCardsArray[i]; - const cardEl = makeCard(card); - gameContainer.appendChild(cardEl); - } - // calculate the score of this card - calcHandScore(savedCardsArray); - }); - // empties savedCardsArray - savedCardsArray = []; -}; - -/** - * function to create a button to deal shuffled cards - * also displays cards in gameContainer - */ -const dealCardBtn = () => { - const btnEl = document.createElement('button'); - btnEl.innerText = 'Deal Cards'; - btnEl.classList.add('btn-deal-cards', 'btn'); - buttonsContainer.appendChild(btnEl); - btnEl.addEventListener('click', () => { - // empties user hand array - userHand = []; - - gameContainer.innerText = ''; - for (let i = 0; i < 5; i += 1) { - const card = deck.pop(); - card.holdStatus = false; - userHand.push(card); - - console.log(`${userHand[i].name} of ${userHand[i].suit} dealt`); - const cardEl = makeCard(userHand[i]); - - // adds the index of the card to saved card array on 1st click - let clickedTimes = 0; - cardEl.addEventListener('click', () => { - cardEl.classList.toggle('clicked'); - console.log(`cardname: ${card.name}`); - - if (clickedTimes % 2 === 0) { - // console.log('clickedTimes = 0'); - card.holdStatus = true; - // removes index of card from array on 2nd click - } else if (clickedTimes % 2 === 1) { - card.holdStatus = false; - // console.log('clickedTimes = 1'); - } - clickedTimes += 1; - }); - gameContainer.appendChild(cardEl); - } - calcHandScore(userHand); - }); +const updateCredits = () => { + const creditsContainer = document.querySelector('.status-container'); + creditsContainer.innerText = `Total Credits: ${credits}`; }; const checkIfHitCombo = () => { console.log( - `fiveOfAKind: ${fiveOfAKind}, straightFlush: ${straightFlush}, quads: ${quads}, fullHouse: ${fullHouse}, straights: ${straights}, flush: ${flush}, thriples: ${thriples}, 2xPairs: ${doublePairs}, pairs: ${pairs}` + `fiveOfAKind: ${fiveOfAKind}, royalFlush: ${royalFlush}, straightFlush: ${straightFlush}, quads: ${quads}, fullHouse: ${fullHouse}, straights: ${straights}, flush: ${flush}, thriples: ${thriples}, 2xPairs: ${doublePairs}, pairs: ${pairs}` ); }; From 05552d8392ad4bf249bbe73b7b972bc1daa0206f Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Mon, 20 Dec 2021 21:25:41 +0800 Subject: [PATCH 29/54] changed order of script initiating --- index.html | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index 9c26bc55..7cae432f 100644 --- a/index.html +++ b/index.html @@ -8,8 +8,11 @@ Video Poker! - + + + + From 3760e4de105eb11d47c872859814270cedd62b0e Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Mon, 20 Dec 2021 21:26:33 +0800 Subject: [PATCH 30/54] moved button creation to init from script.js --- init.js | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/init.js b/init.js index a80eaae9..b8927c9d 100644 --- a/init.js +++ b/init.js @@ -1,9 +1,14 @@ let overallContainer; // contains all assets let gameContainer; let cardComboContainer; +let statusContainer; let outputContainer; let inputContainer; let buttonsContainer; +let betOneBtn; +let betFiveBtn; +let swapCardsBtn; +let dealCardsBtn; let output; let input; @@ -34,6 +39,13 @@ const initGame = () => { outputContainer.classList.add('output-container', 'section'); overallContainer.appendChild(outputContainer); + // create status container + // tracks credits, bet amount + statusContainer = document.createElement('div'); + statusContainer.classList.add('status-container', 'section'); + statusContainer.innerText = 'Total Credits: 100'; + overallContainer.appendChild(statusContainer); + // buttonsContainer buttonsContainer = document.createElement('div'); buttonsContainer.classList.add('buttons-container'); @@ -59,6 +71,24 @@ const initGame = () => { // output.setAttribute('for', 'quantity'); // inputContainer.appendChild(output); + // create bet one button + betOneBtn = document.createElement('button'); + betOneBtn.classList.add('btn', 'betOneBtn'); + betOneBtn.innerText = 'Bet One'; + buttonsContainer.appendChild(betOneBtn); + + // create bet five button + betFiveBtn = document.createElement('button'); + betFiveBtn.classList.add('btn', 'betFiveBtn'); + betFiveBtn.innerText = 'Bet Five'; + buttonsContainer.appendChild(betFiveBtn); + + // create deal cards button + dealCardsBtn = document.createElement('button'); + dealCardsBtn.innerText = 'Deal Cards'; + dealCardsBtn.classList.add('btn-deal-cards', 'btn'); + buttonsContainer.appendChild(dealCardsBtn); + // create swap cards button swapCardsBtn = document.createElement('button'); swapCardsBtn.innerText = 'Swap Cards'; @@ -81,9 +111,6 @@ const initGame = () => { // document.addEventListener('DOMContentLoaded', function () { // outputDefaultState(); // }); - - // creates deal cards button - dealCardBtn(); - swapCards(); }; + initGame(); From 8c31487f7fb2b74a1d0627b45f6b2dbd7425b338 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Mon, 20 Dec 2021 21:26:57 +0800 Subject: [PATCH 31/54] changed gameContainer and btn styling --- styles.css | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/styles.css b/styles.css index c8370bb8..c73dad5d 100644 --- a/styles.css +++ b/styles.css @@ -5,7 +5,7 @@ } body { - background-color: lightgreen; + background-color: lightgrey; } .overall-container { @@ -17,6 +17,7 @@ body { .section { display: flex; + align-items: center; justify-content: center; padding: 10px; margin: 20px auto; @@ -24,9 +25,14 @@ body { border: 1px solid black; } +.game-container { + height: 125px; +} + .btn { - border-radius: 20%; + /* border-radius: 20%; */ border: 2px solid red; + cursor: pointer; } .input-container { From fcc0154a09429f6c72097f2920880c5552ed72ea Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Mon, 20 Dec 2021 21:27:23 +0800 Subject: [PATCH 32/54] add royal flush to testing --- testHands.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/testHands.js b/testHands.js index 0c84192b..9995f81e 100644 --- a/testHands.js +++ b/testHands.js @@ -1,9 +1,9 @@ const playerHand = [ - { rank: 5, suit: 'hearts', name: '2' }, - { rank: 4, suit: 'hearts', name: '2' }, - { rank: 2, suit: 'hearts', name: '2' }, - { rank: 2, suit: 'hearts', name: '2' }, - { rank: 2, suit: 'hearts', name: '2' }, + { rank: 13, suit: 'hearts', name: '2' }, + { rank: 12, suit: 'hearts', name: '2' }, + { rank: 11, suit: 'hearts', name: '2' }, + { rank: 10, suit: 'hearts', name: '2' }, + { rank: 1, suit: 'hearts', name: '2' }, ]; // calcHandScore returns the number of points a given hand earns. From 56255fe7a15d32d18f4a00d688d3231db06e49f8 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Mon, 20 Dec 2021 21:58:17 +0800 Subject: [PATCH 33/54] fix logic flow for buttons --- script.js | 35 ++++++++--------------------------- 1 file changed, 8 insertions(+), 27 deletions(-) diff --git a/script.js b/script.js index 8110f259..3b52e865 100644 --- a/script.js +++ b/script.js @@ -22,7 +22,7 @@ let pairs = 0; let credits = 100; let deck = []; -// An object that contains the point / score system of the game +// An object that contains the points system of the game const comboPoints = { royalFlush: [250, 500, 750, 1000, 4000], straightFlush: [50, 100, 150, 200, 250], @@ -41,21 +41,20 @@ const comboPoints = { // game calculates the hand score upon dealt of first hand DONE // function that adds card in a loop and adds a click element to change cards. DONE // create status box to track: credits DONE -// add royal flush +// add royal flush DONE // come up with point system // game calculates the handscore, and update total points. // add output container instructions, output final combo. +/////////////////////////////////// +// Calculate handscore functions // +/////////////////////////////////// + /** * function that sums returns the sum of the playing hand * @param {array} cardHand the user's current playing hand - * @returns {number} sum of scores from the user's playing hand */ -////////////////////////////////// -// Calculate Handscore function // -////////////////////////////////// - const calcHandScore = (cardHand) => { // 1 pair DONE // 2 pair DONE @@ -77,23 +76,6 @@ const calcHandScore = (cardHand) => { checkIfHitCombo(); // logs the combo hit in console }; -// const checkForFiveOfAKind = (cardHand) => { -// let counter = 0; -// // iterate through the userHand or savedCardArray -// for (const [i, { rank, suit }] of Object.entries(cardHand)) { -// let index = Number(i); -// // check for 5 of a kind -// if (rank === cardHand[0].rank) { -// counter += 1; -// if (counter === 5) { -// console.log(`5 of a kind!`); -// counter = 0; -// fiveOfAKind = 1; -// } -// } -// } -// }; - const checkForRoyalFlush = (cardHand) => { // check if suits are the same let rank = cardHand.rank; @@ -124,7 +106,6 @@ const checkForRoyalFlush = (cardHand) => { } } if ((ace, king, queen, jack, numTen === 1)) { - console.log('royal flush'); royalFlush = 1; } } @@ -184,7 +165,7 @@ const quadsThriplesPairsFullHouse = (cardHand) => { cardTally[rank] = 1; } } - console.log(cardTally); + // console.log(cardTally); let card4x = false; let card3x = false; @@ -243,7 +224,7 @@ const updateCredits = () => { const checkIfHitCombo = () => { console.log( - `fiveOfAKind: ${fiveOfAKind}, royalFlush: ${royalFlush}, straightFlush: ${straightFlush}, quads: ${quads}, fullHouse: ${fullHouse}, straights: ${straights}, flush: ${flush}, thriples: ${thriples}, 2xPairs: ${doublePairs}, pairs: ${pairs}` + `FIVEOFAKIND: ${fiveOfAKind}, ROYALFLUSH: ${royalFlush}, STRAIGHTFLUSH: ${straightFlush}, QUADS: ${quads}, FULLHOUSE: ${fullHouse}, STRAIGHTS: ${straights}, FLUSH: ${flush}, THRIPLES: ${thriples}, 2xPAIRS: ${doublePairs}, 1xPAIRS: ${pairs}` ); }; From cc68eef7c9acd71d004706f1abe78c6fed606ca8 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Mon, 20 Dec 2021 22:34:32 +0800 Subject: [PATCH 34/54] used an object to hold data for combos met --- script.js | 82 +++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 55 insertions(+), 27 deletions(-) diff --git a/script.js b/script.js index 3b52e865..c8c63706 100644 --- a/script.js +++ b/script.js @@ -7,17 +7,26 @@ let gameMode = 'bet'; let betAmount = 0; -// combinations met -let fiveOfAKind = 0; -let royalFlush = 0; -let straightFlush = 0; -let quads = 0; -let fullHouse = 0; -let straights = 0; -let flush = 0; -let thriples = 0; -let doublePairs = 0; -let pairs = 0; +const combosMet = { + royalFlush: 0, + straightFlush: 0, + quads: 0, + fullHouse: 0, + straights: 0, + flush: 0, + thriples: 0, + doublePairs: 0, + pairs: 0, +}; + +const bestComboAchieved = () => { + for (let [combo, j] of Object.entries(combosMet)) { + if (j === 1) { + console.log(combo); + break; + } + } +}; let credits = 100; let deck = []; @@ -64,7 +73,7 @@ const calcHandScore = (cardHand) => { // full house DONE // 4 of a kind DONE // straight flush DONE - // royal flush DOING + // royal flush DONE // 5 of a kind checkForStraight(cardHand); @@ -86,7 +95,7 @@ const checkForRoyalFlush = (cardHand) => { let jack = 0; let numTen = 0; - if (flush === 1) { + if (combosMet.flush === 1) { // check if A, K, J, 10, 9 are in the hand (bruteforce) for (let [i, { rank }] of Object.entries(cardHand)) { if (rank === 1) { @@ -105,8 +114,8 @@ const checkForRoyalFlush = (cardHand) => { numTen = 1; } } - if ((ace, king, queen, jack, numTen === 1)) { - royalFlush = 1; + if (ace === 1 && king === 1 && queen === 1 && jack === 1 && numTen === 1) { + combosMet.royalFlush = 1; } } }; @@ -114,8 +123,8 @@ const checkForRoyalFlush = (cardHand) => { const checkForStraightFlush = (cardHand) => { // check if straight and flush are true; - if (straights === 1 && flush === 1) { - straightFlush = 1; + if (combosMet.straights === 1 && combosMet.flush === 1) { + combosMet.straightFlush = 1; } }; @@ -131,7 +140,7 @@ const checkForFlush = (cardHand) => { } } if (Object.keys(suitTally).length === 1) { - flush = 1; + combosMet.flush = 1; return true; } }; @@ -150,7 +159,7 @@ const checkForStraight = (cardHand) => { if (sortedHand[i].rank - sortedHand[i + 1].rank === 1) { counter += 1; if (counter === 4) { - straights = 1; + combosMet.straights = 1; } } } @@ -182,7 +191,7 @@ const quadsThriplesPairsFullHouse = (cardHand) => { card2x = true; counterForPairs += 1; if (counterForPairs === 2) { - doublePairs = 1; + combosMet.doublePairs = 1; } } if (j === 3) { @@ -194,13 +203,13 @@ const quadsThriplesPairsFullHouse = (cardHand) => { } // } if (card4x === true) { - quads = 1; + combosMet.quads = 1; } else if (card3x2x === true) { - fullHouse = 1; + combosMet.fullHouse = 1; } else if (card3x === true) { - thriples = 1; + combosMet.thriples = 1; } else if (card2x === true) { - pairs = 1; + combosMet.pairs = 1; } // console.log( // `card4x: ${card4x}, card3x: ${card3x}, card2x: ${card2x}, card3x2x: ${card3x2x}` @@ -214,6 +223,24 @@ const quadsThriplesPairsFullHouse = (cardHand) => { // points system DOING // based on the bet amount, iterate on nth value in the object "comboPoints" and add that value to the credits. +const calcPointsToAdd = () => { + // check betAmount + // check which is the highest combo attained +}; + +/* +let fiveOfAKind = 0; +let royalFlush = 0; +let straightFlush = 0; +let quads = 0; +let fullHouse = 0; +let straights = 0; +let flush = 0; +let thriples = 0; +let doublePairs = 0; +let pairs = 0; +*/ + /** * function to update credits in HTML */ @@ -223,9 +250,10 @@ const updateCredits = () => { }; const checkIfHitCombo = () => { - console.log( - `FIVEOFAKIND: ${fiveOfAKind}, ROYALFLUSH: ${royalFlush}, STRAIGHTFLUSH: ${straightFlush}, QUADS: ${quads}, FULLHOUSE: ${fullHouse}, STRAIGHTS: ${straights}, FLUSH: ${flush}, THRIPLES: ${thriples}, 2xPAIRS: ${doublePairs}, 1xPAIRS: ${pairs}` - ); + // console.log( + // `FIVEOFAKIND: ${fiveOfAKind}, ROYALFLUSH: ${royalFlush}, STRAIGHTFLUSH: ${straightFlush}, QUADS: ${quads}, FULLHOUSE: ${fullHouse}, STRAIGHTS: ${straights}, FLUSH: ${flush}, THRIPLES: ${thriples}, 2xPAIRS: ${doublePairs}, 1xPAIRS: ${pairs}` + // ); + console.log(combosMet); }; /** From efaa9273255a55a4f4aa4ee4e34cbb7d5822c732 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Mon, 20 Dec 2021 23:44:36 +0800 Subject: [PATCH 35/54] add logic to calc points to add & display to HTML --- script.js | 85 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 44 insertions(+), 41 deletions(-) diff --git a/script.js b/script.js index c8c63706..84905610 100644 --- a/script.js +++ b/script.js @@ -5,27 +5,19 @@ let savedCardsArray = []; let userHand = []; let gameMode = 'bet'; -let betAmount = 0; +let betAmount = 4; const combosMet = { royalFlush: 0, straightFlush: 0, quads: 0, fullHouse: 0, - straights: 0, flush: 0, + straights: 0, thriples: 0, - doublePairs: 0, + twoPair: 0, pairs: 0, -}; - -const bestComboAchieved = () => { - for (let [combo, j] of Object.entries(combosMet)) { - if (j === 1) { - console.log(combo); - break; - } - } + highCard: 1, }; let credits = 100; @@ -35,12 +27,14 @@ let deck = []; const comboPoints = { royalFlush: [250, 500, 750, 1000, 4000], straightFlush: [50, 100, 150, 200, 250], - fourOfAKind: [25, 50, 75, 100, 125], + quads: [25, 50, 75, 100, 125], fullHouse: [9, 18, 27, 36, 45], flush: [6, 12, 18, 24, 30], - straight: [4, 8, 12, 16, 20], - threeOfAKind: [3, 6, 9, 12, 15], + straights: [4, 8, 12, 16, 20], + thriples: [3, 6, 9, 12, 15], twoPair: [2, 4, 6, 8, 10], + pairs: [0, 0, 0, 0, 0], + highCard: [0, 0, 0, 0, 0], }; // TODO @@ -51,9 +45,10 @@ const comboPoints = { // function that adds card in a loop and adds a click element to change cards. DONE // create status box to track: credits DONE // add royal flush DONE -// come up with point system -// game calculates the handscore, and update total points. -// add output container instructions, output final combo. +// come up with point system DONE +// game calculates the handscore, and update total points. DONE +// add output container instructions, output final combo. DOING +// CSS /////////////////////////////////// // Calculate handscore functions // @@ -120,7 +115,7 @@ const checkForRoyalFlush = (cardHand) => { } }; -const checkForStraightFlush = (cardHand) => { +const checkForStraightFlush = () => { // check if straight and flush are true; if (combosMet.straights === 1 && combosMet.flush === 1) { @@ -174,7 +169,7 @@ const quadsThriplesPairsFullHouse = (cardHand) => { cardTally[rank] = 1; } } - // console.log(cardTally); + console.log(cardTally); let card4x = false; let card3x = false; @@ -184,6 +179,7 @@ const quadsThriplesPairsFullHouse = (cardHand) => { // for (const i of Object.keys(cardTally)) { let counterForPairs = 0; for (const j of Object.values(cardTally)) { + console.log(j); if (j === 4) { card4x = true; } @@ -191,7 +187,7 @@ const quadsThriplesPairsFullHouse = (cardHand) => { card2x = true; counterForPairs += 1; if (counterForPairs === 2) { - combosMet.doublePairs = 1; + combosMet.twoPair = 1; } } if (j === 3) { @@ -220,39 +216,46 @@ const quadsThriplesPairsFullHouse = (cardHand) => { // helper functions // ////////////////////// -// points system DOING -// based on the bet amount, iterate on nth value in the object "comboPoints" and add that value to the credits. +/** + * function to check the highest ranked combo attained + * @returns the highest combo + */ +const bestComboAchieved = () => { + for (let [combo, j] of Object.entries(combosMet)) { + if (j === 1) { + return combo; + } + } +}; +// points system +// based on the bet amount, iterate on nth value in the object "comboPoints" and add that value to the credits. const calcPointsToAdd = () => { - // check betAmount // check which is the highest combo attained -}; + const bestCombo = bestComboAchieved(); -/* -let fiveOfAKind = 0; -let royalFlush = 0; -let straightFlush = 0; -let quads = 0; -let fullHouse = 0; -let straights = 0; -let flush = 0; -let thriples = 0; -let doublePairs = 0; -let pairs = 0; -*/ + // check betAmount + const bet = betAmount - 1; + + // search the comboPoints object using combo name and betAmount as the array index + const pointsToAdd = comboPoints[bestCombo][bet]; + // console.log(bestCombo); + // console.log(pointsToAdd); + + // updates credits with winnings + credits += pointsToAdd; + return pointsToAdd; +}; /** * function to update credits in HTML */ -const updateCredits = () => { +const updateCredits = (points) => { const creditsContainer = document.querySelector('.status-container'); creditsContainer.innerText = `Total Credits: ${credits}`; }; const checkIfHitCombo = () => { - // console.log( - // `FIVEOFAKIND: ${fiveOfAKind}, ROYALFLUSH: ${royalFlush}, STRAIGHTFLUSH: ${straightFlush}, QUADS: ${quads}, FULLHOUSE: ${fullHouse}, STRAIGHTS: ${straights}, FLUSH: ${flush}, THRIPLES: ${thriples}, 2xPAIRS: ${doublePairs}, 1xPAIRS: ${pairs}` - // ); console.log(combosMet); }; From 629b842138bdbd1ffe71b1fb8a10b65f5402473f Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Mon, 20 Dec 2021 23:44:49 +0800 Subject: [PATCH 36/54] edit testHands --- testHands.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/testHands.js b/testHands.js index 9995f81e..8bca602a 100644 --- a/testHands.js +++ b/testHands.js @@ -1,10 +1,9 @@ const playerHand = [ + { rank: 5, suit: 'hearts', name: '2' }, { rank: 13, suit: 'hearts', name: '2' }, - { rank: 12, suit: 'hearts', name: '2' }, - { rank: 11, suit: 'hearts', name: '2' }, - { rank: 10, suit: 'hearts', name: '2' }, - { rank: 1, suit: 'hearts', name: '2' }, + { rank: 3, suit: 'hearts', name: '2' }, + { rank: 6, suit: 'hearts', name: '2' }, + { rank: 6, suit: 'hearts', name: '2' }, ]; -// calcHandScore returns the number of points a given hand earns. const pointsForHand = calcHandScore(playerHand); From 8533735199f2da62bcf1d02e69596f34fbee783f Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Mon, 20 Dec 2021 23:45:31 +0800 Subject: [PATCH 37/54] add func to update credits upon 'swap cards' click --- eventListeners.js | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/eventListeners.js b/eventListeners.js index 11c8f4b8..f4d73462 100644 --- a/eventListeners.js +++ b/eventListeners.js @@ -2,11 +2,13 @@ * function to bet one credit */ betOneBtn.addEventListener('click', () => { - if (gameMode === 'bet') { - credits -= 1; - betAmount += 1; - updateCredits(); - if (betAmount >= 5) { + if (gameMode === 'bet' || gameMode === 'deal') { + if (betAmount < 5) { + credits -= 1; + betAmount += 1; + updateCredits(); + } + if (betAmount === 5) { gameMode = 'deal'; } } @@ -18,7 +20,7 @@ betOneBtn.addEventListener('click', () => { betFiveBtn.addEventListener('click', () => { if (gameMode === 'bet') { credits -= 5; - betAmount += 5; + betAmount = 5; updateCredits(); gameMode = 'deal'; } @@ -60,9 +62,9 @@ dealCardsBtn.addEventListener('click', () => { }); gameContainer.appendChild(cardEl); } - calcHandScore(userHand); + // calcHandScore(userHand); + gameMode = 'swap'; } - gameMode = 'swap'; }); /** @@ -91,5 +93,9 @@ swapCardsBtn.addEventListener('click', () => { calcHandScore(savedCardsArray); // empties savedCardsArray savedCardsArray = []; + // calculates credits & add them to credits + calcPointsToAdd(); + // updates credits in HTML + updateCredits(); } }); From e3be62f52555de0cbbc3a8374d6a8b26c2e48f37 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Mon, 20 Dec 2021 23:45:41 +0800 Subject: [PATCH 38/54] removed testhands from executing --- index.html | 1 - 1 file changed, 1 deletion(-) diff --git a/index.html b/index.html index 7cae432f..669fbc67 100644 --- a/index.html +++ b/index.html @@ -12,7 +12,6 @@ - From a6d794fea4cfe6c969aaafea3acab9d96182dc9e Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Tue, 21 Dec 2021 17:31:09 +0800 Subject: [PATCH 39/54] add default text --- eventListeners.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/eventListeners.js b/eventListeners.js index f4d73462..fd12df5f 100644 --- a/eventListeners.js +++ b/eventListeners.js @@ -2,28 +2,37 @@ * function to bet one credit */ betOneBtn.addEventListener('click', () => { + gameContainer.innerText = ''; if (gameMode === 'bet' || gameMode === 'deal') { if (betAmount < 5) { credits -= 1; betAmount += 1; updateCredits(); + outputContainer.innerText = 'Come on, you can bet more!'; + gameMode = 'deal'; } if (betAmount === 5) { gameMode = 'deal'; + outputContainer.innerText = "That's the way to play! Good luck! 😁"; } } + dealCardsBtn.disabled = false; }); /** * function to bet five credits */ betFiveBtn.addEventListener('click', () => { + gameContainer.innerText = ''; if (gameMode === 'bet') { credits -= 5; betAmount = 5; updateCredits(); gameMode = 'deal'; + outputContainer.innerText = + 'All the best to ya boss! 😎 Hit the DEAL button!'; } + dealCardsBtn.disabled = false; }); /** @@ -61,9 +70,14 @@ dealCardsBtn.addEventListener('click', () => { clickedTimes += 1; }); gameContainer.appendChild(cardEl); + outputContainer.innerText = + 'Looks good! Click on the cards you want to hold. ✋'; } // calcHandScore(userHand); gameMode = 'swap'; + betOneBtn.disabled = true; + betFiveBtn.disabled = true; + swapCardsBtn.disabled = false; } }); @@ -97,5 +111,10 @@ swapCardsBtn.addEventListener('click', () => { calcPointsToAdd(); // updates credits in HTML updateCredits(); + gameMode = 'bet'; } + betOneBtn.disabled = false; + betFiveBtn.disabled = false; + swapCardsBtn.disabled = true; + dealCardsBtn.disabled = true; }); From e94e4c3130473913c264ca7f1e54d996b17cce7f Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Tue, 21 Dec 2021 17:31:22 +0800 Subject: [PATCH 40/54] add default text --- init.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/init.js b/init.js index b8927c9d..09f484f6 100644 --- a/init.js +++ b/init.js @@ -21,21 +21,19 @@ const initGame = () => { // create card combination container cardComboContainer = document.createElement('div'); - cardComboContainer.innerText = - ' that shows all combination of cards.'; - cardComboContainer.classList.add('card-combintaion-container', 'section'); + cardComboContainer.innerText = 'VIDEO POKER'; + cardComboContainer.classList.add('card-combo-container', 'section'); overallContainer.appendChild(cardComboContainer); // create card display container gameContainer = document.createElement('div'); - gameContainer.innerText = ' that shows cards dealt to player.'; + gameContainer.innerText = ''; gameContainer.classList.add('game-container', 'section'); overallContainer.appendChild(gameContainer); // create output container outputContainer = document.createElement('div'); - outputContainer.innerText = - ' that gives instructions to player.'; + outputContainer.innerText = '💰PLACE YOUR BETS!💰'; outputContainer.classList.add('output-container', 'section'); overallContainer.appendChild(outputContainer); @@ -85,15 +83,17 @@ const initGame = () => { // create deal cards button dealCardsBtn = document.createElement('button'); - dealCardsBtn.innerText = 'Deal Cards'; - dealCardsBtn.classList.add('btn-deal-cards', 'btn'); + dealCardsBtn.innerText = 'DEAL'; + dealCardsBtn.classList.add('btn-deal-cards', 'btn', 'play'); buttonsContainer.appendChild(dealCardsBtn); + dealCardsBtn.disabled = true; // create swap cards button swapCardsBtn = document.createElement('button'); - swapCardsBtn.innerText = 'Swap Cards'; - swapCardsBtn.classList.add('btn-swap-cards', 'btn'); + swapCardsBtn.innerText = 'SWAP'; + swapCardsBtn.classList.add('btn-swap-cards', 'btn', 'play'); buttonsContainer.appendChild(swapCardsBtn); + swapCardsBtn.disabled = true; /** * Variables & functions that make the betting slider function From 5b9020f6f6b05b800754514ff3203c025ecf530c Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Tue, 21 Dec 2021 17:31:45 +0800 Subject: [PATCH 41/54] add text to display combo that won --- script.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/script.js b/script.js index 84905610..3bb155ba 100644 --- a/script.js +++ b/script.js @@ -5,7 +5,7 @@ let savedCardsArray = []; let userHand = []; let gameMode = 'bet'; -let betAmount = 4; +let betAmount = 0; const combosMet = { royalFlush: 0, @@ -48,7 +48,8 @@ const comboPoints = { // come up with point system DONE // game calculates the handscore, and update total points. DONE // add output container instructions, output final combo. DOING -// CSS + +// CSS DOING /////////////////////////////////// // Calculate handscore functions // @@ -228,12 +229,21 @@ const bestComboAchieved = () => { } }; -// points system -// based on the bet amount, iterate on nth value in the object "comboPoints" and add that value to the credits. +/** + * function that determines the amt of credits to add + * @returns the amt of credits to add to user's current pool + */ const calcPointsToAdd = () => { // check which is the highest combo attained const bestCombo = bestComboAchieved(); + // console.log(`bestCombo: ${bestCombo}`); + // outputs the relevant text to HTML based on combo + if (bestCombo === 'highCard' || bestCombo === 'pairs') { + outputContainer.innerText = 'Aww, try again for another chance to win! 💔'; + } else { + outputContainer.innerText = `You got ${bestCombo}, congrats! 🎉🍾🎊`; + } // check betAmount const bet = betAmount - 1; From a2541a92a491eb66be19ea76030b2049884bacbc Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Tue, 21 Dec 2021 17:32:03 +0800 Subject: [PATCH 42/54] add border / fonts --- styles.css | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/styles.css b/styles.css index c73dad5d..cfbd7183 100644 --- a/styles.css +++ b/styles.css @@ -5,18 +5,21 @@ } body { - background-color: lightgrey; + background-color: #736b5e; + font-family: monospace; + font-size: 1.15rem; } .overall-container { max-width: 600px; margin: 20px auto; padding: 10px; - border: 3px solid black; + /* border: 3px solid black; */ } .section { display: flex; + background-color: darkgrey; align-items: center; justify-content: center; padding: 10px; @@ -25,13 +28,26 @@ body { border: 1px solid black; } -.game-container { +.card-combo-container { + font-size: 3rem; height: 125px; + border: 3px solid darkred; +} + +.game-container { + height: 150px; + border: 3px solid orangered; +} + +.output-container { + height: 60px; + border: 3px solid yellow; } .btn { /* border-radius: 20%; */ - border: 2px solid red; + font-family: monospace; + /* border: 2px solid red; */ cursor: pointer; } @@ -44,6 +60,11 @@ body { justify-content: space-evenly; } +.status-container { + font-size: 1rem; + border: 3px solid goldenrod; +} + .card { display: inline-block; margin: 10px; From 31e89acaa1546a1499ef1913638fcc5e44c7fede Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Thu, 30 Dec 2021 14:15:53 +0800 Subject: [PATCH 43/54] add cardback img --- cardbacking.png | Bin 0 -> 235952 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 cardbacking.png diff --git a/cardbacking.png b/cardbacking.png new file mode 100644 index 0000000000000000000000000000000000000000..103e47badee92f2344110118488b325769090ad6 GIT binary patch literal 235952 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 z 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 Date: Thu, 30 Dec 2021 14:16:21 +0800 Subject: [PATCH 44/54] add image / highlight bets function --- eventListeners.js | 55 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/eventListeners.js b/eventListeners.js index fd12df5f..3140f9ff 100644 --- a/eventListeners.js +++ b/eventListeners.js @@ -3,6 +3,12 @@ */ betOneBtn.addEventListener('click', () => { gameContainer.innerText = ''; + gameContainer.appendChild(image0); + gameContainer.appendChild(image1); + gameContainer.appendChild(image2); + gameContainer.appendChild(image3); + gameContainer.appendChild(image4); + if (gameMode === 'bet' || gameMode === 'deal') { if (betAmount < 5) { credits -= 1; @@ -14,8 +20,39 @@ betOneBtn.addEventListener('click', () => { if (betAmount === 5) { gameMode = 'deal'; outputContainer.innerText = "That's the way to play! Good luck! 😁"; + betOneBtn.disabled = true; } } + // highlight the pointsBoard that corresponds to the betAmount + + let highLight0 = document.querySelector('.board0'); + let highLight1 = document.querySelector('.board1'); + let highLight2 = document.querySelector('.board2'); + let highLight3 = document.querySelector('.board3'); + let highLight4 = document.querySelector('.board4'); + + switch (betAmount) { + case 1: + highLight0.classList.add('highLightBoard'); + break; + case 2: + highLight0.classList.remove('highLightBoard'); + highLight1.classList.add('highLightBoard'); + break; + case 3: + highLight1.classList.remove('highLightBoard'); + highLight2.classList.add('highLightBoard'); + break; + case 4: + highLight2.classList.remove('highLightBoard'); + highLight3.classList.add('highLightBoard'); + break; + case 5: + highLight3.classList.remove('highLightBoard'); + highLight4.classList.add('highLightBoard'); + break; + } + dealCardsBtn.disabled = false; }); @@ -24,15 +61,25 @@ betOneBtn.addEventListener('click', () => { */ betFiveBtn.addEventListener('click', () => { gameContainer.innerText = ''; + gameContainer.appendChild(image0); + gameContainer.appendChild(image1); + gameContainer.appendChild(image2); + gameContainer.appendChild(image3); + gameContainer.appendChild(image4); if (gameMode === 'bet') { credits -= 5; betAmount = 5; updateCredits(); gameMode = 'deal'; - outputContainer.innerText = - 'All the best to ya boss! 😎 Hit the DEAL button!'; + outputContainer.innerText = 'All the best to ya boss! 😎'; } + + let highlight4 = document.querySelector('.board4'); + highlight4.classList.add('highLightBoard'); + dealCardsBtn.disabled = false; + betFiveBtn.disabled = true; + betOneBtn.disabled = true; }); /** @@ -78,6 +125,7 @@ dealCardsBtn.addEventListener('click', () => { betOneBtn.disabled = true; betFiveBtn.disabled = true; swapCardsBtn.disabled = false; + dealCardsBtn.disabled = true; } }); @@ -117,4 +165,7 @@ swapCardsBtn.addEventListener('click', () => { betFiveBtn.disabled = false; swapCardsBtn.disabled = true; dealCardsBtn.disabled = true; + + gameContainer.style.fontSize = '1.5rem'; + gameContainer.innerHTML = 'Start betting to play again!'; }); From ba4462f8614cddc0eab93572677ee8218bb79988 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Thu, 30 Dec 2021 14:16:48 +0800 Subject: [PATCH 45/54] add images into when init --- init.js | 67 ++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 45 insertions(+), 22 deletions(-) diff --git a/init.js b/init.js index 09f484f6..65c97be8 100644 --- a/init.js +++ b/init.js @@ -13,6 +13,18 @@ let dealCardsBtn; let output; let input; +// add images +const image0 = document.createElement('img'); +const image1 = document.createElement('img'); +const image2 = document.createElement('img'); +const image3 = document.createElement('img'); +const image4 = document.createElement('img'); +image0.src = 'cardbacking.png'; +image1.src = 'cardbacking.png'; +image2.src = 'cardbacking.png'; +image3.src = 'cardbacking.png'; +image4.src = 'cardbacking.png'; + const initGame = () => { // create overall container overallContainer = document.createElement('div'); @@ -21,13 +33,13 @@ const initGame = () => { // create card combination container cardComboContainer = document.createElement('div'); - cardComboContainer.innerText = 'VIDEO POKER'; + // cardComboContainer.innerText = 'VIDEO POKER'; cardComboContainer.classList.add('card-combo-container', 'section'); overallContainer.appendChild(cardComboContainer); // create card display container gameContainer = document.createElement('div'); - gameContainer.innerText = ''; + gameContainer.innerHTML = '♥♦ Video Poker ♠♣'; gameContainer.classList.add('game-container', 'section'); overallContainer.appendChild(gameContainer); @@ -49,26 +61,6 @@ const initGame = () => { buttonsContainer.classList.add('buttons-container'); overallContainer.appendChild(buttonsContainer); - // // create input container, bet input and submit - // inputContainer = document.createElement('div'); - // inputContainer.classList.add('input-container'); - // buttonsContainer.appendChild(inputContainer); - - /** removed input slider */ - // bet input slider - // input = document.createElement('input'); - // input.type = 'range'; - // input.name = 'quantity'; - // input.classList.add('input-bet'); - // input.min = 0; - // input.max = 100; - // inputContainer.appendChild(input); - // // output for slider - // output = document.createElement('output'); - // output.classList.add('output'); - // output.setAttribute('for', 'quantity'); - // inputContainer.appendChild(output); - // create bet one button betOneBtn = document.createElement('button'); betOneBtn.classList.add('btn', 'betOneBtn'); @@ -101,6 +93,37 @@ const initGame = () => { const rangeInput = document.querySelector('.input-bet'); const rangeOutput = document.querySelector('.output'); + // add scoreBoard & card names DOING + const scoreBoardName = document.createElement('div'); + scoreBoardName.classList.add('score-board', 'hand'); + // scoreBoardName.innerText = 'Video Poker'; + scoreBoardName.innerHTML = + 'Royal Flush
Straight Flush
Four of a Kind
Full House
Flush
Straight
Three of a Kind
Two Pair'; + cardComboContainer.appendChild(scoreBoardName); + const scoreBoard = document.createElement('div'); + scoreBoard.classList.add('score-board'); + + ////////////////INPUT SLIDER (DEPRECIATED) + // // create input container, bet input and submit + // inputContainer = document.createElement('div'); + // inputContainer.classList.add('input-container'); + // buttonsContainer.appendChild(inputContainer); + + /** removed input slider */ + // bet input slider + // input = document.createElement('input'); + // input.type = 'range'; + // input.name = 'quantity'; + // input.classList.add('input-bet'); + // input.min = 0; + // input.max = 100; + // inputContainer.appendChild(input); + // // output for slider + // output = document.createElement('output'); + // output.classList.add('output'); + // output.setAttribute('for', 'quantity'); + // inputContainer.appendChild(output); + /** logic for input slider */ // const outputDefaultState = () => { // rangeOutput.value = rangeInput.value; From ba423623d1846ecb15ea455eccc6b56990bedebe Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Thu, 30 Dec 2021 14:17:19 +0800 Subject: [PATCH 46/54] add pointsBoard and cleaned up comments / code --- script.js | 66 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 26 deletions(-) diff --git a/script.js b/script.js index 3bb155ba..407fbc23 100644 --- a/script.js +++ b/script.js @@ -37,20 +37,6 @@ const comboPoints = { highCard: [0, 0, 0, 0, 0], }; -// TODO -// clicks a button to deal cards DONE -// user selects which card to keep DONE -// --> cards get saved to savedCardsArray when clicked. Need to create a function that replaces the unclicked cards DONE -// game calculates the hand score upon dealt of first hand DONE -// function that adds card in a loop and adds a click element to change cards. DONE -// create status box to track: credits DONE -// add royal flush DONE -// come up with point system DONE -// game calculates the handscore, and update total points. DONE -// add output container instructions, output final combo. DOING - -// CSS DOING - /////////////////////////////////// // Calculate handscore functions // /////////////////////////////////// @@ -61,17 +47,6 @@ const comboPoints = { */ const calcHandScore = (cardHand) => { - // 1 pair DONE - // 2 pair DONE - // 3 of a kind DONE - // straight DONE - // flush DONE - // full house DONE - // 4 of a kind DONE - // straight flush DONE - // royal flush DONE - // 5 of a kind - checkForStraight(cardHand); checkForFlush(cardHand); checkForRoyalFlush(cardHand); @@ -170,7 +145,7 @@ const quadsThriplesPairsFullHouse = (cardHand) => { cardTally[rank] = 1; } } - console.log(cardTally); + // console.log(cardTally); let card4x = false; let card3x = false; @@ -213,6 +188,43 @@ const quadsThriplesPairsFullHouse = (cardHand) => { // ); }; +/* +const comboPoints = { + royalFlush: [250, 500, 750, 1000, 4000], + straightFlush: [50, 100, 150, 200, 250], + quads: [25, 50, 75, 100, 125], + fullHouse: [9, 18, 27, 36, 45], + flush: [6, 12, 18, 24, 30], + straights: [4, 8, 12, 16, 20], + thriples: [3, 6, 9, 12, 15], + twoPair: [2, 4, 6, 8, 10], + pairs: [0, 0, 0, 0, 0], + highCard: [0, 0, 0, 0, 0], +}; */ + +/////////////////////// +// create scoreboard // DOING +/////////////////////// +// create 5 boxes with scores for each bet (1-5). +let index = 0; +for (let i = 0; i < 5; i += 1) { + // create a div for each bet amt + const pointsBoard = document.createElement('div'); + pointsBoard.classList.add('pointsBoard', `board${index}`); + cardComboContainer.appendChild(pointsBoard); + // iterate through the comboPoints obj + for (const [comboName, points] of Object.entries(comboPoints)) { + // skip iteration of pairs and highcard in comboPoints + if (comboName === 'pairs' || comboName === 'highCard') { + } else { + // add the points of that combo to the div + let pointsDisplay = points[index]; + pointsBoard.innerHTML += `${pointsDisplay}
`; + } + } + index += 1; +} + ////////////////////// // helper functions // ////////////////////// @@ -223,7 +235,9 @@ const quadsThriplesPairsFullHouse = (cardHand) => { */ const bestComboAchieved = () => { for (let [combo, j] of Object.entries(combosMet)) { + // check against combosMet obj in high to low rank if (j === 1) { + // if any combo === 1, returns that combo return combo; } } From dff2245c85e972d3e5615664f9f1d666efdad0ba Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Thu, 30 Dec 2021 14:17:51 +0800 Subject: [PATCH 47/54] add poker table / changed fonts and sizing --- styles.css | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/styles.css b/styles.css index cfbd7183..66afb8d9 100644 --- a/styles.css +++ b/styles.css @@ -29,26 +29,38 @@ body { } .card-combo-container { - font-size: 3rem; - height: 125px; + font-size: 1.2rem; /* changed from 3rem */ + height: 250px; /* changed from 150px */ border: 3px solid darkred; + justify-content: space-around; + font-weight: bold; } .game-container { - height: 150px; - border: 3px solid orangered; + height: 250px; + /* width: 500px; */ + background-color: darkgreen; + border-radius: 150px; + font-size: 3rem; + color: darkorange; + text-align: center; } .output-container { height: 60px; - border: 3px solid yellow; + /* border: 3px solid darkred; */ } +/* +.score-board { + border: 3px solid orange; +} */ .btn { /* border-radius: 20%; */ font-family: monospace; - /* border: 2px solid red; */ cursor: pointer; + width: 90px; + height: 45px; } .input-container { @@ -62,7 +74,7 @@ body { .status-container { font-size: 1rem; - border: 3px solid goldenrod; + /* border: 3px solid darkred; */ } .card { @@ -103,3 +115,13 @@ body { .card:hover { border: 3px solid orange; } + +.highLightBoard { + color: red; +} + +img { + width: 50px; + border-radius: 5px; + margin: 10px; +} From d579e66323ab6d9d29bbdf0aad569e5b340b8210 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Thu, 30 Dec 2021 14:19:53 +0800 Subject: [PATCH 48/54] adjust for mobile display --- styles.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/styles.css b/styles.css index 66afb8d9..59e4481e 100644 --- a/styles.css +++ b/styles.css @@ -29,11 +29,11 @@ body { } .card-combo-container { - font-size: 1.2rem; /* changed from 3rem */ + font-size: 1.1rem; /* changed from 3rem */ height: 250px; /* changed from 150px */ border: 3px solid darkred; justify-content: space-around; - font-weight: bold; + /* font-weight: bold; */ } .game-container { From 3b805a9c9c07f1caf2ceb8ad226c40f787e90513 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Thu, 30 Dec 2021 14:25:37 +0800 Subject: [PATCH 49/54] change btn font --- styles.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/styles.css b/styles.css index 59e4481e..c0a0ce74 100644 --- a/styles.css +++ b/styles.css @@ -61,6 +61,8 @@ body { cursor: pointer; width: 90px; height: 45px; + font-weight: bold; + font-size: 1rem; } .input-container { From 9ec0011c1ddb89210c16f5d6232c06d092d8f832 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Thu, 30 Dec 2021 14:27:20 +0800 Subject: [PATCH 50/54] disable 'betfive' btn when reach max bet of 5 --- eventListeners.js | 1 + 1 file changed, 1 insertion(+) diff --git a/eventListeners.js b/eventListeners.js index 3140f9ff..a7b7c374 100644 --- a/eventListeners.js +++ b/eventListeners.js @@ -21,6 +21,7 @@ betOneBtn.addEventListener('click', () => { gameMode = 'deal'; outputContainer.innerText = "That's the way to play! Good luck! 😁"; betOneBtn.disabled = true; + betFiveBtn.disabled = true; } } // highlight the pointsBoard that corresponds to the betAmount From 7e246932784f087a5990578771108b9532f7d195 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Thu, 30 Dec 2021 15:44:51 +0800 Subject: [PATCH 51/54] edit text for game --- eventListeners.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eventListeners.js b/eventListeners.js index a7b7c374..d0fbad40 100644 --- a/eventListeners.js +++ b/eventListeners.js @@ -14,7 +14,7 @@ betOneBtn.addEventListener('click', () => { credits -= 1; betAmount += 1; updateCredits(); - outputContainer.innerText = 'Come on, you can bet more!'; + outputContainer.innerText = 'Come on, you can bet more! 💸'; gameMode = 'deal'; } if (betAmount === 5) { From 8097ff1e3ac15f90df6318a0fda469ff57ab73c4 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Tue, 4 Jan 2022 11:56:08 +0800 Subject: [PATCH 52/54] removed BetFiveBtn when BetOneBtn is clicked --- eventListeners.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eventListeners.js b/eventListeners.js index d0fbad40..4b9dcf48 100644 --- a/eventListeners.js +++ b/eventListeners.js @@ -16,6 +16,7 @@ betOneBtn.addEventListener('click', () => { updateCredits(); outputContainer.innerText = 'Come on, you can bet more! 💸'; gameMode = 'deal'; + betFiveBtn.disabled = true; } if (betAmount === 5) { gameMode = 'deal'; @@ -24,8 +25,8 @@ betOneBtn.addEventListener('click', () => { betFiveBtn.disabled = true; } } - // highlight the pointsBoard that corresponds to the betAmount + // highlight the pointsBoard that corresponds to the betAmount let highLight0 = document.querySelector('.board0'); let highLight1 = document.querySelector('.board1'); let highLight2 = document.querySelector('.board2'); From 4c03f2b88d1ef5fdccbe721e97c399cac7d264d8 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Tue, 4 Jan 2022 13:28:02 +0800 Subject: [PATCH 53/54] bugfix --- eventListeners.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eventListeners.js b/eventListeners.js index 4b9dcf48..afef66bf 100644 --- a/eventListeners.js +++ b/eventListeners.js @@ -169,5 +169,5 @@ swapCardsBtn.addEventListener('click', () => { dealCardsBtn.disabled = true; gameContainer.style.fontSize = '1.5rem'; - gameContainer.innerHTML = 'Start betting to play again!'; + // gameContainer.innerHTML = 'Start betting to play again!'; }); From 55a39c6e729f72a273726ddc17e57505551ef801 Mon Sep 17 00:00:00 2001 From: kennethongcs Date: Tue, 11 Jan 2022 17:08:37 +0800 Subject: [PATCH 54/54] removed redundant comments --- script.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/script.js b/script.js index 407fbc23..5eb44ab2 100644 --- a/script.js +++ b/script.js @@ -25,6 +25,7 @@ let deck = []; // An object that contains the points system of the game const comboPoints = { + // do differently royalFlush: [250, 500, 750, 1000, 4000], straightFlush: [50, 100, 150, 200, 250], quads: [25, 50, 75, 100, 125], @@ -47,6 +48,7 @@ const comboPoints = { */ const calcHandScore = (cardHand) => { + // biggest challenge faced checkForStraight(cardHand); checkForFlush(cardHand); checkForRoyalFlush(cardHand); @@ -203,9 +205,9 @@ const comboPoints = { }; */ /////////////////////// -// create scoreboard // DOING +// create scoreboard // /////////////////////// -// create 5 boxes with scores for each bet (1-5). +// create 5 boxes with scores for each bet (1-5). // what went well let index = 0; for (let i = 0; i < 5; i += 1) { // create a div for each bet amt