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입니다.

간단한 유효한 맵

  • 지도를 벽으로 둘러싸거나 닫아야 합니다. 그렇지 않으면 프로그램에서 오류를 반환해야 합니다.
  • 지도 내용을 제외하고 각 요소 유형은 하나 이상의 빈 줄로 구분할 수 있습니다.
  • 항상 마지막이어야 하는 지도 내용을 제외하고, 각 요소 유형은 파일의 임의의 순서로 설정할 수 있습니다.
  • 맵을 제외하고 요소에서 각 정보 유형은 하나 이상의 공백으로 구분할 수 있습니다.
  • 지도는 파일에 표시된 대로 구문 분석해야 합니다. 공백은 지도에서 유효한 부분이며 사용자가 처리하기에 따라 다릅니다.
  • 맵 규칙이 적용되는 한 모든 종류의 맵을 구문 분석할 수 있어야 합니다.
  • 각 요소(지도 제외)의 첫 번째 정보는 유형 식별자(하나 또는 두 개의 문자로 구성됨)이며, 그 다음에 각 객체에 대한 모든 특정 정보가 다음과 같이 엄격한 순서로 표시됩니다.

* 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!
반응형