2) cub3D - map.cub 파일 처리

sorikikikim·2021년 6월 6일
0

cub3D

목록 보기
2/6
post-thumbnail

1) cub3d subject - description file 처리

  • cub3d 프로그램은 첫번째 인자로 description 파일을 받아와야 한다. (.cub 확장자)

  • 맵은 0(빈 공간), 1(벽), 2(아이템 -> 2021. 05 보너스 파트로 변경), N/S/E/W(플레이어의 위치 및 방향), 4가지 문자로만 이루어져 있어야 한다.

  • 맵은 벽으로 둘러싸여 있어야 한다. 그렇지 않으면 프로그램은 에러를 리턴해야한다.

  • description 파일에서 맵을 제외한 나머지 요소들은 한 줄 이상의 empty line으로 구분되어 있을 수 있다.

  • 맵은 항상 파일의 가장 하단에 있고, 그 외의 요소들은 배치 순서가 정해져있지 않다.

  • 맵을 제외한 나머지 요소들의 information은 한 칸 이상의 공백으로 구분되어 있을 수 있다.

  • 맵은 파일에서 보여지는 대로 파싱되어야 한다. 공백도 맵에서 유효한 부분이며, 공백을 어떻게 처리할지는 자유롭게 선택할 수 있다.

  • 룰을 지킨 맵이라면 어떤 형태이든 파싱할 수 있어야 한다.

  • 맵을 제외한 요소들의 첫번째 information은 type identifier이다. (한 개 혹은 두 개의 문자로 구성)

    다음과 같은 순서로 information들이 나열된다.

	Resolution (해상도) : R 1920 1080
       		   	    [구분자 R] [x 렌더 크기] [y 렌더 크기]
	-> 2021. 05 삭제
	EWSN Texture (동/서/남/북 쪽 텍스처) : EA/WE/SO/NO ./path
				  	  [구분자 EA/WE/SO/NO] [텍스처 경로]

	Sprite texture (아이템 텍스처) : S ./path
                 	             [구분자 S] [텍스처 경로]

	Floor color (바닥 색상) : F 220,100,0
                      	       [구분자 F] [RGB 색상]

	Ceiling color (천장 색상) : C 225,10,0
                  		 [구분자 C] [RGB 색상]
  • 만약 파일에 잘못된 설정이 존재하는 경우, 프로그램은 반드시 적절하게 종료되고 에러 메세지를 출력해야 한다.

  • 에러 메세지는 “Error\n” 뒤에 구체적인 에러메세지를 작성해서 출력하면 된다. 뒤에 올 메세지는 자유롭게 작성할 수 있다.

2) Description 처리 과정 생각해보기

  1. main 함수에서 description 파일 인자로 받아오기
    : 첫번째 인자로 map.cub를 받아온다.

read_file() 시작

  1. 파일 유효성 검사하기
    : parsing() -> 파일 이름 검사, fd = open() 에러 검사

  2. 파일 한 줄씩 읽기 & 저장하기
    : get_next_line()으로 map.cub파일을 한 줄씩 받아 gnl_error 검사
    받은 line을 append()로 t_lines의 *element에 동적할당(line 한 줄, null 한 줄)하고 한 줄씩 붙여서(기존 공간은 할당 해제) 저장해준다.

  3. map 유효성 검사 & 파싱하기

  4. information 파싱 & 저장하기

  5. 레이캐스팅으로 맵 렌더링하기

    • --save 옵션이 있는 경우 렌더링 된 이미지를 bmp 파일로 저장하고 종료하기 -> 2021. 05 삭제
    • --save 옵션이 없는 경우 mlx로 창 띄워서 렌더링하기
    • 유저의 키/마우스 입력받고 처리하기

Hits

0개의 댓글

관련 채용 정보