클래스 설계
코드 쓰기 전에 설계부터. Board 클래스가 무엇을 가질지 정하자.
🏗️ Board 클래스 청사진
속성(상태):
size— 보드 크기 (5, 7, 19...)grid— 2D 리스트, 현재 보드 상태prev_grid— 직전 상태 (패 규칙용)captures— 각 색이 잡은 돌 수 ({BLACK: n, WHITE: m})
메서드(동작):
neighbors(r, c)— 인접 좌표find_group(r, c)— 그룹 BFSgroup_liberties(r, c)— 그룹 활로 setplay(r, c, color)— 한 수: 따냄 + 자살수 + 패 처리find_territories()— 집 영역 분석score(komi)— 최종 점수show()— 보드 출력
이게 알파고가 머릿속에 갖고 있는 "바둑판". 다른 모든 게 이 위에서 동작해.
💡 상수는 어디에
EMPTY, BLACK, WHITE 같은 상수는 클래스 속성으로 넣는 게 깔끔. Board.BLACK처럼 접근. 이러면 클래스 안에 모든 게 들어가서 외부 환경에 의존 안 함.
설계 끝. 다음 페이지에서 진짜 코드.