28 if (!first_line || !info)
31 len = strlen(first_line);
35 while (i >= 0 && (first_line[i] ==
'\n' || first_line[i] ==
'\r' ||
36 first_line[i] ==
' '))
40 info->
full = first_line[i--];
43 while (i >= 0 && (first_line[i] ==
'\n' || first_line[i] ==
'\r' ||
44 first_line[i] ==
' '))
51 while (i >= 0 && (first_line[i] ==
'\n' || first_line[i] ==
'\r' ||
52 first_line[i] ==
' '))
56 info->
empty = first_line[i--];
59 while (i >= 0 && first_line[i] ==
' ')
68 if (first_line[j] <
'0' || first_line[j] >
'9')
73 info->
rows = atoi(first_line);
120 if (!stream || !map || !map->
info.
rows)
123 map->
data = (
char **)malloc(
sizeof(
char *) * map->
info.
rows);
129 while (i < map->info.rows && (read = getline(&line, &len, stream)) != -1) {
130 if (read == 0 || line[read - 1] !=
'\n') {
135 int current_cols = read - 1;
140 else if (map->
info.
cols != current_cols) {
145 map->
data[i] = (
char *)malloc(
sizeof(
char) * (map->
info.
cols + 1));
155 while (j < map->info.cols) {
194 char *first_line = NULL;
207 read = getline(&first_line, &len, stream);
208 if (read == -1 || first_line[read - 1] !=
'\n') {
250 while (i < map->info.rows) {
int read_map_data(FILE *stream, t_map *map)
マップデータを読み込む
int parse_map_header(char *first_line, t_map_info *info)
マップの最初の行を解析する
void free_map(t_map *map)
マップのメモリを解放する
t_map * load_map(FILE *stream)
マップ全体をロードする
int cols
マップの列数 (最初のデータ行を読んでから決定)
char ** data
マップデータ(2次元配列)。data[row][col] でアクセス