보고서 1(제목: 4x4 퍼즐 게임 구현)

 

1. 아래 그림과 같이 4x4 퍼즐 맞추기 게임을 콘솔창에 구현한다. 다음 조건을 만족하도록 게임을 구현한다.

### Fifteen Puzzle###

-----------------------

| 1 | 2 | 9 | 3 |

| 6 | 8 | 7 | 4 |

| 10 | 5 | 15 | * |

| 13 | 14 | 12 | 11 |

----------------------

이동 회수: 10

<4x4 퍼즐 맞추기 게임 화면 예시, 정확한 그림은 한글파일에서 확인 가능함>

 

(1) 처음 위의 예시처럼 퍼즐 조각들이 제 위치에 있어야 한다.

(2) 퍼즐 조각의 이동을 위해 getAction() 함수를 호출하여 화살표 키가 눌린 것처럼 시뮬레이션 한다.

(3) 눌린 키를 확인 후 전역 배열(map)에서 ‘*’의 위치를 변경한다. ‘*’의 위치에 따라서 ‘*’ 퍼즐을 이동시킬 수 있거나 불가능한 경우가 발생한다. 이동이 가능할 때에 배열에서 ‘*’의 위치를 변경한다.

(4) 전역 배열의 값들을 참고하여 콘솔화면에 위의 예시처럼 퍼즐들을 그린다.

(5) 퍼즐 조각을 움직인 회수를 화면에 출력하고 시간 지연을 위해 <windows.h>에 선언된 Sleep() 함수를 사용한다. 2초 간격으로 키가 눌리는 것처럼 시뮬레이션 하고 20번 반복 수행한다.

 

2. 주의

(1) 첨부된 fifteenPuzzleStep1.cpp 파일의 소스를 충분히 검토하여 이해한 후 추가적인 변수나 함수를 포함할 수 있으나 주어진 함수나 변수를 변경하지 않고 최대한 활용하여 구현한다.

(2) cout 객체를 사용하여 화면 출력하는 것을 포함하여 코딩 시에 최대한 C++ 관련 함수나 클래스 객체를 사용한다. 그리고 map 배열이나 action 변수를 main()함수의 지역변수로 선언해서 사용해야 한다. , 빈칸(‘*’)의 위치를 저장하는 x,y 변수처럼 전역변수로 선언해서 사용할 수 없다.

(7) 인터넷에 유사한 소스를 참조하더라도 본인이 이해하고 스스로 게임을 구현하는 하는 경우에 본인 창작물로 인정받을 수 있으나 다른 학생의 소스나 인터넷에 있는 소스와 유사도가 높으면 감정 당할 수 있으니 주의하기 바랍니다. 소스코드의 길지 않기 때문에 스스로 구현해서 제출하기 바랍니다.

 

3. 제출일

- 2019328일 목요일 수업시간 전까지 제출

 

4. 제출 항목

(1) 주석을 포함한 C++ 소스 코드를 프린트로 출력하여 제출

(2) 게임 시작 단계, 게임 도중 단계, 게임 종료 단계의 화면을 이미지 캡쳐하여 프린트 출력하여 제출

(3) 첨부된 보고서 표지를 반드시 사용함