2009/11/12 2

환타 오목 게임 재구성: 최종본.

지환태 님의 오목 게임 소스를 처음 접한 것은 올해 중순이었을 겁니다. 오목을 만들어 보겠다는 생각 자체를 하지 않았기 때문에 당연히 소스에 관심이 갔고, 소스 자체가 그다지 깔끔하지 못해서 리팩토링(refactoring)을 해 보고 싶었습니다. (환타[지환태] 님께서도 C언어를 배운지 얼마 안 되었을 때 만들었다고 고백하셨습니다.) 처음엔 허락도 받지 않고 시작한 재구성인데 환타 님께서 관심을 가져 주셨으며, 다섯 번에 걸친 재구성(R1, R2, R3, R4, R5)과 추가 수정으로, 나름 깔끔한 코드를 만들어 봤습니다. 아래가 드디어 최종본입니다. 제가 만든 코드는 하나의 메인 C 파일과 두 헤더 H 파일로 이루어져 있습니다. 지난번 재구성에 비해 소스와 파일명이 아주 약간 달라졌습니다. #inclu..

환타 오목 게임 재구성. (5)

드디어 check()를 줄일 아이디어를 구체화시켰습니다.-_- 현재 방식 그대로라면 모듈로 분리한다 해도 거의 아무런 차이가 없으므로, 아예 검사 방식 자체를 바꾸려고 했습니다만 그게 잘 안 되고 있었습니다. 뻘소리를 좀 하자면 오늘은 2010 수능 D-day이면서 2011 수능 D-364 즉 52주... 어차피 블로깅이 많이 줄었지만 앞으로 1년간 거의 잠수 탈 것 같습니다. 새로운 검사 방식을 소개합니다. 1. 검사 방식에 있어서 생긴 차이는 아닙니다만, 일단 check()는 x와 y 인자만 받습니다. turn 인자가 필요한데, (x, y) 인자를 정상적으로 받았다고 가정하면, board[x][y]가 turn 인자와 같습니다. 즉, int check(int x, int y, int turn) { in..