Home > OS >  Looping a lotto game from codepen
Looping a lotto game from codepen

Time:07-22

Recently I've been looking at different projects and trying to modify them to try and understand the JS code much better. Recently I came across this lotto game from code pen. So I thought to try to make it to a game where you had coins as lives, then you get some stars based on how many numbers you got right.

The thing that I am struggling at is trying to loop the code on the click of a button. Currently the code is restarting the game by recalling its own link, in this case I just used my index.html as replacement for the href just to work on it for now. I want to change this because it doesn't let me consume all my coins (lives) without refreshing the page.

I tried putting everything in a function instead of calling it through the DOM being loaded. I then called that function when the dom has loaded, then after each draw I tried calling it again by using another button but it doesn't work. Tried changing the href to the function but that doesn't work as well. I also tried a few other things but I cannot make a work around this. Any help is appreciated! I'm still learning Javascript, so please pardon my question.

The code is not owned by me, I am just playing around with it, here's the original codepen link. https://codepen.io/EwaTrojanowskaGrela/pen/KmJMWb

// Declaration of scores and lives
var stars = 0;
var coins = 5;

// End of comment



// For redeclaration in innerHTML

var starsEarned;

// End of comment 





// For displaying current score

document.getElementById("star-count").innerHTML = stars;
document.getElementById("coin-count").innerHTML = coins;      

// End of comment 

