ํด๋น ํ์ด์ง ๊ฒ์ ์ฝ๋ ๋ฆฌ๋ทฐ์ ๋๋ค.
(์ฐธ๊ณ . ์ ๋ก์ด ์นด๋ ๋ค์ง๊ธฐ ๊ฒ์)
์ง๋ ๊ธ๊น์ง '๋ค์งํ๋ ๊ธฐ๋ฅ CSS ๊ตฌํ โ ์นด๋ ์ธํ โ ํด๋ฆญ ์ ๋ค์งํ๋ ์ด๋ฒคํธ ๊ตฌํ'๊น์ง ๋์ง์ด ๋ดค์ต๋๋ค.
let cardColor = [];
let cardColorset = colorPool.slice();
let colorPool = [
  '#A5736A', // brown
  '#A5736A',
  '#FECD56', // yellow
  '#FECD56',
  '#50869B', // blue
  '#50869B',
  '#698D5D', // green
  '#698D5D',
  '#E14B56', // pink
  '#E14B56',
  '#F8A255', // orange
  '#F8A255',
];
function shuffle() {
  for (let i = 0; cardColorset.length > 0; i += 1) {
    cardColor = cardColor.concat(
      cardColorset.splice(Math.floor(Math.random() * cardColorset.length), 1)
    );
  }
}
 color pool์ ์์ 12๊ฐ์ง๋ฅผ ์ง์ ๋ง์ถ์ด ๋ฃ๊ณ . cardColorset์ ์๋ก์ด ๋ฐฐ์ด๋ก ์์ ์ง์ ๋๋๋ก ํ๋ค. ์ฌ๊ธฐ์ ์ฃผ์์ ์ .slice()๋ฅผ ์ฐ์ง ์์ผ๋ฉด ์ฐธ์กฐ ๊ด๊ณ๋ก ์ธํด, colorPool ์์ฒด๊ฐ ๋ฐ๋๋ค. ๋ฐ๋ผ์ ํ์ ๊ฒ์์ด ๋๋๊ณ  ๋ฆฌ์
ํ  ๋ ์จ์ ํ colorPool์ด ์๋๊ธฐ ๋๋ฌธ์ ์นด๋ ์๊น์ด ํฐ์์ผ๋ก๋ง ๋์ค๋ ์๋ฌ๊ฐ ์๊ธด๋ค. 
slice() & splice() : 
slice() ๋ฉ์๋๋ begin๋ถํฐ end ์ ๊น์ง์ ๋ณต์ฌ๋ณธ์ ์๋ก์ด ๋ฐฐ์ด ๊ฐ์ฒด๋ก ๋ฐํํ๋ค. ์ฆ, ์๋ณธ ๋ฐฐ์ด์ ์์ ๋์ง ์๋๋ค. 
splice() ๋ฉ์๋๋ ๋ฐฐ์ด์ ๊ธฐ์กด ์์๋ฅผ ์ญ์  ๋๋ ๊ต์ฒดํ๊ฑฐ๋ ์ ์์๋ฅผ ์ถ๊ฐํ์ฌ ๋ฐฐ์ด์ ๋ด์ฉ์ ๋ณ๊ฒฝํ๋ค. ์ด ๋ฉ์๋๋ ์๋ณธ ๋ฐฐ์ด ์์ฒด๋ฅผ ์์ ํ๋ค.
https://im-developer.tistory.com/103
document.querySelectorAll('.card').forEach(function (card, index) {
    setTimeout(() => {
      card.classList.add('flipped');
    }, 1000 + 100 * index);
  });
  setTimeout(() => {
    document.querySelectorAll('.card').forEach(function (card, index) {
      card.classList.remove('flipped');
    });
    clickFlag = true;
    gameStart = new Date();
  }, 5000);
setTimeout()์ผ๋ก ์๊ฐ ์กฐ์ .  clickFlag boolean๊ฐ์ผ๋ก card๋ฅผ ๋ณด์ฌ์ฃผ๋ ์๊ฐ ๋์์๋ ์นด๋๊ฐ ํด๋ฆญ๋์ด ๋ค์งํ์ง ์๋๋ก ํ๋ค.
let clickedCard = [];
let matchedCard = [];
(function (c) {
      card.addEventListener('click', () => {
        if (clickFlag && !matchedCard.includes(c)) {
          c.classList.toggle('flipped');
          clickedCard.push(c);
          if (clickedCard.length === 2) {
            if (
              clickedCard[0].querySelector('.card-back').style
                .backgroundColor ===
              clickedCard[1].querySelector('.card-back').style.backgroundColor
            ) {
              matchedCard.push(clickedCard[0]);
              matchedCard.push(clickedCard[1]);
              clickedCard = [];
             
includes() : ๋ฉ์๋๋ ๋ฐฐ์ด์ด ํน์  ์์๋ฅผ ํฌํจํ๊ณ  ์๋์ง ํ๋ณhttps://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/includes
toggle() : ํด๋์ค ๋ค์์ () ์์๋ฅผ ํฌํจํ๊ณ  ์๋์ง ํ๋ณํ๊ณ , ์๋ค๋ฉด ์ถ๊ฐํด์ฃผ๊ณ  ์๋ค๋ฉด ์ ๊ฑฐํด์ค๋ค.
 if (matchedCard.length === cardWidth * cardHeight) {
                let gameFinish = new Date();
                alert(
                  `Congratulations๐ Time record: ${parseInt(
                    (gameFinish - gameStart) / 1000
                  )} seconds`
                );
                document.querySelector('#gameTable').innerHTML = '';
                cardColorset = colorPool.slice();
                cardColor = [];
                matchedCard = [];
                gameStart = null;
                shuffle();
                cardSet(cardWidth, cardHeight);
              }
            } else {
              clickFlag = false;
              setTimeout(() => {
                clickedCard[0].classList.remove('flipped');
                clickedCard[1].classList.remove('flipped');
                clickFlag = true;
                clickedCard = [];
              }, 1000);
            }
          }
        }
      });
    })(card);
matchedCard.length === cardWidth * cardHeight ์ด ๋๋ฉด ์นด๋ ๊ฒ์์ ์ด๊ธฐํ ํ๋ค.
๊ฒ์ ํ
์ด๋ธ์ innerHTML๋ก ์ง์๋ฒ๋ฆฌ๊ณ , ๋ชจ๋  ์์๋ค์ ์ฐจ๋ก๋๋ก [] ์ด๊ธฐํ ์ํจ๋ค.