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)); // ํด๋ฆญํ์๋ ๋๋์ง ์กํ๊ฒ ์คํ ์์ผ์ค
<h1>Whack-a-mole! <span class="score">0</span></h1>
<button onClick="startGame()">Start!</button>
<div class="game">
<div class="hole hole1">
<div class="mole"></div>
</div>
<div class="hole hole2">
<div class="mole"></div>
</div>
<div class="hole hole3">
<div class="mole"></div>
</div>
<div class="hole hole4">
<div class="mole"></div>
</div>
<div class="hole hole5">
<div class="mole"></div>
</div>
<div class="hole hole6">
<div class="mole"></div>
</div>
</div>
Last updated