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

클래스 설계

코드 쓰기 전에 설계부터. Board 클래스가 무엇을 가질지 정하자.

🏗️ Board 클래스 청사진

속성(상태):

  • size — 보드 크기 (5, 7, 19...)
  • grid — 2D 리스트, 현재 보드 상태
  • prev_grid — 직전 상태 (패 규칙용)
  • captures — 각 색이 잡은 돌 수 ({BLACK: n, WHITE: m})

메서드(동작):

  • neighbors(r, c) — 인접 좌표
  • find_group(r, c) — 그룹 BFS
  • group_liberties(r, c) — 그룹 활로 set
  • play(r, c, color) — 한 수: 따냄 + 자살수 + 패 처리
  • find_territories() — 집 영역 분석
  • score(komi) — 최종 점수
  • show() — 보드 출력

이게 알파고가 머릿속에 갖고 있는 "바둑판". 다른 모든 게 이 위에서 동작해.

💡 상수는 어디에

EMPTY, BLACK, WHITE 같은 상수는 클래스 속성으로 넣는 게 깔끔. Board.BLACK처럼 접근. 이러면 클래스 안에 모든 게 들어가서 외부 환경에 의존 안 함.

설계 끝. 다음 페이지에서 진짜 코드.