C언어 숫자 퍼즐 게임 (8 puzzle game)
- 최초 등록일
- 2021.03.01
- 최종 저작일
- 2020.03
- 9페이지/ 한컴오피스
- 가격 2,500원
* 본 문서(hwp)가 작성된 한글 프로그램 버전보다 낮은 한글 프로그램에서 열람할 경우 문서가 올바르게 표시되지 않을 수 있습니다.
이 경우에는 최신패치가 되어 있는 2010 이상 버전이나 한글뷰어에서 확인해 주시기 바랍니다.
소개글
C언어로 작성한 숫자 퍼즐 게임입니다.
랜덤으로 숫자가 생성되면 방향키를 이용하여 공백의 위치를 바꾸어
순서대로 숫자를 맞추는 게임입니다.
구조체와 포인터를 사용하였습니다.
함수에 대한 설명과 소스코드, 주석까지 한글파일에 있습니다
목차
1. 개발환경
2. 게임 설명
3. 코드설명
1) Puzzle 구조체
2) printPuzzle함수
3) start함수
4) move 함수
5) main 함수
본문내용
1. 개발환경
Microsoft Visual Studio 2019를 사용하였습니다.
소스파일의 속성에서 SDL검사를 ‘아니요’ 설정하고 scanf를 사용하였습니다.
2. 게임 설명
8-puzzle 게임이란
초기의 3x3에 1~8까지의 숫자가 랜덤으로 주어졌을 때 공백을 이용하여 숫자의 위치를 이동해 아래의 목표 상태를 만드는 간단한 게임입니다.
3.코드설명
(1) Puzzle 구조체
Puzzle이라는 구조체를 만들어서 배열을 저장할 배열과 공백을 저장할 열과 행 변수들을 만들어 주었습니다. 배열의 자료형은 char형으로 선언한 이유는 int형의 크기가 4byte임으로 불필요한 크기를 줄이기 위해 char형으로 선언하였습니다.
(2) printPuzzle함수
printPuzzle 함수는 퍼즐을 출력하기 위한 함수로 중첩 for문을 사용하여 배열의[0][0]에서 배열의[2][2]까지 배열안의 값을 차례대로 출력합니다. 조건문을 사용하여 배열의 값이 0인 경우 공백을 출력하도록 만들었습니다. 여기서 puzzle은 구조체의 주소를 가리키는 구조체 포인터이므로 참조 연산자를 이용하여 Puzzle 구조체 안의 matrix배열에 접근하였습니다.
(2) gameSuccess함수
gameSuccess 함수는 게임의 성공을 판별하는 함수로 중첩 for문을 사용하여 배열의[0][0]에서 배열의[2][2]까지 순서대로 1,2ㆍㆍㆍ8,0 순서로 값이 들어가게 됩니다. %MAX*MAX를 해주는 이유는 배열의[2][2]에 0이 들어가게 해주기 위해서입니다.
(3) start함수
start함수는 게임을 시작할 때 배열을 섞어주는 함수로 랜덤으로 값을 받게됩니다.
중첩 for문을 이용하여 배열의 [0][0]에서 I와 j를 각각 증가 시키면서 중복을 검사합니다. 만약 중복되는 값이 있을 경우 I의 값을 감소시켜 다시 랜덤으로 값을 받게 됩니다.
참고 자료
없음