[cub3d] cub3d 어떻게 해야할까?

채명석·2021년 4월 14일
0

42Seoul

목록 보기
6/45

1. cub3d소개

cub3d는 유명한 존 카맥과 존 로메로가 설립한 이드 소프트웨어에서 개발하고, 1992년 아포기 소프트웨어에서 출시한, 울펜슈타인 3D를 구현해보는 과제입니다.
42seoul에서 제공하는 miniLibX를 통해 다양한 함수를 사용할 수 있으니 구현하기전에 어떤 함수가 있는지 헤더파일을 먼저 보는게 중요합니다!

2. 어떤걸 구현해야 할까?

  • 여러분의 프로그램은 벽 대신 아이템(스프라이트)을 표시할 수 있어야 합니다.
    여러분의 프로그램은 바닥과 천장의 색을 서로 다르게 설정할 수 있어야 합니다.

  • 언젠가 Deepthougt가 여러분의 프로젝트를 평가할 수 있는 눈을 가지게 될 경우를 위해, 여러분의 프로그램은 두 번째 인자가 "--save"일 때 첫 번째 렌더링된 이미지를 bmp 형식으로 저장해야 합니다.

  • 두번재 인자가 없을 경우, 프로그램은 다음 규칙을 준수하면서 화면 창에 영상을 표시합니다.

    • 키보드의 왼쪽과 오른쪽 화살표 키는 미로에서 왼쪽과 오른쪽을 볼 수 있도록 해주어야 합니다.
    • W, A, S, D 키는 미로를 통해 시점을 이동할 수 있어야 합니다.
    • ESC를 누르면 창이 닫히고 프로그램이 정상적으로 종료되어야 합니다.
    • 창 상단 표시줄에 있는 빨간색 십자가를 클릭하면 창이 닫히고 프로그램이 정상적으로 종료되어야 합니다.
    • 지도에 표시된 화면 크기가 디스플레이 해상도보다 크면 현재 디스플레이 해상도에 따라 윈도우 크기가 설정될 것입니다.
    • miniLibX의 이미지를 사용하는 것을 적극 권장합니다.
  • 여러분의 프로그램은 먼저 .cub 확장자가 있는 화면에 대한 설명이 들어있는 파일을 첫 번째 인수로 받아들여야 합니다.

    • 지도에는 4개의 문자로만 구성되어야 합니다. (빈 공간인 경우 0, 벽인 경우 1, 아이템인 경우 2, 플레이어의 출발 위치와 태어난 위치에서 바라보는 방향인 N, S, E, W)

    • 지도는 벽으로 둘러쌓여 있어야 합니다. 그렇지 않다면 프로그램은 오류를 반환해야 합니다.

    • 지도 내용을 제외하고는, 각각의 요소들은 하나 혹은 그 이상의 빈 줄로 분리될 수 있습니다.

    • 항상 마지막에 있어야 하는 지도 내용을 제외하고는, 각각의 요소들은 어떠한 순서로도 파일안에 구성될 수 있습니다.

    • 지도를 제외하고, 요소에서 각 유형의 정보는 하나 이상의 공백으로 구분될 수 있습니다.

    • 지도는 파일 내에서 보이는 것처럼 불러 올 수 있어야합니다. 공백은 지도의 유효한 부분이며, 그 처리는 여러분의 몫입니다. 규칙대로 만들어진 어떠한 종류의 지도는 불러올 수 있어야 합니다.

    • .cub 파일의 예:

    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

3. 기타 팁

0개의 댓글