[javascript] 자바스크립트로 간단한 퍼즐 게임 만들기

이번에는 자바스크립트를 사용하여 간단한 퍼즐 게임을 만들어 보겠습니다. 이 게임은 3x3 그리드로 이루어져 있고, 각 셀에는 번호가 매겨진 타일이 있습니다. 플레이어는 타일을 이동하여 숫자를 정렬하는 것이 목표입니다.

게임 그리드 생성하기

먼저 HTML과 CSS를 사용하여 게임 보드를 만들고, 각 타일의 초기 위치와 스타일을 설정합니다.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="styles.css">
  <title>퍼즐 게임</title>
</head>
<body>
  <div class="container">
    <div class="grid">
      <div class="cell">1</div>
      <div class="cell">2</div>
      <div class="cell">3</div>
      <div class="cell">4</div>
      <div class="cell">5</div>
      <div class="cell">6</div>
      <div class="cell">7</div>
      <div class="cell">8</div>
      <div class="cell empty"></div>
    </div>
  </div>
  <script src="app.js"></script>
</body>
</html>
.grid {
  display: grid;
  grid-template-columns: repeat(3, 100px);
  grid-gap: 5px;
}

.cell {
  width: 100px;
  height: 100px;
  background-color: #ccc;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
}

.empty {
  visibility: hidden;
}

타일 이동하기

이제 자바스크립트를 사용하여 타일을 이동할 수 있는 기능을 추가합니다.

document.addEventListener('DOMContentLoaded', function() {
  const cells = document.querySelectorAll('.cell');
  let emptyCell = 9;

  cells.forEach((cell, index) => {
    cell.addEventListener('click', () => {
      if (isMovable(index)) {
        swapCells(index, emptyCell);
        emptyCell = index;
      }
    });
  });

  function isMovable(index) {
    // implement logic to check if the clicked tile is adjacent to the empty tile
  }

  function swapCells(index1, index2) {
    // swap the positions of the cells at index1 and index2
  }
});

승리 조건 확인하기

모든 타일이 올바른 순서로 정렬되었는지 확인하여 플레이어가 이겼는지 여부를 판단합니다.

function checkWin() {
  for (let i = 0; i < cells.length - 1; i++) {
    if (parseInt(cells[i].textContent) !== i + 1) {
      return false;
    }
  }
  return true;
}

이제 퍼즐 게임이 준비되었습니다! 이제 각 타일을 클릭하여 이동시키고, 올바른 순서로 정렬되었는지 확인할 수 있습니다.

참고 자료