cub3d 프로그램은 첫번째 인자로 description 파일을 받아와야 한다. (.cub 확장자)
맵은 0(빈 공간), 1(벽), 2(아이템 -> 2021. 05 보너스 파트로 변경), N/S/E/W(플레이어의 위치 및 방향), 4가지 문자로만 이루어져 있어야 한다.
맵은 벽으로 둘러싸여 있어야 한다. 그렇지 않으면 프로그램은 에러를 리턴해야한다.
description 파일에서 맵을 제외한 나머지 요소들은 한 줄 이상의 empty line으로 구분되어 있을 수 있다.
맵은 항상 파일의 가장 하단에 있고, 그 외의 요소들은 배치 순서가 정해져있지 않다.
맵을 제외한 나머지 요소들의 information은 한 칸 이상의 공백으로 구분되어 있을 수 있다.
맵은 파일에서 보여지는 대로 파싱되어야 한다. 공백도 맵에서 유효한 부분이며, 공백을 어떻게 처리할지는 자유롭게 선택할 수 있다.
룰을 지킨 맵이라면 어떤 형태이든 파싱할 수 있어야 한다.
맵을 제외한 요소들의 첫번째 information은 type identifier이다. (한 개 혹은 두 개의 문자로 구성)
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” 뒤에 구체적인 에러메세지를 작성해서 출력하면 된다. 뒤에 올 메세지는 자유롭게 작성할 수 있다.
read_file() 시작
파일 유효성 검사하기
: parsing()
-> 파일 이름 검사, fd = open() 에러 검사
파일 한 줄씩 읽기 & 저장하기
: get_next_line()
으로 map.cub파일을 한 줄씩 받아 gnl_error 검사
받은 line을 append()
로 t_lines의 *element
에 동적할당(line 한 줄, null 한 줄)하고 한 줄씩 붙여서(기존 공간은 할당 해제) 저장해준다.
map 유효성 검사 & 파싱하기
information 파싱 & 저장하기
레이캐스팅으로 맵 렌더링하기