<html>

<head>
    <title>JavaScript</title>
    <style>
        .hideButton {
            display: none;
        }
        
        .score {
            display: inline-block;
        }
        
        .card {
            position: absolute;
            left: 0;
            top: 80px;
            display: inline-block;
            margin: 5px 0;
            padding: 7px;
            height: 90px;
            width: 70px;
            background-color: whitesmoke;
            border: 1px solid black;
            border-radius: 5px;
            box-shadow: 5px 10px #333;
        }
        
        .big {
            font-size: 3em;
            text-align: center;
            line-height: 40px;
            margin: auto;
            display: block;
        }
        
        .red {
            color: red;
        }
        
        .tiny {
            display: block;
            font-size: 0.8em;
            line-height: 8px;
            vertical-align: top;
        }
    </style>
</head>

<body>
    <div>Streak:
        <div class="score">0</div>
    </div>
    <div class="message">Click to Start</div>
    <div class="gameplay"></div>
    <button type="button">Start</button>
    <button type="button" class="hideButton">Higher</button>
    <button type="button" class="hideButton">Lower</button>
    <script>
        const message = document.querySelector(".message");
        const score = document.querySelector(".score");
        const button = document.querySelectorAll("button");
        const gameplay = document.querySelector(".gameplay");
        let curCardValue = 0;
        let scoreValue = 0;
        let deck = [];
        const ranks = [2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A"];
        const suits = ["hearts", "diams", "clubs", "spades"];
        for (let i = 0; i < button.length; i++) {
            button[i].addEventListener("click", playGame);
        }

        function toggleButtons() {
            button[0].classList.toggle("hideButton");
            button[1].classList.toggle("hideButton");
            button[2].classList.toggle("hideButton");
        }

        function playGame(e) {
            let temp = e.target.innerText;
            let myCard = drawCard();
            if (temp == "Start") {
                message.innerHTML = "Higher or Lower";
                gameplay.innerHTML = "";
                makeCard(myCard);
                toggleButtons();
                return;
            }
            if (myCard.value == curCardValue) {
                message.innerHTML = "Draw";
            }
            else {
                if ((temp == "Higher" && (myCard.value > curCardValue)) || (temp == "Lower" && (myCard.value < curCardValue))) {
                    scoreValue++;
                    score.innerHTML = scoreValue;
                    message.innerHTML = "Correct, Next?";
                }
                else {
                    message.innerHTML = "Wrong Game Over";
                    toggleButtons();
                }
            }
            makeCard(myCard);
        }

        function drawCard() {
            if (deck.length > 0) {
                let randIndex = Math.floor(Math.random() * deck.length);
                let card = deck.splice(randIndex, 1)[0];
                return card;
            }
            else {
                makeDeck();
                return drawCard();
            }
        }

        function makeDeck() {
            deck = [];
            for (let i = 0; i < suits.length; i++) {
                for (let j = 0; j < ranks.length; j++) {
                    let card = {};
                    card.suit = suits[i];
                    card.rank = ranks[j];
                    card.value = (j + 1);
                    deck.push(card);
                }
            }
        }

        function makeCard(card) {
            let html1 = card.rank + "<br>&" + card.suit + ";";
            let html2 = card.rank + "&" + card.suit + ";";
            let curCards = document.querySelectorAll(".card");
            let div = document.createElement("div");
            div.setAttribute("class", "card");
            div.style.left = (curCards.length * 25) + "px";
            curCardValue = card.value;
            if (card.suit === "hearts" || card.suit === "diams") {
                div.classList.add("red");
            }
            let span1 = document.createElement("span");
            span1.setAttribute("class", "tiny");
            span1.innerHTML = html2;
            div.appendChild(span1);
            let span2 = document.createElement("span");
            span2.setAttribute("class", "big");
            span2.innerHTML = html1;
            div.appendChild(span2);
            gameplay.appendChild(div);
        }
    </script>
</body>

</html>