document.addEventListener("DOMContentLoaded", function(e){
    var body = document.querySelector("body");
    var section = document.querySelector("section");
    var articleLotto = document.querySelector(".lotto");
    var articleBalls = document.querySelector(".balls");
    var numbers = [];
    var balls = document.getElementsByClassName("ball");
    var drawnNums = [];
    var chosenByMachine = [];
    function createNumberBoard(number){
        console.log("I work");
        var board = document.createElement("div");
        board.classList.add("board");
        articleLotto.appendChild(board);
        for( var i = 0; i<number; i   ){
            var boardEl = document.createElement("button");
            boardEl.classList.add("boardEl");
            board.appendChild(boardEl);
        }
        var boardEls = document.getElementsByClassName("boardEl");
        for( var i =0; i<boardEls.length; i  ){
            boardEls[i].setAttribute("data-number", i 1);
            var dataNumber = boardEls[i].getAttribute("data-number");
            var number = parseInt(dataNumber, 10);
            numbers.push(number);
            boardEls[i].textContent = number;
        }
    }
    createNumberBoard(49); 

    var board = document.querySelector(".board");
    var boardEls = document.querySelectorAll(".boardEl");
    function drawNumbers(){
        //boardEls.forEach(boardEl => boardEl.addEventListener("click", selectNums));
        for (var i = 0; i<boardEls.length; i  ){
            boardEls[i].addEventListener("click", selectNums);
        }
        function selectNums(){
            var number = parseInt(this.dataset.number, 10);
            if(this.hasAttribute("data-number")){
                drawnNums.push(number);
                this.removeAttribute("data-number");
                this.classList.add("crossedOut");
            }

            if(drawnNums.length=== 6){
                //boardEls.forEach( boardEl => boardEl.removeAttribute("data-number")); 

                //boardEls.forEach(boardEl => boardEl.addEventListener("click", makeAlert));
                for ( var i = 0; i<boardEls.length; i  ){
                    boardEls[i].removeAttribute("data-number");
                    boardEls[i].addEventListener("click", makeAlert);
                }
                var startDraw = document.querySelector(".startDraw");
                if(startDraw === null){ // you have to prevent creating the button if it is already there!
                    createButtonForMachineDraw();
                } else {
                    return;
                }
                

            }
            
        }
        
        return drawnNums;

    }
    drawNumbers();

    function makeAlert() {
        var alertBox = document.createElement("div");
        board.appendChild(alertBox);
        alertBox.classList.add("alertBox");
        alertBox.textContent = "You can only choose 6!";
        
        setTimeout(function() {
            alertBox.parentNode.removeChild(alertBox);
        }, 1500);
        
    }

    function machineDraw(){
        for( var i =0; i<6; i  ){
            var idx = Math.floor(Math.random() * numbers.length)
            chosenByMachine.push(numbers[idx]);
            /*a very important line of code which prevents machine from drawing the same number again 
             */
            numbers.splice(idx,1); 
            console.log(numbers)
            /*this line of code allows to check if numbers are taken out*/
        }
        var btnToRemove = document.querySelector(".startDraw");
        btnToRemove.classList.add("invisible"); 
        /* why not remove it entirely? because it might then be accidentally created if for some reason you happen to try to click on board!!! and you may do that*/
        return chosenByMachine;
    }

    //machineDraw();

    function createButtonForMachineDraw(){
        var startDraw = document.createElement("button");
        startDraw.classList.add("startDraw");
        section.appendChild(startDraw);
        startDraw.textContent ="Release the balls";
        startDraw.addEventListener("click", machineDraw);
        startDraw.addEventListener("click", compareArrays);
    }

    function compareArrays(){     
        for( var i =0; i<balls.length; i  ) {
            balls[i].textContent = chosenByMachine[i];
            (function() {
                var j = i;
                var f = function(){
                    balls[j].classList.remove("invisible");
                    balls[j].classList.add("ball-align");
                }
                setTimeout(f, 1000*(j 1));
            })();           
        }
        var common =[];
        var arr1 = chosenByMachine;
        var arr2 = drawnNums;
            for(var i = 0; i<arr1.length; i  ){
                for(var j= 0; j<arr2.length; j  ){
                    if(arr1[i]===arr2[j]){ 
                        common.push(arr1[i]);
                    }
                }
            }
            console.log(arr1, arr2, common); /* you can monitor your arrays in console*/
            function generateResult(){

                // Deduction of coins once draw started

                coins = coins - 1;

                // End of comment 

                var resultsBoard = document.createElement("article");
                section.appendChild(resultsBoard);
                var paragraph = document.createElement("p");
                resultsBoard.appendChild(paragraph);
                resultsBoard.classList.add("resultsBoard");
                resultsBoard.classList.add("invisible");
                if(common.length === 0){
                    paragraph.textContent ="Oh no! You got "   common.length   " Star!";
                    starsEarned = stars   common.length;
                    return starsEarned;
                } else if(common.length === 1){
                    paragraph.textContent ="You got "   common.length   " Star!";
                    starsEarned = stars   common.length;
                    return starsEarned;
                } else if(common.length === 2){
                    paragraph.textContent ="You got "   common.length   " Stars!";
                    starsEarned = stars   common.length;
                    return starsEarned;
                } else if(common.length === 3) {
                    paragraph.textContent ="You got "   common.length   " Stars!";
                    starsEarned = stars   common.length;
                    return starsEarned;
                } else if(common.length === 4){
                    paragraph.textContent ="You got "   common.length   " Stars!";
                    starsEarned = stars   common.length;
                    return ststarsEarnedars;
                } else if(common.length === 5){
                    paragraph.textContent ="You got "   common.length   " Stars!";
                    starsEarned = stars   common.length;
                    return starsEarned;
                }
                else if(common.length===6){
                    paragraph.textContent ="A true winner! You got "   common.length   " Stars!";
                    stars = stars   common.length;
                    return starsEarned;
                }

                // Returning of new coins

                return coins;

                // End of comment
            }
        setTimeout(function() {
            makeComebackBtn();
            document.querySelector(".resultsBoard").classList.remove("invisible"); //well, you cannot acces this outside the code

            // Displaying of new scores 

            stars = stars   starsEarned;
            document.getElementById("coin-count").innerHTML = coins;
            document.getElementById("star-count").innerHTML = stars;

            // End of comment 


        }, 8000);
        generateResult();
    }
   
    function makeComebackBtn(){
        var comebackBtn = document.createElement("a");
        comebackBtn.classList.add("comebackBtn");
        section.appendChild(comebackBtn);
        comebackBtn.textContent ="Go again"
        comebackBtn.setAttribute("href", "index.html");
    }


})
body {
    padding: 0 15%;
}
.game-container {
  height: auto;
  background-color:#424B54;
  font-family: "Allerta", sans-serif;
  margin: 0;
  max-width: 425px;
  height: 750px;
  /* padding: 0 2%; */
  box-sizing: border-box;
}

