๊ฐ์๋ฐ์๋ณด ๋ฏธ๋๊ฒ์์ ๋ง๋ค์ด๋ณด๋ฉฐ
ํ๋ก์ ํธ๋ฅผ ์ผ์ถ ๋ง๋ฌด๋ฆฌํ๋ฉฐ
ํ์์ ์ธ ๊ธฐ๋ฅ ๊ตฌํ๊ณผ ์์ ์ด ์ด๋์ ๋ ๋๋ ์ํ์์ ํ๋ก์ ํธ๋ฅผ ์ผ์ฐจ์ ์ผ๋ก ๋ง๋ฌด๋ฆฌํ๋ฉฐ ๋์๋ณด๋ ๊ธ์ ์จ๋ณผ๊น ํ๋ค.
๊ฐ๋จํ๊ฒ ํ๋ฑ ๋ง๋ค์ด๋ณด์! ํ๋ ์๊ฐ์์ ์์ํด์, 5์ผ ์ด๋ด๋ก ์ฌ๋งํ ์์
์ ๋ค ๋ง๋ฌด๋ฆฌ ํ ๊ฒ ๊ฐ๋ค.
์ฒ์์๋ ๋ ๊ฐ๋ณ๊ฒ ๋ง๋ค์ด๋ณผ ์๊ฐ์ด์์ง๋ง ๊ธฐํ ๋จ๊ณ์์๋ ์ฝ๊ฐ์ ์์ฌ์ด ์๊ฒจ์ ์ง์ ๊ทธ๋ฆผ๋ ๊ทธ๋ ค๋ณด๊ณ ,
์งํํ๋ฉด์ ์ฒ์ ๊ฐ๋จํ๊ฒ ๊ธฐํํ๋ ๊ฒ ๋ณด๋ค ์กฐ๊ธ์ฉ ๋ ์น์ด์ง ๋ถ๋ถ์ด ๋ง์๋ค. ๐
๊ธฐํ
์ด๋ฏธ์ง
์ฐ์ ์ด๋ฏธ์ง๋ค์ ์ํ๋ ์ด๋ฏธ์ง ์ฐพ๊ธฐ ์ด๋ ค์ฐ๋ฉด ๋ด๊ฐ ๋ง๋ค์ง ๋ญ.. ์ถ์ด์ ํธ๋ ์ด์ฑํด์ ๊ทธ๋ฆฐ ๊ฐ์ ๋ฐ์ ๋ณด.
๊ฒ์์ด๋ค๋ณด๋ ์ข ํตํต ํ์์ผ๋ฉด ํด์ ๋ค์จ์ปฌ๋ฌ๋ฅผ ์ฌ์ฉํด๋ณด์๋ค.
๊ตฌ์
์ฒ์ ๊ตฌ์ํ๋ ๊ฒ. ๊ฐ๋จ ๊ทธ ์์ฒด!..
๋๋ค์ผ๋ก ๊ณ์ ๋์๊ฐ๋ ์ด๋ฏธ์ง์์ ๋ฒํผ์ ๋๋ฅด๋ฉด ์นํจ๊ฐ ํ๊ฐ๋ฆ ๋๋ ์ ๋๋ก ์๊ฐํ์๋ค.
ํ์ง๋ง ๊ทธ๋๋ ๊ฒ์์ธ๋ฐ ์ข ๋ ๊ธด์ฅ๊ฐ ์์ผ๋ฉด ์ข์ง ์์๊น? ์ถ์ด์ ์นด์ดํธ๋ค์ด์ ๋ฐ๋ผ์ ํ๊ฐ๋ฆ์ด ๋๋ ์ชฝ์ผ๋ก ์ฝ๋๋ฅผ ์ง๋ณด๊ธฐ๋ก ํ๋ค.
((๊ฐ์๋ฐ์๋ณด๊ธด ํ์ง๋ง..))
ํ๋ฉด ๊ตฌ์ฑ
๊ฐ์์์ ์ด์ฌํ ๋ฐฐ์๋ณธ SCSS๋ฅผ ์ง์ ์จ๋ณด๋ ์๊ฐ!..
์ ์ฒด์ ์ผ๋ก ๋ฐ์คํฌํ - ํ๋ธ๋ฆฟ - ๋ชจ๋ฐ์ผ ๋ฒ์ ์ผ๋ก ๋๋์ด์ ๋ฐ์ํ์ผ๋ก ํ๋ฉด ๊ตฌ์ฑ์ด ์ฒ๋ฆฌ๋ ์ ์๋๋ก ํ๋๋ฐ,
์ธํธ๋กํ์ด์ง๋ ๋๋ฐ์ด์ค ๋ณ๋ก ํ ์คํธ ํฌ๊ธฐ ์ฐจ์ด์ ๋์ ์ฐจ์ด๊ฐ ๋๋ค.
๊ฐ์๋ฐ์๋ณด ์ด๋ฏธ์ง๋ ์ ๋๋ฉ์ด์
์ ๋ฃ์ด์ฃผ์ด์ ๋ฅ์ค๋ฅ์ค ๋ ์๋ ๋ฏํ ๋์ ์ธ ๋๋๋ ์ฃผ์๋ค.
๊ฒ์ํ์ด์ง๋ ๋ฐ์คํธํ-ํ๋ธ๋ฆฟ๊ณผ ๋ชจ๋ฐ์ผ์ ๋ ์ด์์์ ์ฐจ์ด๊ฐ ์ข ์๋ค.
๋ชจ๋ฐ์ผ์์๋ ์ธ๋ก๋ก ๋ฐฐ์นํ๋ค๋ณด๋ ๊ฒฐ๊ณผ ํ ์คํธ(You Lose) ๋ค์
๋ค ์ฒ๋ฆฌํ ๋ ์ด์ด๋ฅผ ๊น์์ ํ ์คํธ์ ๋๋น๋ฅผ ์ข ๋ ๋์ฌ์ฃผ์๋ค.
๊ทธ ์ธ ๊ฐ์ ๋ฐ์ ๋ณด ์ค ํด๋ฆญํ ๋ฒํผ์ ์ข ๋ ํค์ฐ๊ณ ์ ๋ช ํ๊ฒ ๋ง๋ค์ด์ค๋ค๊ฑฐ๋
hover, active ๊ฐ์ ์ํ์ ๋ํ ์ธํฐ๋์ ๋ ์ ์ฉํด์ฃผ์๋ค.
๊ตฌ์ฑํ๊ณ ์๋ ์์๊ฐ ๋ง์ง ์์ ํธ์ด๋ค๋ณด๋.. ๊ทธ๋๋ ๋๋ ์ ์๋ ๋ถ๋ถ์์๋ ์ธ๋ถ์ ์ผ๋ก ๋๋์ด์ ์์ ํด๋ดค๋ค.
๊ธฐ๋ฅ
๊ธฐ๋ฅ์ ๋ฐ์ ธ๋ณด๋ฉด... ๋ณต์กํ ๊ฒ์ ์๋ ํธ์ด๋ค. ์๋ฌด๋๋ ๊ฐ์๋ฐ์๋ณด๋๊น! ๐คฃ
ํ๋์ ํ์ผ์ ๋ค ์ฐ๊ธฐ๋ณด๋จ ๊ฐ๊ฐ์ ํ์ผ๋ก ์์ฑํ ๊ฒ์์ ํ์ํ ๊ธฐ๋ฅ๋ค์ ๋ชจ๋ํํด ์ฌ์ฉํด๋ดค๋ค.
์นด์ดํธ ๋ค์ด
์ธํธ๋ก ํ์ด์ง์์ ๊ฒ์ ํ์ด์ง๋ก ๋์ด๊ฐ๋ฉด 3์ด ์นด์ดํธ ๋ค์ด์ด ์์๋๋ค.
๊ทธ๋ฆฌ๊ณ ์นด์ดํธ๊ฐ ๋๋๋ฉด, ๋๋ค์ผ๋ก ๋ธ ์ปดํจํฐ์ ํ๋ ์ด์ด๊ฐ ๋ธ ๊ฒ์ ๋น๊ตํด์ ์น๋ถ๋ฅผ ํ๊ฐ๋ฆํ๋ค.
3์ด ๋์ ํ๋ ์ด์ด๋ ๋ด๊ณ ์ถ์ ๊ฑธ ๋จผ์ ๋ผ ์๋ ์๊ณ , (๊ต์ฒด๋ ๊ฐ๋ฅ) ํ์ด๋ฐ ๋ง์ถฐ์ ๋ผ์๋ ์๋ค.
ํ์ง๋ง ๋๋ฌด ๋ฆ์ด์ ๋ชป๋ด๋ฒ๋ฆฌ๋ฉด ํ๋ ์ด์ด๋ ํจ๋ฐฐ..! ๐
์ด ๊ณผ์ ์์ setInterval ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ณ ,
์นด์ดํธ ๋ค์ด๊ณผ ํจ๊ป ์นํ์ค์ ์ํด ์ฑ๊ฒจ์ค aria-label๋ ์
๋ฐ์ดํธ ๋๋๋ก ํ๋ค.
์นด์ดํธ๊ฐ ๋๊ณ ์๋ค๋ ์๋ฏธ๋ก ์ฌ์ด๋๋ ๊ฐ์ด ์์ผ๋ฉด ์ข์ ๊ฒ ๊ฐ์์ ์-์๊ฑฐ๋ฆฌ๋ ํจ๊ณผ์๋ ๋ฃ์ด์ฃผ์๋ค.
const playing = () => {
let seconds = 3;
const timer = setInterval(() => {
timerText.innerHTML = `${seconds}`;
timerText.setAttribute('aria-label', `${seconds}์ด`);
if (seconds <= 0) {
clearInterval(timer);
getImage();
timerText.classList.add('done');
computerImage.classList.add('is-active');
resultArea.classList.add('is-active');
const result = judgement();
resultText.innerHTML = `${result}`;
}
seconds -= 1;
}, 700);
sound.play();
};
์นํจ ํ๊ฐ๋ฆ
๊ฐ์ ๋ฐ์ ๋ณด๋ก ๋์ฌ ์ ์๋ ๊ฒฝ์ฐ์ ์๊ฐ ๊ทธ๋๋ ๊ฝค ์๋ ํธ์ธ๋ฐ,
ํฌ๊ฒ ์ด๊ธธ ๋ / ์ง ๋ / ๋น๊ธธ ๋๋ก ๋๋์๋ค.
์ด๊ธฐ๋ ์ผ์ด์ค๋ฅผ ๋ฐ๋ก ์ง์ ํด์ ์ด ๊ฒฝ์ฐ์๋ง ์ด๊ธด ๊ฒฝ์ฐ์ ํ
์คํธ๋ฅผ ๋ฆฌํดํ๋๋ก ํ๋ค.
์ ํํ ๊ฒ์ ํ
์คํธ๋ ์ด๋ฏธ์ง ํ์ผ๋ช
์์ ์๋ผ์๋ค.
const resultText = {
0: 'End in a tie! ๐ณ',
1: 'You Lose ๐ญ',
2: 'You Win! ๐ฅณ',
};
const caseWin = {
rock: 'paper',
paper: 'sissor',
sissor: 'rock',
};
export const judgement = () => {
let result;
const [computer, player] = images;
if (player === 'default') result = 0;
if (computer === player) result = 0;
else if (player === caseWin[computer]) result = 2;
else result = 1;
return resultText[result];
};
์ฌ์ด๋
๋ญ๊ฐ ์ข ๋ ๊ฒ์์ค๋ฌ์ด ๋๋์ด ์์์ ์ข๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์ด์ ์ฐพ์ ๋ฌด๋ฃ bgm์ ์ธํธ๋ก ํ์ด์ง์ ์ถ๊ฐํด์ฃผ์๋ค.
์ค๋์ค ํ์ผ์ HTML ํ๊ทธ๋ก๋ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ์ง๋ง,
ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ์ ์ ์ฑ ์ ์๋์ฌ์์ด ๋ถ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์์ ๋ถํฐ ์๊ณ ์์๊ธฐ ๋๋ฌธ์...
์ฌ์์ํค๋ ค๋ฉด ํด๋ฆญํ๋ค๋๊ฐ, ์ด๋ค ๋ชจ์ ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ HTML๋ก๋ ํ๊ณ๊ฐ ์์ผ๋
๊ฒธ์ฌ๊ฒธ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ์ Audio ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด๋ณด์๋ค. ๐
((๋ง์์ ๋๋ bgm์ธ๋ฐ ๋ก๋๋์๋ง์ ์๋์ฌ์ ๋์ง ์๋ ๊ฒ์ด ๊ฐ์ธ์ ์ผ๋ก๋ ์์ฝ๋ค))
์๋ ์ฝ๋์ฒ๋ผ ์ ์ฒด์ ์ผ๋ก DOM์ ์ง์ ์กฐ์ํ๊ธฐ๋ณด๋จ active ํด๋์ค๋ฅผ ๋ถ์ด๊ณ ๋ผ์ฃผ๋ฉด์ ๊ธฐ๋ฅ์ด ๋์๋๋๋ก ํ๋ค.
const bgm = new Audio('../assets/bgm.m4a');
const bgmButton = document.querySelector('.bgm-button');
bgmButton.addEventListener('click', function () {
const image = bgmButton.querySelector('img');
this.classList.toggle('is-active');
if (this.classList.contains('is-active')) {
image.src = `./assets/icon_sound_on.png`;
bgm.play();
bgm.loop = true;
} else {
image.src = `./assets/icon_sound_off.png`;
bgm.pause();
}
});
๋์ผ๋ก..
์ด๋ฒ์๋ ๋คํธ๋ฆฌํ์ด๋ผ๋ ๊ณณ์ ํตํด์ ๊ฐ๋จํ๊ฒ ๋ฐฐํฌ๋ฅผ ํด๋ณด์๊ณ , ์๋ ๋งํฌ์์ ํ๋ ์ด ํด๋ณผ ์ ์๋ค!
https://lets-rock-paper-sissors.netlify.app/
๋ฏธ๋ ํ๋ก์ ํธ์ง๋ง ์ง์ ๊ตฌํํ๋ค๋ณด๋ ์๊ฐ์ง ๋ชปํ ๋ถ๋ถ๋ค์ ๋ง์ฃผ์น๊ฒ ๋๊ฑฐ๋,
(์ฌํ๋ฆฌ์์ ์นด์ดํธ ์๋ฆฌ๊ฐ ์๋๋ค๋์ง...)
๋ ์ค์ ๊ธฐ๊ธฐ์์ ํ๋ ์ดํด๋ดค์ ๋์ ๋ง๋๊ฒ ๋๋ ๋ฒ๊ทธ๋ค์ ๊ณ ์ณ๋ณด๋ ๊ฒ๋ ์ฌ๋ฐ๋ ๊ฒฝํ์ด์๋ค.
์ญ์ ์ง์ ๋ฌด์ธ๊ฐ๋ฅผ ํด๋ด์ผ ์ป๊ฒ ๋๋ ๊ฒ๋ค์ด ๋ง๋ค๋ ์๊ฐ!..
๊ฐ๋ฒผ์ด ๋ง์์ผ๋ก ์งํํ ๋งํผ ๊ฐ๋ณ๊ฒ ๋๋ผ ์ ์์ด์ ์ข์๋ค.
ํ ์ ์๋ ์ ์์ ๋ฆฌํฉํฐ๋ง์ ์งํํ์ง๋ง,
์ถํ์ ์๋ ๊ฒ์ด ๋ ๋ง์์ง๋ค๋ฉด ๊ทธ๋งํผ ๋ ์ข์ ์ฝ๋๋ก ์์ฑํ ์ ์๊ฒ ๋ค ์ถ์ ๊ฒ๋ค๋ ๋ณด์ผํ
๋!..
๊ทธ๋ ์ถ๊ฐ์ ์ผ๋ก ๋ ๊ณ ์ณ๋ณด๋ ๊ฒ์ผ๋ก ํ๋ฉฐ ๊ท์ฌ์ด ๊ฐ์๋ฐ์๋ณด ๊ฒ์์ ๋ง๋ฌด๋ฆฌํ๋ค!
์งํํ๋ฉด์์ ์ฝ์ง ๊ธฐ๋ก