시즌 1 · 알파고편 / PART 1 · PART 1 · 바둑이라는 우주 / Ch 6 · Board 클래스 만들기

Board 클래스 — 흩어진 함수를 한 덩어리로

👋 이 챕터에서 배울 것

지금까지 짠 함수들을 한 덩어리로 묶어 깔끔한 Board 클래스를 만든다. 이게 PART 2~7에서 계속 쓸 기반이야.

지금까지 짠 코드를 떠올려봐. 다음 함수들이 있어:

  • neighbors(r, c)
  • find_group(board, r, c)
  • group_liberties(board, r, c)
  • play_with_ko(board, r, c, color, prev_board)
  • find_territories(board)
  • score(board, komi)

다 동작은 하지만, 매번 board를 인자로 넘기고, prev_board를 따로 관리하고, SIZE 같은 상수가 모듈 전체에 떠다녀. 흩어져 있어. 한 덩어리로 묶자.

📖 OOP (객체지향)란

데이터(상태)와 그 데이터에 대한 동작(메서드)을 한 클래스 안에 묶어. 그러면:

  • 보드 상태 (grid, prev_grid, captures...) 를 클래스 속성으로 보관
  • 한 수 두기, 그룹 찾기, 점수 계산은 모두 self.method(...) 형태
  • 여러 보드를 동시에 만들 수 있음 (AI 시뮬레이션 때 필수)

이번 챕터에서:

  • 설계: Board 클래스가 가질 속성과 메서드
  • 구현 1부: 기본 구조 + 그룹 관련 메서드
  • 구현 2부: play() + score() — 가장 복잡한 부분
  • 사용 예제: 두 사람 짧은 대국 시뮬레이션