[C] #1 미로찾기 게임

2021. 9. 27. 21:46·C
미로 생성

- 미로의 틀 생성

미로의 크기를 19 x 19로 생성할 것이다.

#define SIZE 19

define은 매크로를 정의하는 구문이다. 위와 같은 경우를 보통 단순 매크로라고 부르면 기본적인 틀은 다음과 같다.

#define 매크로이름 값

 

- 미로 선언

char maze[SIZE][SIZE];

19 x 19의 2차원 배열의 미로가 생성될 것이다.

 

- 미로 내부 구성

미로를 구성하기에 앞서, txt 파일을 통해 난이도 선택을 할 수 있도록 하려고 한다.

즉, 파일을 읽어오는 방식이다.

txt 파일을 c 프로젝트와 같은 위치에 둔다.

 

- 난이도 변수를 받는 LoadMaze

void LoadMaze(char num)
{
	char path[20] = "./Maze";
	strcat(path, &num);
	strcat(path, ".txt");
    
    	char str_tmp[50] = { 0, };
  	FILE* f = fopen(path, "r");
}

--> 상대경로로 작성한 모습이다. 상대경로를 사용할 경우, 개개인마다 경로를 변경할 필요가 없이 파일 위치만 잘 조정해주면 된다.

기본적인 상대경로를 설정하고, strcat 함수를 이용해 난이도 변수, 확장자를 합쳐준다.

 

파일을 읽을 때는 <stdio.h> 헤더파일에 정의되어 있는 fopen 함수로 파일을 열고, 파일 포인터를 리턴받는다.

 

- 미로 저장

파일의 내용을 미로에 저장해야 하는데, 함수 2개만 짚고 넘어가겠다.

1. fgets 함수

fgets(char *s, int size, FILE *stream)

gets_s 함수와 비슷하다. 최대 크기가 size 이하인 문자를 stream으로부터 읽어서 s에 저장한다.

중간에 EOF  혹은 개행문자를 만나면 읽기를 멈추는 함수이다.

 

2. strtok 함수

char *strtok(char *string, char const *delimiter)

문자열 string을 delimiter를 기준으로 잘라서 반환한다.

string에 NULL을 넣고 실행하면, 이전에 자르고 남은 문자열을 다시 delimiter로 잘라서 반환해준다.

 

--> 이 함수들을 포함한 함수들은 다음과 같다.

void LoadMaze(char num)
{
	//....
	for (int i = 0; i < SIZE; i++)
	    {
	        fgets(str_tmp, 50, f);
	        char* ptr = strtok(str_tmp, "\t");
	        for (int j = 0; j < SIZE; j++)
	        {
	            maze[i][j] = *ptr;
	            ptr = strtok(NULL, "\t");
	        }
	    }
}

첫 번째 반복문의 내부에서 fgets로 한 줄의 데이터를 가져온다.

그 후, strtok 함수를 이용해 탭으로 문자열을 분리한 뒤, 미로에 저장하는 구조이다.

'C' 카테고리의 다른 글

[C] #5 미로찾기 게임  (0) 2021.10.02
[C] #4 미로찾기 게임  (0) 2021.09.30
[C] #3 미로찾기 게임  (0) 2021.09.30
[C] #2 미로찾기 게임  (0) 2021.09.28
[C] 메모리 할당  (0) 2021.09.15
'C' 카테고리의 다른 글
  • [C] #4 미로찾기 게임
  • [C] #3 미로찾기 게임
  • [C] #2 미로찾기 게임
  • [C] 메모리 할당
Rix
Rix
  • Rix
    The Nights
    Rix
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (106)
      • 알고리즘 (5)
        • Python (1)
        • C++ (6)
      • CS (0)
      • Backend (20)
        • 로드맵 (1)
        • Java (17)
        • Spring (2)
      • TIL (0)
      • Flutter (13)
      • Python (7)
        • 디스코드 챗봇 (1)
        • 문법 (1)
        • 머신러닝 (2)
      • C (28)
        • 문법 (19)
      • ETC (2)
        • Git (2)
        • GitHub (1)
        • Hacking (4)
      • Game (13)
        • Unity (13)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    1152
    이중포인터
    이미지분류
    1546
    2차원 배열
    콘솔창
    Unity
    Failed to create GICache
    미로찾기
    공백포함
    C심화
    TensorFlow
    절대강좌유니티
    nullsafety
    코뮤니티
    C
    백준
    문자열 함수
    c언어
    DART
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
Rix
[C] #1 미로찾기 게임
상단으로

티스토리툴바