1
0

🏗️」 wip: parsing map

This commit is contained in:
Maelys
2024-09-12 13:01:04 +02:00
parent 2ec96bf194
commit 172dadff75
7 changed files with 98 additions and 57 deletions

View File

@ -18,6 +18,7 @@ SRCS = src/utils/mess_error.c \
src/utils/parse_utils.c \ src/utils/parse_utils.c \
src/parsing/check_map.c \ src/parsing/check_map.c \
src/parsing/check_arg.c \ src/parsing/check_arg.c \
src/parsing/principal_pars.c \
src/cub3d.c src/cub3d.c
OBJS = $(addprefix $(OBJSDIR), $(SRCS:.c=.o)) OBJS = $(addprefix $(OBJSDIR), $(SRCS:.c=.o))

View File

@ -6,7 +6,7 @@
/* By: madumerg <madumerg@42angouleme.fr> +#+ +:+ +#+ */ /* By: madumerg <madumerg@42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/09/04 17:01:05 by madumerg #+# #+# */ /* Created: 2024/09/04 17:01:05 by madumerg #+# #+# */
/* Updated: 2024/09/11 14:54:17 by madumerg ### ########.fr */ /* Updated: 2024/09/12 12:54:48 by madumerg ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -20,15 +20,7 @@
# include <unistd.h> # include <unistd.h>
# include <fcntl.h> # include <fcntl.h>
# include <stdio.h> # include <stdio.h>
# include "parsing.h"
int check_format_file(char *file);
int check_err_arg(int argc, char **argv);
char **parse_map(char *map);
int err_mess(char *str);
int verif_all_map(char **map);
int verif_char(char c);
int check_char_map(char **map);
void convert_white_s(char *str);
#endif #endif

37
includes/parsing.h Normal file
View File

@ -0,0 +1,37 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* parsing.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: madumerg <madumerg@42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/09/12 12:49:16 by madumerg #+# #+# */
/* Updated: 2024/09/12 12:57:11 by madumerg ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef PARSING_H
# define PARSING_H
//check_arg.c
int check_err_arg(int ac, char **av);
int check_format_file(char *file);
//check_map.c
int err_not_close(char after, char before, char down, char up);
int actual_char(char actual);
int check_map_close(char **map);
int count_player(char **map);
int check_char_map(char **map);
//principal_pars.c
int verif_all_map(char **map);
char **parse_map(char *map);
//mess_error.c in utils
int err_mess(char *str);
//parse_utils.c
void convert_white_s(char *str);
int verif_char(char c);
#endif

17
map.cub
View File

@ -1,9 +1,8 @@
111111111111111111111111 11111
1 000000000000111111111111 100S1
11111111 1111110111111111000000000001 11111
1000000000000000 00000000000000000001
100000000000000000000000 000001111111 11111
1111111111111111111111111111111 11111
11111 11101
10001 11111
11111

View File

@ -6,7 +6,7 @@
/* By: madumerg <madumerg@42angouleme.fr> +#+ +:+ +#+ */ /* By: madumerg <madumerg@42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/09/04 21:33:35 by madumerg #+# #+# */ /* Created: 2024/09/04 21:33:35 by madumerg #+# #+# */
/* Updated: 2024/09/11 22:12:13 by madumerg ### ########.fr */ /* Updated: 2024/09/12 12:57:41 by madumerg ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View File

@ -6,7 +6,7 @@
/* By: madumerg <madumerg@42angouleme.fr> +#+ +:+ +#+ */ /* By: madumerg <madumerg@42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/09/11 11:24:13 by madumerg #+# #+# */ /* Created: 2024/09/11 11:24:13 by madumerg #+# #+# */
/* Updated: 2024/09/11 22:14:44 by madumerg ### ########.fr */ /* Updated: 2024/09/12 12:57:24 by madumerg ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -81,17 +81,6 @@ int count_player(char **map)
return (0); return (0);
} }
int verif_all_map(char **map)
{
if (check_char_map(map) == 1)
return (err_mess(WRONG_CHAR));
if (count_player(map) == 1)
return (err_mess(ERR_PLAYER));
if (check_map_close(map) == 1)
return (err_mess(NOT_CLOSE));
return (0);
}
int check_char_map(char **map) int check_char_map(char **map)
{ {
int y; int y;
@ -101,7 +90,6 @@ int check_char_map(char **map)
while (map[y]) while (map[y])
{ {
x = 0; x = 0;
convert_white_s(map[y]);
while (map[y][x]) while (map[y][x])
{ {
if (verif_char(map[y][x]) == 1) if (verif_char(map[y][x]) == 1)
@ -112,27 +100,3 @@ int check_char_map(char **map)
} }
return (0); return (0);
} }
char **parse_map(char *map)
{
int fd;
char **parse_map;
char *save;
char *join;
fd = open(map, O_RDONLY);
save = get_next_line(fd);
join = ft_calloc(1, 1);
if (!join)
return (NULL);
while (save != NULL)
{
join = ft_strjoin(join, save);
free(save);
save = get_next_line(fd);
}
parse_map = ft_split(join, '\n');
free(join);
close(fd);
return (parse_map);
}

View File

@ -0,0 +1,48 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* principal_pars.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: madumerg <madumerg@42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/09/12 12:44:52 by madumerg #+# #+# */
/* Updated: 2024/09/12 12:54:54 by madumerg ### ########.fr */
/* */
/* ************************************************************************** */
#include "cub3d.h"
int verif_all_map(char **map)
{
if (check_char_map(map) == 1)
return (err_mess(WRONG_CHAR));
if (count_player(map) == 1)
return (err_mess(ERR_PLAYER));
if (check_map_close(map) == 1)
return (err_mess(NOT_CLOSE));
return (0);
}
char **parse_map(char *map)
{
int fd;
char **parse_map;
char *save;
char *join;
fd = open(map, O_RDONLY);
save = get_next_line(fd);
join = ft_calloc(1, 1);
if (!join)
return (NULL);
while (save != NULL)
{
join = ft_strjoin(join, save);
free(save);
save = get_next_line(fd);
}
parse_map = ft_split(join, '\n');
free(join);
close(fd);
return (parse_map);
}