이 챕터에서 구현할 스도쿠 어플리케이션의 기능은,
- 스도쿠 어플리케이션의 유저 인터페이스
- 그리드(셀)의 값을 어레이(배열)을 이용하여 표현
- 움직임(푸는 과정)을 스택 데이터 스트럭쳐에 저장
- Label controls를 이용하여 그리드를 동적으로 생성
- Label controls의 마우스 클릭 이벤트를 핸들링
- 움직임의 유효성 검사 (스도쿠 룰)
- 퍼즐이 해결되었는지 검사
- 셀(cell)의 값 업데이트
- Undoing/Redoing
- 게임 저장
- 저장된 게임 로드
- 게임 끝마치기
퍼즐 풀기등의 기능은 chapter 3에서 구현.
이 챕터에서 구현될 어플리케이션의 모습은,
이런 모습이다. 디자인에서 책과는 조금 다른 점이 있다.
1. 프로젝트를 만든다.
2. 유저 인터페이스를 만든다.
위와 같은 폼이 생기면 폼의 프라퍼티에서 아래 테이블과 같이 속성을 지정한다.
그러면,
3. MenuStrip Control을 추가한다.
Toolbox에서 Menustrip을 찾아 드래그 또는 더블클릭으로 폼에 추가한다.
추가된 MenuStrip의 smart tag을 클랙해서 'Insert Standard Items'를 선택한다.
아래와 같이 메뉴 항목을 수정한다.
Level 메뉴 항목은 다음과 같이 수정하면 된다. 나는 'E&xtremely Difficult'로 했다.
4. ToolStrip Control 추가한다.
MenuStrip Control과 마찬가지로 Toolbox에서 ToolStrip을 찾아 폼에 추가한다. MenuStrip 바로 아래에 붙어서 생성된다. 그리고 1개의 Label과 10개의 Button을 ToolStrip에 추가한다.
Label의 Text 프라퍼티를 'Select Number'로 바꾼다. Button의 'DisplayStyle' 프라퍼티를 'Text'로 바꾸고 각 Button의 'Text'프라퍼티를 1, 2, 3, 4, 5, 6, 7, 8, 9, Ease로 설정한다. Button을 다중선택하고 프라퍼티를 변경할 수 있다.
5. StatusStrip Control을 추가한다.
Toolbox에서 StatusStrip을 찾아 추가한다. 폼의 아래에 생긴다. 추가된 StatusStrip에 두개의 Label을 추가한다.
6. 기타 Control 추가.
아래 그림과 표를 참조하여 각 Control 들을 추가한다.
각 control의 프라퍼티에서 (Name) 속성을 btnHint, btnSolvePuzzle, txtActivities 으로 각각 바꿔준다.
셀 그리드는 Label을 이용하여 동적으로 생성한다. 코드 참조.
그리고 마지막으로 Toolbox에서 Timer를 찾아 추가한다.
여기까지의 모양은 아래와 같다. 각각의 control에서 폰트를 Tahoma로 바꾸었다.
'Programming > Programming Sudoku' 카테고리의 다른 글
Chapter 2. Creating the Sudoku Application (4) (0) | 2012.10.04 |
---|---|
Chapter 2. Creating the Sudoku Application (3) (0) | 2012.09.27 |
Chapter 2. Creating the Sudoku Application (2) (0) | 2012.09.27 |
Chapter 1. What Is Sudoku? (0) | 2012.09.27 |
Intro (0) | 2012.09.27 |