자바스크립트에서 JSON 데이터를 이용하여 지뢰찾기 게임 생성하기

지뢰찾기는 많은 사람들이 즐기는 클래식한 게임입니다. 이 게임은 주어진 그리드에서 지뢰가 있는 칸을 피해 숨겨진 모든 빈 칸을 찾는 것을 목표로 합니다. 이번에는 자바스크립트에서 JSON 데이터를 이용하여 지뢰찾기 게임을 생성하는 방법을 알아보겠습니다.

JSON 데이터 구조

먼저, JSON 데이터의 구조를 설계해야 합니다. 이 데이터는 게임 보드의 크기, 지뢰의 위치 및 주변 지뢰의 개수 등을 포함해야 합니다. 다음은 예시로 사용될 JSON 데이터의 구조입니다.

{
  "boardSize": [5, 5],
  "mineCount": 5,
  "mines": [
    [0, 1],
    [1, 3],
    [3, 2],
    [4, 0],
    [4, 4]
  ]
}

자바스크립트 코드

이제 위에서 설계한 JSON 데이터를 이용하여 지뢰찾기 게임을 생성하는 자바스크립트 코드를 작성해보겠습니다.

const json = `{
  "boardSize": [5, 5],
  "mineCount": 5,
  "mines": [
    [0, 1],
    [1, 3],
    [3, 2],
    [4, 0],
    [4, 4]
  ]
}`;

const gameData = JSON.parse(json);

const gameBoard = [];

// 게임 보드 초기화
for (let i = 0; i < gameData.boardSize[0]; i++) {
  const row = [];
  for (let j = 0; j < gameData.boardSize[1]; j++) {
    row.push({
      revealed: false,
      hasMine: false,
      neighborMines: 0
    });
  }
  gameBoard.push(row);
}

// 지뢰 위치 설정
for (const mine of gameData.mines) {
  const [x, y] = mine;
  gameBoard[y][x].hasMine = true;
}

// 주변 지뢰 개수 계산
for (let i = 0; i < gameData.boardSize[0]; i++) {
  for (let j = 0; j < gameData.boardSize[1]; j++) {
    if (!gameBoard[j][i].hasMine) {
      let count = 0;
      for (let dx = -1; dx <= 1; dx++) {
        for (let dy = -1; dy <= 1; dy++) {
          const nx = i + dx;
          const ny = j + dy;
          if (nx >= 0 && nx < gameData.boardSize[0] && ny >= 0 && ny < gameData.boardSize[1] && gameBoard[ny][nx].hasMine) {
            count++;
          }
        }
      }
      gameBoard[j][i].neighborMines = count;
    }
  }
}

console.log(gameBoard);

위 코드에서는 JSON 문자열을 JSON.parse() 함수를 이용하여 파싱하여 gameData 객체로 변환합니다. 그리고 gameBoard 배열을 초기화하고, 지뢰의 위치를 설정한 후 주변 지뢰 개수를 계산합니다.

이제 gameBoard 배열을 살펴보면, 2차원 배열 형태로 게임 보드가 생성된 것을 확인할 수 있습니다.

지뢰찾기 게임을 완성하려면 사용자 상호작용, 지뢰 폭발 등 추가로 처리해야 할 사항들이 있습니다. 하지만 이 튜토리얼에서는 JSON 데이터를 이용하여 게임 보드를 생성하는 기능에 초점을 맞추었습니다.

#지뢰찾기 #자바스크립트