소스 파일들
puzzle(1차원 배열)
- int getKey()
- void init(int *puzzle)
- int check(int *puzzle)
- void display(int *puzzle)
- void getIndex(int key, int currentIndex, int *changeIndex)
- void change(int *puzzle, int currentIndex, int changeIndex)
change
- puzzle배열에서 puzzle[currentIndex]와 puzzle[changeIndex]값을 상호교환한다.
getIndex
- key와 currentIndex(0의 위치)를 입력받음
- 0의 위치를 key값에 따라 새로 계산하여 그 결과를 changeIndex가 가르키는 주소에 저장
- index가 수정되었으면 1을 리턴하고 수정되지 않았으면 0을 리턴
[up]
- changeIndex <- currentIndex-3
- 단, currentIndex > 2 이면 변경하지 않는다.
[down]
- changeIndex <- currentIndex+3
- 단, currentIndex > 5 이면 변경하지 않는다.
[right]
- changeIndex <- currentIndex+1
- 단, currentIndex == 2,5,8 이면 변경하지 않는다.
currentIndex%3==2
[left]
- changeIndex <- currentIndex-1
- 단, currentIndex == 0,3,6 이면 변경하지 않는다.
currentIndex%3==0
display
- system("cls")함수를 호출하여 콘솔 화면을 지운 후, puzzle 배열의 값을 콘솔 창에 출력함.
check
- puzzle 배열에 저장된 값이 {1,2,3,4,5,6,7,8,0}인지 확인
- 순서가 맞으면 1을 리턴하고, 맞지 않으면 0을 리턴한다.
init
- 0~8사이의 서로 다른 난수 9개를 생성
- 생성한 난수를 puzzle배열에 저장
getKey
- 상/하/좌/우 키를 입력 받아 그 키 값을 리턴한다.
getch()
- 콘솔에서 단일 문자를 읽는다. 이 중 어느것도, CTRL+C를 읽을 수 없다.
- 화살표 키 또는 기능 키를 읽을 때, 각 함수는 두 번 호출되어야 한다.
kbhit()
- 콘솔에서 최근 키 입력을 확인한다. 이 함수가 0이 아닌 값을 반환하면 키 입력이 버퍼에서 대기 중인 것이다.
게임 실행
- 이동키를 사용하여 별을 움직여 숫자들을 순서대로 이동시킨다.
- 비슷한 게임으로는 숫자 퍼즐게임이 있다.