Whack A Mole

const holes = document.querySelectorAll('.hole');
    const scoreBoard = document.querySelector('.score');
    const moles = document.querySelectorAll('.mole');
    let lastHole;
    let timeUp = false; // κ²Œμž„μ΄ λλ‚¬λŠ”μ§€λ₯Ό μ•Œλ €μ£ΌλŠ” λ³€μˆ˜ timeUp에 false κ°’ μ§€μ •
    let score = 0; // 점수판의 점수 ν‘œμ‹œμ™€ 점수λ₯Ό μ €μž₯ν•œ score λ³€μˆ˜λ₯Ό 0으둜 μ΄ˆκΈ°ν™”


    function randomTime(min, max) {
        return Math.round(Math.random() * (max - min) + min);
    }

    function randomHole(holes) {// ꡬ멍 갯수 만큼 랜덀으둜 λ‚˜μ˜¬ ꡬ멍을 κ²°μ •ν•΄μ€Œ 
        const idx = Math.floor(Math.random() * holes.length);
        const hole = holes[idx];
        if (hole === lastHole) {
            return randomHole(holes);
        }
        lastHole = hole;
        return hole;
    }
    function peep() {
        const time = randomTime(100, 800); // 두더지 λ‚˜μ˜¬ μ‹œκ°„ λ¬΄μž‘μœ„λ‘œ 계산
        const hole = randomHole(holes);  // 두더지 λ‚˜μ˜¬ ꡬ멍 λ¬΄μž‘μœ„λ‘œ 계산
        hole.classList.add('up'); // 두더지가 λ‚˜μ˜¬ ꡬ멍에 up 클래슀λ₯Ό μΆ”κ°€
        setTimeout(() => {
            hole.classList.remove('up'); //setTimeout( ) λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•΄ λ¬΄μž‘μœ„ μ‹œκ°„ 이후 두더지가 λ‚˜μ˜¬ κ΅¬λ©μ—μ„œ up 클래슀λ₯Ό 제거
            if (!timeUp) peep(); //κ²Œμž„μ΄ λλ‚˜μ§€ μ•Šμ•˜λ‹€λ©΄ peep( ) ν•¨μˆ˜λ₯Ό λ‹€μ‹œ μ‹€ν–‰3
        }, time);
    }

    function startGame() {
        scoreBoard.textContent = 0;
        timeUp = false;
        peep();
        setTimeout(() => timeUp = true, 10000) // 10초 ν›„ κ²Œμž„ μ’…λ£Œ 
    }

    function bonk(e) { // νŠ€μ–΄λ‚˜μ˜¨ 두더지 작기 
        if (!e.isTrusted) return; // cheater!

        this.parentNode.classList.remove('up'); // 이벀트 λ°œμƒν•œ μš”μ†Œμ— up 클레슀 제거
        score++; // 점수λ₯Ό μ €μž₯ν•˜λŠ” λ³€μˆ˜ score에 +1
        scoreBoard.textContent = score; // 점수판의 textContentλ₯Ό score둜 μ§€μ •
    }

    moles.forEach(mole => mole.addEventListener('click', bonk)); // ν΄λ¦­ν–ˆμ„λ•Œ 두더지 작히게 μ‹€ν–‰ μ‹œμΌœμ€Œ 

Last updated

Was this helpful?