프로그램 이름 | cub3D |
---|---|
제출 파일 | 모든 파일 |
Makefile | all, clean, fclean, re, bonus |
인자 | .cub 형식의 맵 |
설명 | 여러분은 1인칭 시점에서의 미로의 내부를 “현실적인” 3D 그래픽 표현으로 만들어야 합니다. 앞에서 언급된 레이캐스팅 기법으로 이를 구현하십시오. |
제약은 다음과 같습니다 :
반드시 운영체제에서 쓸 수 있는 miniLibX 버전과 소스를 사용해야 합니다. 이 소스들을 이용해 작업한다면, libft처럼 상단의 Common Instructions 룰을 따라야 할 것입니다.
윈도우 관리는 부드럽게 동작하여야 합니다: 다른 창으로의 변경, 최소화 등
동, 서, 남, 북의 방향에 따라 각기 다른 벽 텍스처(선택은 당신의 몫)을 디스플레이하십시오.
여러분의 프로그램은 두 가지 다른 색상들로 벽과 천장을 세팅할 수 있어야 합니다.
프로그램은 윈도우에 이미지를 디스플레이하며 다음의 규칙을 따라야 합니다: ∘ 왼쪽 화살표 키와 오른쪽 화살표 키는 미로에서 왼쪽 또는 오른쪽을 쳐다볼 수 있도록 해야 합니다. ∘ W, A, S, D 키는 미로를 보는 POV를 움직이게 해야 합니다. ∘ ESC키를 누르면 게임 창이 닫히고 프로그램이 정상적으로 종료되어야 합니다. ∘ 게임 창의 최상단의 빨간 버튼을 클릭하면 게임 창이 닫히고 프로그램이 정상적으로 종료되어야 합니다. ∘ minilibX의 이미지들을 쓰는 것을 강력하게 추천합니다.
여러분의 프로그램은 씬(맵)에 대한 정보가 들어있는 .cub 확장자 파일을 첫 번째 인자로 받아야 합니다. ∘ 맵은 6개의 문자로만 구성됩니다 : 0은 빈 공간을, 1은 벽을, 그리고 N, S, E, W는 플레이어의 스타트 지점 및 시점을 뜻합니다. ∘ 이건 간단한 유효 맵 예시입니다:
111111
100101
101001
1100N1
111111
∘ 맵은 벽으로 둘러쌓이며 닫혀있어야 합니다. 그렇지 않을 경우 프로그램은 에러를 반환해야 합니다. ∘ 맵의 구성(content)을 제외하고, 각 요소들은 하나 이상의 빈 라인(들)으로 분리될 수 있습니다. (= 맵 내부의 구성을 제외하고) ∘ 맵은 파일 내에서 보이는 것처럼 파싱이 되어야 합니다. 공백은 지도의 유효한 부분이며, 처리는 여러분이 알아서 하면 됩니다. 여러분은 규칙대로 만들어지기만 했다면 그게 어떤 종류의 맵이든 파싱할 수 있어야 합니다. ∘ (지도를 제외한) 각 요소의 첫번째 정보는 하나 또는 두 글자로 이루어진 타입 식별자입니다. 이는 엄격한 요구사항을 따른 각 객체에 대한 정보를 나타냅니다 : * 북쪽 텍스처 North texture : NO ./path_to_the_north_texture
∙ 식별자 : **NO**
∙ 북쪽 텍스처의 경로
* 남쪽 텍스처 South texture :
SO ./path_to_the_south_texture
∙ 식별자 : **SO**
∙ 남쪽 텍스처의 경로
* 서쪽 텍스처 West texture :
WE ./path_to_the_west_texture
∙ 식별자 : **WE**
∙ 서쪽 텍스처의 경로
* 동쪽 텍스처 East texture :
EA ./path_to_the_east_texture
∙ 식별자 : **EA**
∙ 동쪽 텍스처의 경로
* 바닥 색 :
F 220,100,0
∙ 식별자 : **F**
∙ [0, 255] 범위 내의 RGB 컬러 : **0, 255, 255**
* 천장 색 :
C 225,30,0
∙ 식별자 : **C**
∙ [0, 255] 범위 내의 RGB 컬러 : **0, 255, 255**
NO ./path_to_the_north_texture
SO ./path_to_the_south_texture
WE ./path_to_the_west_texture
EA ./path_to_the_east_texture
F 220,100,0
C 225,30,0
1111111111111111111111111
1000000000110000000000001
1011000001110000000000001
1001000000000000000000001
111111111011000001110000000000001
100000000011000001110111111111111
11110111111111011100000010001
11110111111111011101010010001
11000000110101011100000010001
10000000000000001100000010001
10000000000000001101010010001
11000001110101011111011110N0111
11110111 1110101 101111010001
11111111 1111111 111111111111