Developfordummies 10
문제 발생[편집]
- 아 !!! wiki 문법을 내가 왜 맞춰야 하는데.....
- 사실 sudoku 처음 만드는 거다.
- 어쩌라고....
문제 해결 방안 모색[편집]
- 띠로리~~ wiki 문법이 뭐야. 그냥 기존 문서 copy copy 후 수정하자!!!!
- sudoku 만드는 법을 찾아보자!!
시작하자[편집]
- 일단 가장 큰 직관성이 보이는 순서도를 택한다. 앞서 얘기했듯이 난 똑똑한 편이 아니라 뭘 적어놓지 않으면 금새 잊어 버린다. 근데 글로 쓰기는 너무 귀찮고.... 초등학교 시절 "양가양가미양"을 기록하던 미술과목을 떠올리며 순서도를 선택했다. 다행히 이 놈은 내 미적감각을 덜 발휘해도 그려진다. 일단 그려보자.
좀 과장된 면이 약간 있긴 하지만 난 이렇게 순서도를 만든다. 괜히 어려운 영어와 전문용어로 내 눈을 정화시키고 싶지 않다. 그냥 순서도는 나를 위한 것이라 생각하고 누구한테 보여주기 싫다(이렇게 만든걸 누구한테 보여주나..ㅡ.ㅡ).
- 알겠어 만들자고..... 근데 어떻게 만들어??????
- (아 위키 문법 정말 귀찮다...ㅜ.ㅜ)앞서 그린 순서도 별로 대략 함수를 만든다. 나는 직관적이라 생각하는데 안 그럴수도 있다. 메인 함수는 으흐흐 귀차나......(생략)
<SyntaxHighlight lang="C"> void start() { } void choose_a_level() { } void create_question() { } void solving_question() { } void end() { } int main(void) {
int sudoku[9][9]; start(); choose_a_level(); create_game();
</SyntaxHighlight> 써놓고 보니 분량을 날로 먹은 것 같다.!!!!!! 으하하하하 즐겁다. 근데 이거 코드는 정렬 우찌하는겨ㅜㅜ
위와 같이 대략적인 순서도를 그린 다음 각 블락별로 세부적인 상황을 하나씩 하나씩 추가하며 기존 순서도는 놔두고 필요하면 블락별 순서도를 다시 그린다.(사실 합체할 능력이 안된다. 중학교 때 도형 공부 좀 열심히 할걸..... ㅡ.ㅡ;;;;)
start()[편집]
- 일단 나 시작했어 라는 글자 정도는 띄워줘야 하지 않을까? printf()!!!! 히히히
- 그 다음 사용 방법이라든가 만든이라든가 뭐 이딴 것들 띄워주면 될 거 같다. 일반 게임에서 intro 동영상 나오듯이... 나는 생략..
- 일반적으로 스도쿠 모양은 9X9 배열이므로 요기에 대해 설정해준다. main() 함수에 sudoku[9][9]으로 선언하였다.
짠!!!! <SyntaxHighlight lang="c"> void start() {
printf("Hello World\n"); /* start 문구로는 요게 최고다!! 그냥 그렇다!! 토달지 말아라 !! */
} </SyntaxHighlight>
choose_a_level()[편집]
- 레벨을 설정하자.
- 레벨에 따라 스도쿠가 변형되어야 하므로 이건 나중에 생각한다. defalut로 1로 잡자. 추후 사용자에게 입력 받는 걸 택한다.
- 사용자에게 입력받은 걸 알려줘야 하므로 return 함수로 교체교체!!!!. 글을 쓰다보니 레벨 설정하는 건 나중 문제로 삭제하고 싶은데.. 그냥 놔두기로 한다.......
<SyntaxHighlight lang = "c"> int choose_a_level() {
return 1;
} </SyntaxHighlight>
create_a_question()[편집]
여기부터 조금씩 하나하나 스도쿠라는 게임을 뜯어봐야 한다는 생각이 든다. 스도쿠 관련한 여러 문서들을 검토해보자.
- 스도쿠 기본틀 모양(아 테이블 ㅜ.ㅜ;;;)
아래와 같은 모양대로 초기 sudoku[9][9] 내용을 초기화 한다.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
4 | 5 | 6 | 7 | 8 | 9 | 1 | 2 | 3 |
7 | 8 | 9 | 1 | 2 | 3 | 4 | 5 | 6 |
2 | 1 | 4 | 3 | 6 | 5 | 8 | 9 | 7 |
3 | 6 | 5 | 8 | 9 | 7 | 2 | 1 | 4 |
8 | 9 | 7 | 2 | 1 | 4 | 3 | 6 | 5 |
5 | 3 | 1 | 6 | 4 | 2 | 9 | 7 | 8 |
6 | 4 | 2 | 9 | 7 | 8 | 5 | 3 | 1 |
9 | 7 | 8 | 5 | 3 | 1 | 6 | 4 | 2 |
(-.- 두께와 표 폭을 수정하고 싶지만.. 나의 인내심이 한계다...)
- 여러가지 스도쿠 모양 (기본 모양에서 여러 모양으로 변하는 방법을 알아보자. 아래 첨부 문서를 확인하면 된다.)
파일:Sudoku change 1st.ods 숫자 노가다의 곤욕이구나... (출처: 구글링고고!!)
- Mutual exchange of two digits - 변환하는 방법에 대해 알아보자. 여기부터는 인터넷이나 기타 문서를 참고하지 않으려고 노력할 것이다. 때문에 필자의 무지함이 굉장히 많이 노출될 것임에도 여러 문서에 나와 있는 식을 도용하는 방법보다는 한 번쯤은 자신이 어떠한 문제를 해결하려는 노력 또한 프로그래밍에 굉장히 많은 도움이 될 것이라고 생각하기 때문이다. 서론이 길었다. 자~ 한번 시작해 보자.
- 파일:Exchange two digits1.png
- 너무 대충 만들었다고 따지기 없기!!!!! 누가 이런 것 좀 해주세용~!~!~!~! ㅎㅎㅎ
- 일단 한 번 분석을 해봐야 겠다는 생각에 오른쪽 그림에 나와있는 것 처럼 1과 9의 위치를 표시하고 순서쌍으로 나타내어 보았다. 방법은 (위치1, 위치9)
- ( 0, 20), (21, 14), (15, 8)
- (28, 46), (49, 40), (43, 34)
- (56, 72), (77, 66), (71, 60)
- 다음은 위치 차이에 대해 적어보았다.
- 20 7 7
- 18 9 9
- 16 11 11