일반 렌주룰 기반으로 


돌을 놓을 위치를 입력으로 받음 x, y 좌표



1. 이미 돌이 놓여져 있으면 에러

2. 15 * 15 오목판을 벗어나면 에러


일단 두개를 먼저 체크를 해

두개를 통과했다면 일단 둘수는 있으니까


그리고 흑의 기준으로 33, 44, 6목 이상 금수 체크해야되니까


놓인돌을 기준으로 가로,세로,위쪽대각선,아래쪽대각선 의 4개 방향을 체크를 하되


돌을 셀때는 양쪽 방향으로 셈

즉 총 8번의 방향으로 돌을 세는셈


이거는

x_step = 1;

y_step = -1; 

이렇게 방향벡터를 주고 증감시켜 나가면서 세면 될듯


편의상 돌의 상태를  Empty, Black, White, X ,  EBWX 이렇게 네개로 표현을 하면


놓는돌이 B일때 다음이 B가 연속으로 나오다가 공백2개 연속, 반대색, X 가 나오면 멈추는거지


B -> BBEE   (SEQ, OPEN, 2)

B -> BBX    (SEQ, CLOSE, 2)

B -> BBW    (SEQ, CLOSE, 2)


물론 O_OO 이렇게 한칸 띄워진 경우도 있으니


B -> EBBEE (SPACE, OPEN, 2)

B -> EBBX (SPACE, CLOSE, 2)


그리고 반절만 막힌 경우도 있다

@_OOO_@ 이렇게 3인 경우는

@_OOOO@  4로 뻗을때 막히니까 열린3과 다르게 세야될듯 즉


B -> BBEX (SEQ, HALF, 2)

B -> BBEW (SEQ, HALF, 2)


그래서 4가지 방향에서  양쪽으로 위에 제시한 방법대로 돌의 개수와 상태를 체크하는거지


양쪽이 모두 SPACE가 있으면  O_O_O  이렇게 되어 아무것도 아닌 수가 됨

즉 Space 는 한개이하여야  돌의 개수를 셀수 있음


그리고 만약 돌 개수가 총 3이라면 양쪽이 모두 OPEN 이여야   3이라고 셀수 있음 

정확히는 OPEN-3 이겠지


HALF는 양쪽이 모두 HALF여야  HALF-3 이라고 할수 있음

근데 조심해야 할게  SPACE, HALF 인 경우는 없음



4개의 방향중에 2개 이상이 OPEN-3 이여야 삼삼 금수라고 체크를 하면 됨



사사 금수는 좀더 쉬움

양쪽이 모두 CLOSE 이면 CLOSE-4 이고  한쪽만 열려도 OPEN-4 라고 치면 됨

그래서 두개이상 방향에서 OPEN-4 라면 사사 금수라고 체크하면 됨


육목 이상 금수는 양쪽이 전부 SEQ 이면서 돌개수가  5넘어가면 금수가됨




물론 백은 전부 다 가능

승리 판정만 잘하면 되겠지




이렇게 일단 짜면 될듯 

논리상 문제있냐?

아님 더 쉬운방법 있나