section {
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  height: auto;
  padding-bottom: 15px;
}

h1,
p {
  width: 100%;
  text-align: center;
  color: #FF6663;
  text-shadow: 3px 3px #A20202;
  font-family: "Bungee", cursive;
}

h1 {
  font-size: 35px;
  margin: 0;
}

p {
  font-size: 30px;
  margin: 0;
}

h3 {
  color: #FF6663;
  text-align: center;
  text-shadow: 2px 2px #A20202;
  font-size: 25px;
  margin-bottom: 5px;
}

article {
  height: 90%;
  width: 250px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  margin-bottom: 1rem;
}
.scores {
  width: 100%;
}
.coins,
.stars{
  display: flex;
  align-items: center;
  gap: .5rem;
}
.score-icons {
  color: #F6BD60;
  font-size: 3rem; 
}
.scores span {
  color: white;
}
#star-count,
#coin-count{
  font-size: 1.5 rem;
}

.invisible {
  display: none;
}
.ball-align {
  display: flex;
  justify-content: center;
  align-items: center;
}

.board {
  position: relative;
  background-color: #FF6663;
  width: 13.125rem;
  height: 13.125rem;
  border: 1px solid #FF6663;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-around;
  align-items: center;
}

.boardEl {
  background-color: #E8F7EE;
  width: 28px;
  height: 28px;
  color: #000000;
  text-align: center;
  font-size: 15px;
  border: none;
}

.crossedOut {
  background-color: #424B54;
  color: #F7EDE2;
}

.startDraw {
  background: #FF6663;
  border: none;
  font-size: 1.3rem;
  font-weight: bolder;
  color: #ffffff;
  padding: 0.5rem 1rem;
  margin: 0 auto;
  border-radius: .5rem;
  padding: .5rem 1rem;
}
.ball {
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  line-height: 2;
  color: #efefef;
  font-weight: bold;
  text-align: center;
}

.ball:nth-of-type(2n) {
  align-self: flex-end;
}

.ball:nth-of-type(2n   1) {
  align-self: flex-start;
}

.ball:first-of-type {
  background-color: gold;
  border: 1px solid #ccac00;
}

.ball:nth-of-type(2) {
  background-color: hotpink;
  border: 1px solid #ff369b;
}

.ball:nth-of-type(3) {
  background-color: teal;
  border: 1px solid #004d4d;
}

.ball:nth-of-type(4) {
  background-color: #009900;
  border: 1px solid #006600;
}

.ball:nth-of-type(5) {
  background-color: #339999;
  border: 1px solid #267373;
}

.ball:last-of-type {
  background-color: #ff6633;
  border: 1px solid #ff4000;
}

#ballContainer {
  background-color: inherit;
  border-bottom: none;
  display: flex;
  align-items: center;
  gap: 0.1rem;
}

.resultsBoard {
  margin-top: .5rem;
  text-align: center;
  width: 100%;
}

.resultsBoard p {
  color: #F6BD60;
  font-size: 2rem;
  font-family: "Allerta", sans-serif;
  text-shadow: none;
}

.comebackBtn {
  line-height: 2;
  margin-top: 2rem;
  font-size: 1.3rem;
  text-align: center;
  background-color: #FF6663;
  text-decoration: none;
  color: #ffffff;
  padding: .3rem 1rem;
  border-radius: .3rem;
  text-transform: uppercase;
}

.alertBox {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 3;
  color: #ffffff;
  background-color: #FF6663;
  text-align: center;
  line-height: 210px;
}
<!DOCTYPE html>
<html lang="eng-ENG">

<head>
  <meta charset="UTF-8">
  <title>lotto</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" type="text/css" href="style.css">
  <link href="https://fonts.googleapis.com/css?family=Allerta|Bungee" rel="stylesheet">
  <link href='https://unpkg.com/[email protected]/css/boxicons.min.css' rel='stylesheet'>
</head>

