<!DOCTYPE html>
<html>

<head>
    <style>
        .replay {
            padding: 5px;
        }
        
        button {
            display: block;
            padding: 10px;
            min-width: 100px;
            font-size: 1.4em;
            font-family: sans-serif;
            border-radius: 15px;
            margin-top: 5px;
        }
        
        input {
            font-size: 1.5em;
        }
        
        .message {
            margin: 10px 0;
        }
    </style>
</head>

<body>
    <div class="output">
        <div class="message"></div>
        <input type="number">
        <button>Guess</button>
    </div>
    <script>
        let game = {
            "min": 1
            , "max": 10
        };
        document.addEventListener("DOMContentLoaded", function () {
            game.output = document.querySelector(".output");
            game.message = document.querySelector(".message");
            game.guessInput = document.querySelector("input");
            game.btn = document.querySelector("button");
            game.btn.addEventListener("click", guessValue);
            init();
        })

        function guessValue() {
            if (game.btn.classList.contains("replay")) {
                init();
                game.btn.innerHTML = "Guess";
                game.guessInput.style.display = "block";
                game.btn.classList.remove("replay");
            }
            else {
                game.guesses++;
                let tempGuess = game.guessInput.value;
                game.guessInput.value = "";
                tempGuess = parseInt(tempGuess);
                if (isNaN(tempGuess)) {
                    message(`Please enter only Digits`, "red");
                }
                else if (tempGuess === game.num) {
                    message(`Correct guess of ${game.num} in ${game.guesses} guesses`, "green");
                    gameOver();
                }
                else {
                    let holder = tempGuess > game.num ? {
                        "c": "blue"
                        , "m": "Was Lower"
                    } : {
                        "c": "purple"
                        , "m": "Was Higher"
                    };
                    message(holder.m, holder.c);
                }
            }
        }

        function gameOver() {
            game.btn.innerHTML = "Restart Game";
            game.guessInput.style.display = "none";
            game.btn.classList.add("replay");
            game.max += 5;
        }

        function init() {
            game.guesses = 0;
            game.num = ranNumber(game.min, game.max);
            let tempMes = `Guess a number from ${game.min} to ${game.max}`;
            message(tempMes, "blue");
        }

        function ranNumber(min, max) {
            return Math.floor(Math.random() * (max - min + 1) + min);
        }

        function message(mes, clr) {
            game.message.innerHTML = mes;
            game.message.style.color = clr || "black";
            game.guessInput.style.borderColor = clr || "black";
            game.btn.style.backgroundColor = clr || "black";
            game.btn.style.color = "white";
        }
    </script>
</body>

</html>