[C언어] 퍼즐 게임 만들기 실습

이가영·2023년 9월 10일
0

C언어

목록 보기
12/16

소스 파일들

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 이면 변경하지 않는다.
  • 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이 아닌 값을 반환하면 키 입력이 버퍼에서 대기 중인 것이다.

게임 실행

  • 이동키를 사용하여 별을 움직여 숫자들을 순서대로 이동시킨다.


  • 비슷한 게임으로는 숫자 퍼즐게임이 있다.
profile
gy’s portfolio

0개의 댓글