<body>
    <main>
        <div >
            <section>
                <h1>Lottery</h1>
                <div >
                    <div >
                        <i class='score-icons bx bxs-star'></i><span id="star-count"></span>
                    </div>
                    <div >
                        <i class='score-icons bx bx-coin'></i><span id="coin-count"></span>
                    </div>
                </div>
                <article >
                    <h3>Pick 6 numbers:</h3>
                </article>
                <article >
                    <div id="ballContainer">
                        <div ></div>
                        <div ></div>
                        <div ></div>
                        <div ></div>
                        <div ></div>
                        <div ></div>
                    </div>
                </article>
            </section>
        </div>
    </main>
  <script type="text/javascript" src="index.js"></script>
  <!--<script type="text/javascript" src="js/app2.js"></script>-->
</body>

</html>

CodePudding user response:

[UPDATED]
I've tried and modified the js script code and no need to save values in local storage. And in addition, no need to refresh page to reload game state. I implemented in JSFiddle here

var stars = 0;
var coins = 5;
var starsEarned = 0;

// For displaying current score

document.getElementById("star-count").innerHTML = stars;
document.getElementById("coin-count").innerHTML = coins;

document.addEventListener("DOMContentLoaded", function(e){
    var body = document.querySelector("body");
    var section = document.querySelector("section");
    var articleLotto = document.querySelector(".lotto");
    var articleBalls = document.querySelector(".balls");
    var numbers = [];
    var balls = document.getElementsByClassName("ball");
    var drawnNums = [];
    var chosenByMachine = [];
    var board;
    var boardEls;
    function createNumberBoard(number){
        console.log("I work");
        numbers = [];
        drawnNums = [];
        chosenByMachine = [];
        var board = document.createElement("div");
        board.classList.add("board");
        articleLotto.appendChild(board);
        for( var i = 0; i<number; i   ){
            var boardEl = document.createElement("button");
            boardEl.classList.add("boardEl");
            board.appendChild(boardEl);
        }
        var boardEls = document.getElementsByClassName("boardEl");
        for( var i =0; i<boardEls.length; i  ){
            boardEls[i].setAttribute("data-number", i 1);
            var dataNumber = boardEls[i].getAttribute("data-number");
            var number = parseInt(dataNumber, 10);
            numbers.push(number);
            boardEls[i].textContent = number;
        }
    }
    createNumberBoard(49); 

    board = document.querySelector(".board");
    boardEls = document.querySelectorAll(".boardEl");
    function drawNumbers(){
        //boardEls.forEach(boardEl => boardEl.addEventListener("click", selectNums));
        for (var i = 0; i<boardEls.length; i  ){
            boardEls[i].addEventListener("click", selectNums);
        }
        function selectNums(){
            var number = parseInt(this.dataset.number, 10);
            if(this.hasAttribute("data-number")){
                drawnNums.push(number);
                this.removeAttribute("data-number");
                this.classList.add("crossedOut");
            }

            if(drawnNums.length=== 6){
                //boardEls.forEach( boardEl => boardEl.removeAttribute("data-number")); 

                //boardEls.forEach(boardEl => boardEl.addEventListener("click", makeAlert));
                for ( var i = 0; i<boardEls.length; i  ){
                    boardEls[i].removeAttribute("data-number");
                    boardEls[i].addEventListener("click", makeAlert);
                }
                var startDraw = document.querySelector(".startDraw");
                if(startDraw === null){ // you have to prevent creating the button if it is already there!
                    createButtonForMachineDraw();
                } else {
                    return;
                }
                

            }
            
        }
        
        return drawnNums;

    }
    drawNumbers();

    function makeAlert() {
        var alertBox = document.createElement("div");
        board.appendChild(alertBox);
        alertBox.classList.add("alertBox");
        alertBox.textContent = "You can only choose 6!";
        
        setTimeout(function() {
            alertBox.parentNode.removeChild(alertBox);
        }, 1500);
        
    }

    function machineDraw(){
        for( var i =0; i<6; i  ){
            var idx = Math.floor(Math.random() * numbers.length)
            chosenByMachine.push(numbers[idx]);
            /*a very important line of code which prevents machine from drawing the same number again 
             */
            numbers.splice(idx,1); 
            /* console.log(numbers) */
            /*this line of code allows to check if numbers are taken out*/
        }
        var btnToRemove = document.querySelector(".startDraw");
        btnToRemove.classList.add("invisible"); 
        /* why not remove it entirely? because it might then be accidentally created if for some reason you happen to try to click on board!!! and you may do that*/
        return chosenByMachine;
    }

    //machineDraw();

    function createButtonForMachineDraw(){
        var startDraw = document.createElement("button");
        startDraw.classList.add("startDraw");
        section.appendChild(startDraw);
        startDraw.textContent ="Release the balls";
        startDraw.addEventListener("click", machineDraw);
        startDraw.addEventListener("click", compareArrays);
    }

    function compareArrays(){     
        for( var i =0; i<balls.length; i  ) {
            balls[i].textContent = chosenByMachine[i];
            (function() {
                var j = i;
                var f = function(){
                    balls[j].classList.remove("invisible");
                    balls[j].classList.add("ball-align");
                }
                setTimeout(f, 1000*(j 1));
            })();           
        }
        var common =[];
        var arr1 = chosenByMachine;
        var arr2 = drawnNums;
            for(var i = 0; i<arr1.length; i  ){
                for(var j= 0; j<arr2.length; j  ){
                    if(arr1[i]===arr2[j]){ 
                        common.push(arr1[i]);
                    }
                }
            }
            /* console.log(arr1, arr2, common) */; /* you can monitor your arrays in console*/
            function generateResult(){

                // Deduction of coins once draw started

                coins = coins - 1;

                // End of comment 

                var resultsBoard = document.createElement("article");
                section.appendChild(resultsBoard);
                var paragraph = document.createElement("p");
                resultsBoard.appendChild(paragraph);
                resultsBoard.classList.add("resultsBoard");
                resultsBoard.classList.add("invisible");
                if(common.length === 0){
                    paragraph.textContent ="Oh no! You got "   common.length   " Star!";
                    starsEarned = stars   common.length;
                    return starsEarned;
                } else if(common.length === 1){
                    paragraph.textContent ="You got "   common.length   " Star!";
                    starsEarned = stars   common.length;
                    return starsEarned;
                } else if(common.length === 2){
                    paragraph.textContent ="You got "   common.length   " Stars!";
                    starsEarned = stars   common.length;
                    return starsEarned;
                } else if(common.length === 3) {
                    paragraph.textContent ="You got "   common.length   " Stars!";
                    starsEarned = stars   common.length;
                    return starsEarned;
                } else if(common.length === 4){
                    paragraph.textContent ="You got "   common.length   " Stars!";
                    starsEarned = stars   common.length;
                    return ststarsEarnedars;
                } else if(common.length === 5){
                    paragraph.textContent ="You got "   common.length   " Stars!";
                    starsEarned = stars   common.length;
                    return starsEarned;
                }
                else if(common.length===6){
                    paragraph.textContent ="A true winner! You got "   common.length   " Stars!";
                    stars = stars   common.length;
                    return starsEarned;
                }

                // Returning of new coins

                return coins;

                // End of comment
            }
        setTimeout(function() {
            makeComebackBtn();
            document.querySelector(".resultsBoard").classList.remove("invisible"); //well, you cannot acces this outside the code

            // Displaying of new scores 

            stars = starsEarned;
            document.getElementById("coin-count").innerHTML = coins;
            document.getElementById("star-count").innerHTML = stars;

            // End of comment 


        }, 8000);
        generateResult();
    }
   
    function makeComebackBtn(){
        var comebackBtn = document.createElement("a");
        comebackBtn.classList.add("comebackBtn");
        section.appendChild(comebackBtn);
        comebackBtn.textContent ="Go again";
        if (coins === 0) {
            comebackBtn.addEventListener("click", function () {
                alert("You ran out of coins");
            });
        } else {
            comebackBtn.addEventListener("click", function () {
            const board_ = document.querySelector(".board");
            board_.parentNode.removeChild(board_);
            const startDraw_ = document.querySelector(".startDraw");
            startDraw_.parentNode.removeChild(startDraw_);
            for( let i=0; i<balls.length; i  ) {
                balls[i].classList.add("invisible");
                balls[i].classList.remove("ball-align");
            }
            const resultsBoard_ = document.querySelector(".resultsBoard");
            resultsBoard_.parentNode.removeChild(resultsBoard_);
            createNumberBoard(49);
            board = document.querySelector(".board");
            boardEls = document.querySelectorAll(".boardEl");
            drawNumbers();
            const comebackBtn_ = document.querySelector(".comebackBtn");
            comebackBtn_.parentNode.removeChild(comebackBtn_);
          });
        }
    }

})

