마이크로 앱에서 구현하는 간단한 오델로 게임 엔진

  1. 오델로 게임의 기본 원리 및 마이크로 앱 개발 환경 설정

오델로는 8x8 격자 위에서 진행되는 전략적 체스 게임으로, 검은 돌과 흰 돌을 사용해 상대방의 돌을 뒤집는 방식으로 승패를 결정합니다. 이 게임은 규칙이 단순하지만 전략적 깊이가 있어, 인공지능 알고리즘의 초보자용 실습 프로젝트로 이상적입니다.

마이크로 앱에서 오델로를 구현하기 위해선 먼저 개발 환경을 구성해야 합니다. 공식 웨이챗 마이크로 앱 개발 도구를 추천하며, 이 도구는 완전한 개발 환경과 시뮬레이터를 제공합니다. 새 프로젝트를 생성한 후, app.json 파일에 페이지 경로를 등록하고 게임 메인 페이지를 생성합니다.

{
  "pages": [
    "pages/game/game"
  ],
  "window": {
    "navigationBarTitleText": "오델로 AI 대전"
  }
}

게임의 핵심 데이터 구조는 8행 8열의 이차원 배열로, 각 칸의 상태를 나타냅니다. 0은 비어 있음을 의미하고, 1은 검은 돌, 2는 흰 돌을 나타냅니다. 초기 상태에서는 중심부에 네 개의 돌이 대칭적으로 배치되며, 이 배열은 전체 게임 로직의 기반이 됩니다.

// 체스판 초기화
initializeBoard() {
  const board = Array(8).fill().map(() => Array(8).fill(0));
  board[3][3] = 2; // 흰 돌
  board[4][4] = 2; // 흰 돌
  board[3][4] = 1; // 검은 돌
  board[4][3] = 1; // 검은 돌
  return board;
}

UI 구현은 <view><button> 컴포넌트를 활용하여 진행합니다. 각 칸은 버튼으로 표현되며, 클릭 이벤트로 수를 두는 로직이 연결됩니다. 반응형 디자인을 위해 flex 레이아웃을 적용하면 다양한 디바이스에서도 일관된 표시가 가능합니다.

  1. 게임 규칙의 핵심 알고리즘 구현

오델로의 핵심은 세 가지 알고리즘으로 구성됩니다: 수의 유효성 검사, 돌 뒤집기 로직, 승패 판정. 이들 알고리즘이 정확하게 동작해야 게임이 올바르게 작동합니다.

2.1 수의 유효성 검사

수의 유효성은 한 칸이 비어 있고, 적어도 하나의 방향에서 상대편 돌을 뒤집을 수 있어야 합니다. 총 8개의 방향(상하좌우 및 대각선)을 확인하며, 각 방향에서 연속된 상대편 돌이 존재하고 그 끝에 자신의 돌이 있는지를 판단합니다.

// 수의 유효성 확인
isLegalMove(board, row, col, player) {
  if (board[row][col] !== 0) return false;

  const directions = [
    [-1, 0], [1, 0], [0, -1], [0, 1],
    [-1, -1], [-1, 1], [1, -1], [1, 1]
  ];

  for (const [dx, dy] of directions) {
    if (this.checkLine(board, row, col, dx, dy, player)) {
      return true;
    }
  }
  return false;
}

// 특정 방향에서 뒤집기 가능한지 확인
checkLine(board, row, col, dx, dy, player) {
  let r = row + dx, c = col + dy;
  let hasOpponent = false;

  while (r >= 0 && r < 8 && c >= 0 && c < 8) {
    if (board[r][c] === 0) break;
    if (board[r][c] === player) {
      return hasOpponent;
    }
    hasOpponent = true;
    r += dx;
    c += dy;
  }
  return false;
}

이 알고리즘은 모든 가능한 방향을 탐색하면서, 자신과 상대의 돌 사이에 상대 돌이 연속적으로 존재하는지 확인합니다. 조건 충족 시 해당 위치에 수를 둘 수 있으며, 이후에는 뒤집기 로직이 실행됩니다.

태그: 마이크로 앱 오델로 인공지능 게임 엔진 웨이챗

6월 27일 23:45에 게시됨