42 SEOUL
[42Seoul] Cub3D 번역
hi._.0seon
2021. 3. 31. 23:13
반응형
1. Mandatory part
Program name | cub3D |
Turn in files | All your files |
Makefile | all, clean, fclean, re, bonus |
Arguments | a map in format *.cub |
External functs | - open, close, read, write, printf, malloc, free, perror, strerror, exit - All functions of the <math.h> library - all functions of the MinilibX |
Libft authorized | Yes |
Description | 1인칭 시점으로 미로 내부를 "현실적인" 3D 그래픽으로 표현해야 합니다. 앞서 언급한 Ray-Casting 원칙을 사용하여 이 표현을 작성해야 합니다. |
다음 제약조건들을 따라야 한다.
- miniLibX를 사용해야 합니다. 운영 체제에서 사용할 수 있는 버전 또는 해당 원본에서 사용할 수 있는 버전입니다. 원본으로 작업하도록 선택한 경우 공통 지침 파트에 위에서 설명한 것과 동일한 규칙을 libft에 적용해야 합니다.
- 다른 창으로 변경, 최소화 등 창 관리가 원활해야 합니다.
- 벽이 어느 쪽을 향하느냐(북, 남, 동, 서)에 따라 다른 벽 질감을 표시합니다.
- 프로그램이 벽 대신 항목(스프라이트)을 표시할 수 있어야 합니다.
- 프로그램은 바닥과 천장의 색상을 두 가지 색상으로 설정할 수 있어야 합니다.
- Deepthought가 언젠가 당신의 프로젝트를 평가할 눈이 있는 경우,
당신의 프로그램은 두 번째 인수가 "–-save"일 때 첫 번째 렌더링된 이미지를 bmp 형식으로 저장해야 한다. - 두 번째 인수가 제공되지 않는 경우 프로그램은 창에 이미지를 표시하고 다음 규칙을 준수합니다.
- 키보드의 왼쪽 및 오른쪽 화살표 키를 사용하여 미로에서 왼쪽과 오른쪽을 볼 수 있어야 합니다.
- W, A, S, D 키를 사용하여 미로를 통해 시야를 이동할 수 있어야 합니다.
- ESC를 누르면 창이 닫히고 프로그램을 완전히 종료해야 합니다.
- 창틀의 빨간색 십자 기호를 클릭하면 창이 닫히고 프로그램을 완전히 종료해야 한다.
- 지도에서 선언된 화면 크기가 디스플레이 해상도보다 크면 현재 디스플레이 해상도에 따라 윈도우 크기가 설정됩니다.
- minilibX의 이미지 사용을 적극 권장한다.
- 프로그램은 확장자가 .cub인 장면 설명 파일을 첫 번째 인수로 사용해야 합니다.
- 맵은 사용가능한 4개의 문자로 구성되어있다:
빈 공간은 0,
벽은 1,
항목은 2,
플레이어의 시작 위치와 방향은 N, S, E 또는 W입니다.
- 맵은 사용가능한 4개의 문자로 구성되어있다:
- 지도를 벽으로 둘러싸거나 닫아야 합니다. 그렇지 않으면 프로그램에서 오류를 반환해야 합니다.
- 지도 내용을 제외하고 각 요소 유형은 하나 이상의 빈 줄로 구분할 수 있습니다.
- 항상 마지막이어야 하는 지도 내용을 제외하고, 각 요소 유형은 파일의 임의의 순서로 설정할 수 있습니다.
- 맵을 제외하고 요소에서 각 정보 유형은 하나 이상의 공백으로 구분할 수 있습니다.
- 지도는 파일에 표시된 대로 구문 분석해야 합니다. 공백은 지도에서 유효한 부분이며 사용자가 처리하기에 따라 다릅니다.
- 맵 규칙이 적용되는 한 모든 종류의 맵을 구문 분석할 수 있어야 합니다.
- 각 요소(지도 제외)의 첫 번째 정보는 유형 식별자(하나 또는 두 개의 문자로 구성됨)이며, 그 다음에 각 객체에 대한 모든 특정 정보가 다음과 같이 엄격한 순서로 표시됩니다.
* Resolution (해상도)
R 1920 1080
identifier: R
x, y render size
* North texture
NO ./path_to_the_north_texture
식별자 : NO
north 텍스처 위치 경로
* South texture
SO ./path_to_the_south_texture
* West texture
WE ./path_to_the_west_texture
* East texture
EA ./path_to_the_east_texture
* Sprite texture
S ./path_to_the_sprite_texture
* Floor color
F 220,100,0
RGB [0 - 255]
* Ceiling color
C 225,30,0
RGB color
- Example of the mandatory part with a minimalist .cub scene:
R 1920 1080
NO ./path_to_the_north_texture
SO ./path_to_the_south_texture
WE ./path_to_the_west_texture
EA ./path_to_the_east_texture
S ./path_to_the_sprite_texture
F 220,100,0
C 225,30,0
1111111111111111111111111
1000000000110000000000001
1011000001110000002000001
1001000000000000000000001
111111111011000001110000000000001
100000000011000001110111111111111
11110111111111011100000010001
11110111111111011101010010001
11000000110101011100000010001
10002000000000001100000010001
10000000000000001101010010001
11000001110101011111011110N0111
11110111 1110101 101111010001
11111111 1111111 111111111111
- 파일에서 잘못된 구성이 발견되면 프로그램을 올바르게 종료하고 "Error\n"을 반환한 후 선택한 명시적 오류 메시지를 반환해야 합니다.
2. Bonus part
- 벽 충돌
- 스카이박스
- 바닥 / 천장 텍스처
- HUD : 전방 시현기 (조작자가 전방주시에 용이하도록 다양한 정보를 화면에 배치)
- 위/아래 보기 기능
- 점프 / 웅크리기
- 거리에 따른 그림자 효과
- 생명 바
- 많은 아이템
- 물체 충돌
- 물체/트랩을 주움으로써 포인트 획득 / 생명력 감소
- 여닫이 문
- 비밀의 문
- 총 발사 애니메이션 / 아이템 애니메이션
- 레벨
- 사운드 이펙트, 배경음악
- 마우스로 시점 전환
- 무기와 악당과 싸움기능
To earn all bonus points you need to validate at least 14 of them, so choose wisely but be careful to not waste your time!
반응형