JAVA로 만든 스도쿠 게임
1. 개발 환경
Platform : Eclipse 3.3.2
Language : JAVA
2. 파일 구성
1. SudokuAlgo.java
스도쿠 문제를 내기 위한 맵 생성, 문제 출제, 사용자가 입력한 숫자 검사 등 알고리즘 구현
2. GameInterface.java
사용자 인터페이스를 위해 Frame으로 버튼 및 9x9 창 구성
3. Main.java
알고리즘과 사용자 인터페이스를 연결하여 게임 실행
3. 스도쿠 맵 생성 알고리즘
1. 총 9x9개의 칸을 모두 검사하여 현재 선택한 값들이 문제가 없을 때 종료한다.
Queue를 사용하여 가능한 모든 숫자를 쌓고 하나씩 꺼내어 비교하는 방식을 사용한다.
2. Push
1) 1-9개를 랜덤으로 선택
(숫자가 섞이고자 위해 랜덤을 사용하며 랜덤 때문에 중복된 수를 얻지 않기 위해
1-9가 나열된 배열을 사용하여 최대 랜덤 값을 줄이는 방식을 구현했다.)
2) 가능한 숫자를 모두 Queue에 넣는다. 이때 현재의 맵 정보도 Queue에 저장한다.
3. Pop
1) Queue에서 하나를 Pop하여 저장되었던 Map을 적용한다.
4. Loop
1) 위의 진행을 Queue가 하나도 남지 않았을 때까지 반복한다.
(Pop만 진행하다가 더이상 진행이 되지 않는다면 Queue에 더이상
쌓이지 않고 꺼내기만 할 것이다. 그러면서 다시 다른 숫자로 진행을 하게 된다.)
4. 스도쿠 알고리즘 함수 목록
1. 초기화
2. 스도쿠 규칙에 어긋나는지 검사하는 함수
3. 맵을 생성하는 함수
4. 사용자가 문제를 풀기 위한 난이도에 따른 공백을 만드는 함수
5. 맵에 사용자가 선택한 숫자를 입력하는 함수
6. 사용자가 맵 정보를 얻기 위한 함수와 맵 정보를 출력하는 함수
5. 여담
학기 중 '객체지향 프로그래밍' 과목에서 팀을 구성하여 자바언어를 사용한 하나의 프로젝트를 구성했다.
우리 팀은 스도쿠를 만들기로 했고, 알고리즘 파트와 외형 인터페이스로 나눠 작업하기로 했다. JAVA 언어가 아직 익숙해 지지 않아 처음에 낯설었지만 조금 익숙해지고 나니 쓰기 쉽도록 설계되어 있으며, C언어와 다르게 메모리 침범을 자동으로 처리해 줘서 개발 시간을 줄일 수 있었다. 어려웠던 점은 클래스 간의 참조 방식을 구현하기 어려워 주위의 도움을 많이 받았다.
단기간에 코딩해서 얻은 것치고는 제법 쓸만한 듯하다^^
-
방양 2008/06/20 03:36 댓글주소 수정/삭제 댓글쓰기
글만보면... 오빠가 100% 다 한것같네요?? ㅋㅋㅋㅋ-
Yarmini 2008/06/21 02:47 댓글주소 수정/삭제하핫@_@ 그래?..내가 다 했다고는 안썼는데.쿡;
-
-
밍코 2009/03/03 23:22 댓글주소 수정/삭제 댓글쓰기
스도쿠 생성알고리즘이 있는것은 처음보네요..그러나 이해가 잘안가는..ㄷㄷ;;ㅎㅎ -
스도쿠를좋아하는고등학생 2010/05/31 20:14 댓글주소 수정/삭제 댓글쓰기두뇌게임을 만들려고 하는학생입니다. 그중에 스도쿠도 포함되어있는데요. 알고리즘이 노다가형식으로 밖에 떠오르지않아서 찾아다니고 있었습니다. 그러다 우연히 들렸는데요. 비록 JAVA로 구현되어 있지만 C를 좀 배워서 소스 이해가 가는데 소스좀 참고 해도될까~? 해서 댓글을 남깁니다. 참고해도 되겠지요 ㅎㅎ ?



SudokuGame_Source.zip
RSS FEED
TEXTCUBE 1.7.8 : Con moto