You need to save the values of stars and coins to localStorage using localStorage.setItem("stars", stars) or sessionStorage and get the values again at beginning of each turn.
Also initialize value of variable starsEarned = 0 and check condition of number of coins when reload the page. If run out of coins, alert player.
You can see following code I modified from your

// Declaration of scores and lives
var stars = Number(localStorage.getItem("stars")) || 0;
var coins = Number(localStorage.getItem("coins")) || 5;

// End of comment



// For redeclaration in innerHTML

var starsEarned = 0;

// End of comment 





// For displaying current score

document.getElementById("star-count").innerHTML = stars;
document.getElementById("coin-count").innerHTML = coins;      

// End of comment 

document.addEventListener("DOMContentLoaded", function(e){
    var body = document.querySelector("body");
    var section = document.querySelector("section");
    var articleLotto = document.querySelector(".lotto");
    var articleBalls = document.querySelector(".balls");
    var numbers = [];
    var balls = document.getElementsByClassName("ball");
    var drawnNums = [];
    var chosenByMachine = [];
    function createNumberBoard(number){
        console.log("I work");
        var board = document.createElement("div");
        board.classList.add("board");
        articleLotto.appendChild(board);
        for( var i = 0; i<number; i   ){
            var boardEl = document.createElement("button");
            boardEl.classList.add("boardEl");
            board.appendChild(boardEl);
        }
        var boardEls = document.getElementsByClassName("boardEl");
        for( var i =0; i<boardEls.length; i  ){
            boardEls[i].setAttribute("data-number", i 1);
            var dataNumber = boardEls[i].getAttribute("data-number");
            var number = parseInt(dataNumber, 10);
            numbers.push(number);
            boardEls[i].textContent = number;
        }
    }
    createNumberBoard(49); 

    var board = document.querySelector(".board");
    var boardEls = document.querySelectorAll(".boardEl");
    function drawNumbers(){
        //boardEls.forEach(boardEl => boardEl.addEventListener("click", selectNums));
        for (var i = 0; i<boardEls.length; i  ){
            boardEls[i].addEventListener("click", selectNums);
        }
        function selectNums(){
            var number = parseInt(this.dataset.number, 10);
            if(this.hasAttribute("data-number")){
                drawnNums.push(number);
                this.removeAttribute("data-number");
                this.classList.add("crossedOut");
            }

            if(drawnNums.length=== 6){
                //boardEls.forEach( boardEl => boardEl.removeAttribute("data-number")); 

                //boardEls.forEach(boardEl => boardEl.addEventListener("click", makeAlert));
                for ( var i = 0; i<boardEls.length; i  ){
                    boardEls[i].removeAttribute("data-number");
                    boardEls[i].addEventListener("click", makeAlert);
                }
                var startDraw = document.querySelector(".startDraw");
                if(startDraw === null){ // you have to prevent creating the button if it is already there!
                    createButtonForMachineDraw();
                } else {
                    return;
                }
                

            }
            
        }
        
        return drawnNums;

    }
    drawNumbers();

    function makeAlert() {
        var alertBox = document.createElement("div");
        board.appendChild(alertBox);
        alertBox.classList.add("alertBox");
        alertBox.textContent = "You can only choose 6!";
        
        setTimeout(function() {
            alertBox.parentNode.removeChild(alertBox);
        }, 1500);
        
    }

    function machineDraw(){
        for( var i =0; i<6; i  ){
            var idx = Math.floor(Math.random() * numbers.length)
            chosenByMachine.push(numbers[idx]);
            /*a very important line of code which prevents machine from drawing the same number again 
             */
            numbers.splice(idx,1); 
            /* console.log(numbers) */
            /*this line of code allows to check if numbers are taken out*/
        }
        var btnToRemove = document.querySelector(".startDraw");
        btnToRemove.classList.add("invisible"); 
        /* why not remove it entirely? because it might then be accidentally created if for some reason you happen to try to click on board!!! and you may do that*/
        return chosenByMachine;
    }

    //machineDraw();

    function createButtonForMachineDraw(){
        var startDraw = document.createElement("button");
        startDraw.classList.add("startDraw");
        section.appendChild(startDraw);
        startDraw.textContent ="Release the balls";
        startDraw.addEventListener("click", machineDraw);
        startDraw.addEventListener("click", compareArrays);
    }

    function compareArrays(){     
        for( var i =0; i<balls.length; i  ) {
            balls[i].textContent = chosenByMachine[i];
            (function() {
                var j = i;
                var f = function(){
                    balls[j].classList.remove("invisible");
                    balls[j].classList.add("ball-align");
                }
                setTimeout(f, 1000*(j 1));
            })();           
        }
        var common =[];
        var arr1 = chosenByMachine;
        var arr2 = drawnNums;
            for(var i = 0; i<arr1.length; i  ){
                for(var j= 0; j<arr2.length; j  ){
                    if(arr1[i]===arr2[j]){ 
                        common.push(arr1[i]);
                    }
                }
            }
            /* console.log(arr1, arr2, common) */; /* you can monitor your arrays in console*/
            function generateResult(){

                // Deduction of coins once draw started

                coins = coins - 1;

                // End of comment 

                var resultsBoard = document.createElement("article");
                section.appendChild(resultsBoard);
                var paragraph = document.createElement("p");
                resultsBoard.appendChild(paragraph);
                resultsBoard.classList.add("resultsBoard");
                resultsBoard.classList.add("invisible");
                if(common.length === 0){
                    paragraph.textContent ="Oh no! You got "   common.length   " Star!";
                    starsEarned = stars   common.length;
                    return starsEarned;
                } else if(common.length === 1){
                    paragraph.textContent ="You got "   common.length   " Star!";
                    starsEarned = stars   common.length;
                    return starsEarned;
                } else if(common.length === 2){
                    paragraph.textContent ="You got "   common.length   " Stars!";
                    starsEarned = stars   common.length;
                    return starsEarned;
                } else if(common.length === 3) {
                    paragraph.textContent ="You got "   common.length   " Stars!";
                    starsEarned = stars   common.length;
                    return starsEarned;
                } else if(common.length === 4){
                    paragraph.textContent ="You got "   common.length   " Stars!";
                    starsEarned = stars   common.length;
                    return ststarsEarnedars;
                } else if(common.length === 5){
                    paragraph.textContent ="You got "   common.length   " Stars!";
                    starsEarned = stars   common.length;
                    return starsEarned;
                }
                else if(common.length===6){
                    paragraph.textContent ="A true winner! You got "   common.length   " Stars!";
                    stars = stars   common.length;
                    return starsEarned;
                }

                // Returning of new coins

                return coins;

                // End of comment
            }
        setTimeout(function() {
            makeComebackBtn();
            document.querySelector(".resultsBoard").classList.remove("invisible"); //well, you cannot acces this outside the code

            // Displaying of new scores 

            stars = starsEarned;
            document.getElementById("coin-count").innerHTML = coins;
            document.getElementById("star-count").innerHTML = stars;
            localStorage.setItem("stars", stars);
            localStorage.setItem("coins", coins);

            // End of comment 


        }, 8000);
        generateResult();
    }
   
    function makeComebackBtn(){
        var comebackBtn = document.createElement("a");
        comebackBtn.classList.add("comebackBtn");
        section.appendChild(comebackBtn);
        comebackBtn.textContent ="Go again";
        if (coins === 0) {
            comebackBtn.setAttribute("onClick", "alert('You ran out of coins')");
        } else {
            comebackBtn.setAttribute("onClick", "window.location.reload();");
        }
    }


})
  • Related