From 6c9d2b3931039eadf36a2432dbee1c67d58f76f9 Mon Sep 17 00:00:00 2001 From: Maelys Dumergue Date: Sun, 29 Sep 2024 20:40:33 +0200 Subject: [PATCH] Parsing Finish --- includes/cub3d.h | 10 +------- includes/parsing.h | 11 +++++++-- libft/gnl/get_next_line.c | 29 ++++++++++++++++++++++- map.cub | 34 +++++++++++++++++++++------ so_texture.png | 0 src/cub3d.c | 18 ++++---------- src/parsing/check_arg.c | 4 ++-- src/parsing/check_id_text.c | 16 ++++++------- src/parsing/check_image.c | 12 +++++----- src/parsing/check_map.c | 4 ++-- src/parsing/check_rgb.c | 13 ++++++----- src/parsing/color_utils.c | 4 ++-- src/parsing/find_player.c | 4 ++-- src/parsing/principal_pars.c | 44 +++++++++++++++-------------------- src/utils/clear_free.c | 4 ++-- src/utils/mess_error.c | 4 ++-- src/utils/parse_utils.c | 29 ++--------------------- src/utils/parse_utils_three.c | 7 ++++-- src/utils/parse_utils_two.c | 16 ++++--------- src/utils/utils.c | 4 ++-- 20 files changed, 136 insertions(+), 131 deletions(-) mode change 100644 => 100755 so_texture.png diff --git a/includes/cub3d.h b/includes/cub3d.h index 3d5a02f..2461afd 100644 --- a/includes/cub3d.h +++ b/includes/cub3d.h @@ -6,21 +6,13 @@ /* By: madumerg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/04 17:01:05 by madumerg #+# #+# */ -/* Updated: 2024/09/28 15:55:04 by madumerg ### ########.fr */ +/* Updated: 2024/09/29 20:29:55 by madumerg ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef CUB3D_H # define CUB3D_H -# include "libft.h" -# include "ft_printf.h" -# include "mess_err.h" -# include -# include -# include -# include -# include # include "parsing.h" #endif diff --git a/includes/parsing.h b/includes/parsing.h index 435338c..ceddb67 100644 --- a/includes/parsing.h +++ b/includes/parsing.h @@ -6,13 +6,20 @@ /* By: madumerg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/12 12:49:16 by madumerg #+# #+# */ -/* Updated: 2024/09/28 17:54:07 by madumerg ### ########.fr */ +/* Updated: 2024/09/29 20:32:01 by madumerg ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef PARSING_H # define PARSING_H +# include "libft.h" +# include "ft_printf.h" +# include "mess_err.h" +# include +# include +# include + typedef struct s_coord { int x; @@ -73,7 +80,7 @@ char **parse_file(char *map, int ct, int i); int err_mess(char *str); //parse_utils.c -char **info_map(char **file); +void info_map(char **file, char ***f_part); int verif_char(char c); int space_line(char *line); diff --git a/libft/gnl/get_next_line.c b/libft/gnl/get_next_line.c index 8827b3c..932c292 100644 --- a/libft/gnl/get_next_line.c +++ b/libft/gnl/get_next_line.c @@ -12,6 +12,33 @@ #include "../includes/libft.h" +char *ft_strjoin_gnl(char *s1, char *s2) +{ + size_t len; + size_t i; + size_t j; + char *str; + + if (!s2) + return (NULL); + len = ft_strlen(s1) + ft_strlen(s2); + str = malloc(sizeof(char) * (len + 1)); + if (!str) + return (NULL); + i = 0; + while (s1[i] != '\0') + { + str[i] = s1[i]; + i++; + } + j = 0; + while (s2[j] != '\0') + str[i++] = s2[j++]; + free(s1); + str[i] = '\0'; + return (str); +} + char ft_end_of_line(char *line, char *buffer) { int i; @@ -60,7 +87,7 @@ char *get_next_line(int fd) buffer = ft_calloc(sizeof(char), (BUFFER_SIZE + 1)); while (buffer && line) { - line = ft_strjoin(line, buffer); + line = ft_strjoin_gnl(line, buffer); if (!line) return (NULL); if (ft_end_of_line(line, buffer) == 1) diff --git a/map.cub b/map.cub index 1bdb4fc..8aba1ae 100644 --- a/map.cub +++ b/map.cub @@ -4,17 +4,37 @@ +NO ./no_texture.png + +SO ./so_texture.png - -NO ./no_texture.png - SO ./so_texture.png -WE ./we_texture.png +WE ./we_texture.png EA ./ea_texture.png -C 7,4,4 +C 72,48,4 +F 7,4,46 - F 7,4,40 111111 1000W1 -111111 +1111111 + + + + +11111111111111 + 11 + 1110111 +1111111111111111 + + + + 111111111111111 +111111111111111111111111 + + + + + + + diff --git a/so_texture.png b/so_texture.png old mode 100644 new mode 100755 diff --git a/src/cub3d.c b/src/cub3d.c index 05e241b..09a5f13 100644 --- a/src/cub3d.c +++ b/src/cub3d.c @@ -6,7 +6,7 @@ /* By: madumerg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/04 16:58:27 by madumerg #+# #+# */ -/* Updated: 2024/09/28 20:12:50 by madumerg ### ########.fr */ +/* Updated: 2024/09/29 20:36:29 by madumerg ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,6 +26,7 @@ t_pars init_pars(void) new.so_png = NULL; new.we_png = NULL; new.ea_png = NULL; + new.map = NULL; return (new); } @@ -41,22 +42,13 @@ int basics_check(int ac, char **av, t_pars *pars) int main(int ac, char **av) { t_pars pars; - int i; - i = 0; pars = init_pars(); if (basics_check(ac, av, &pars) == 1) + { + free_pars(&pars); return (1); - printf ("f color %d\n", pars.f_color); - printf ("c color %d\n", pars.c_color); - printf ("x = %d\n", pars.coor.x); - printf ("y = %d\n", pars.coor.y); - printf ("no_png --> %s\n", pars.no_png); - printf ("so_png --> %s\n", pars.so_png); - printf ("we_png --> %s\n", pars.we_png); - printf ("ea_png --> %s\n", pars.ea_png); - while (pars.map[i]) - printf("|%s|\n", pars.map[i++]); + } free_pars(&pars); return (0); } diff --git a/src/parsing/check_arg.c b/src/parsing/check_arg.c index 7d9eeb7..72a4aa3 100644 --- a/src/parsing/check_arg.c +++ b/src/parsing/check_arg.c @@ -6,11 +6,11 @@ /* By: madumerg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/04 21:33:35 by madumerg #+# #+# */ -/* Updated: 2024/09/12 12:57:41 by madumerg ### ########.fr */ +/* Updated: 2024/09/29 20:36:43 by madumerg ### ########.fr */ /* */ /* ************************************************************************** */ -#include "cub3d.h" +#include "parsing.h" int check_err_arg(int ac, char **av) { diff --git a/src/parsing/check_id_text.c b/src/parsing/check_id_text.c index a5bf93d..c73faa4 100644 --- a/src/parsing/check_id_text.c +++ b/src/parsing/check_id_text.c @@ -6,25 +6,25 @@ /* By: madumerg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/16 09:38:32 by madumerg #+# #+# */ -/* Updated: 2024/09/28 17:06:14 by madumerg ### ########.fr */ +/* Updated: 2024/09/29 20:36:52 by madumerg ### ########.fr */ /* */ /* ************************************************************************** */ -#include "cub3d.h" +#include "parsing.h" int detect_info(char **tab, t_pars *pars) { - if (ft_strcmp("NO", tab[0]) == 0 && count_tab(tab) == 2) + if (ft_strncmp("NO", tab[0], 2) == 0 && count_tab(tab) == 2) return (check_texture(tab[0], tab[1], pars)); - else if (ft_strcmp("SO", tab[0]) == 0 && count_tab(tab) == 2) + else if (ft_strncmp("SO", tab[0], 2) == 0 && count_tab(tab) == 2) return (check_texture(tab[0], tab[1], pars)); - else if (ft_strcmp("WE", tab[0]) == 0 && count_tab(tab) == 2) + else if (ft_strncmp("WE", tab[0], 2) == 0 && count_tab(tab) == 2) return (check_texture(tab[0], tab[1], pars)); - else if (ft_strcmp("EA", tab[0]) == 0 && count_tab(tab) == 2) + else if (ft_strncmp("EA", tab[0], 2) == 0 && count_tab(tab) == 2) return (check_texture(tab[0], tab[1], pars)); - else if (ft_strcmp("F", tab[0]) == 0 && count_tab(tab) == 2) + else if (ft_strncmp("F", tab[0], 1) == 0 && count_tab(tab) == 2) return (check_format_rgb("F", tab, pars)); - else if (ft_strcmp("C", tab[0]) == 0 && count_tab(tab) == 2) + else if (ft_strncmp("C", tab[0], 1) == 0 && count_tab(tab) == 2) return (check_format_rgb("C", tab, pars)); else return (err_mess(NOT_FOUND)); diff --git a/src/parsing/check_image.c b/src/parsing/check_image.c index c64790c..4bb134c 100644 --- a/src/parsing/check_image.c +++ b/src/parsing/check_image.c @@ -6,11 +6,11 @@ /* By: madumerg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/19 10:44:07 by madumerg #+# #+# */ -/* Updated: 2024/09/28 20:14:47 by madumerg ### ########.fr */ +/* Updated: 2024/09/29 20:37:04 by madumerg ### ########.fr */ /* */ /* ************************************************************************** */ -#include "cub3d.h" +#include "parsing.h" int check_dup_img(t_pars *pars) { @@ -30,14 +30,14 @@ int assign_img_two(char *sign, char *path, t_pars *pars) if (ft_strcmp("WE", sign) == 0) { if (pars->we_png == NULL) - pars->we_png = path; + pars->we_png = ft_strdup(path); else return (err_mess(DUP_ACR)); } else if (ft_strcmp("EA", sign) == 0) { if (pars->ea_png == NULL) - pars->ea_png = path; + pars->ea_png = ft_strdup(path); else return (err_mess(DUP_ACR)); } @@ -49,14 +49,14 @@ int assign_img(char *sign, char *path, t_pars *pars) if (ft_strcmp("NO", sign) == 0) { if (pars->no_png == NULL) - pars->no_png = path; + pars->no_png = ft_strdup(path); else return (err_mess(DUP_ACR)); } else if (ft_strcmp("SO", sign) == 0) { if (pars->so_png == NULL) - pars->so_png = path; + pars->so_png = ft_strdup(path); else return (err_mess(DUP_ACR)); } diff --git a/src/parsing/check_map.c b/src/parsing/check_map.c index fe28edd..6740038 100644 --- a/src/parsing/check_map.c +++ b/src/parsing/check_map.c @@ -6,11 +6,11 @@ /* By: madumerg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/11 11:24:13 by madumerg #+# #+# */ -/* Updated: 2024/09/28 15:48:38 by madumerg ### ########.fr */ +/* Updated: 2024/09/29 20:37:16 by madumerg ### ########.fr */ /* */ /* ************************************************************************** */ -#include "cub3d.h" +#include "parsing.h" int err_not_close(char after, char before, char down, char up) { diff --git a/src/parsing/check_rgb.c b/src/parsing/check_rgb.c index 7dcd851..8973dd3 100644 --- a/src/parsing/check_rgb.c +++ b/src/parsing/check_rgb.c @@ -6,11 +6,11 @@ /* By: madumerg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/16 09:36:07 by madumerg #+# #+# */ -/* Updated: 2024/09/28 17:08:01 by madumerg ### ########.fr */ +/* Updated: 2024/09/29 20:37:25 by madumerg ### ########.fr */ /* */ /* ************************************************************************** */ -#include "cub3d.h" +#include "parsing.h" int check_nb_color(char *r, char *g, char *b) { @@ -20,14 +20,12 @@ int check_nb_color(char *r, char *g, char *b) return (0); } -int save_color(char *tab, t_pars *pars, int j) +int save_color(char *tab, t_pars *pars, int j, int i) { char *r; char *g; char *b; - int i; - i = 0; while (tab[i] != ',') i++; r = ft_strndup_color(tab, 0, i); @@ -44,6 +42,9 @@ int save_color(char *tab, t_pars *pars, int j) if (check_nb_color(r, g, b) == -1) return (-1); pars->color = create_argb(ft_atoi(r), ft_atoi(g), ft_atoi(b)); + free(r); + free(g); + free(b); return (0); } @@ -73,7 +74,7 @@ int check_format_rgb(char *sign, char **tab, t_pars *pars) return (err_mess(INVALID_CHAR)); if (count_precise_char(tab[1], ',') == 1) return (err_mess(WRONG_F_RGB)); - if (save_color(tab[1], pars, 0) == -1) + if (save_color(tab[1], pars, 0, 0) == -1) return (err_mess(ERR_COLOR)); if (ft_strcmp(sign, "F") == 0) pars->f_color = pars->color; diff --git a/src/parsing/color_utils.c b/src/parsing/color_utils.c index 9fb785d..bce8be1 100644 --- a/src/parsing/color_utils.c +++ b/src/parsing/color_utils.c @@ -6,11 +6,11 @@ /* By: madumerg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/18 19:44:37 by madumerg #+# #+# */ -/* Updated: 2024/09/28 17:32:06 by madumerg ### ########.fr */ +/* Updated: 2024/09/29 20:37:35 by madumerg ### ########.fr */ /* */ /* ************************************************************************** */ -#include "cub3d.h" +#include "parsing.h" int check_dup_color(t_pars *pars) { diff --git a/src/parsing/find_player.c b/src/parsing/find_player.c index 1e9a9ab..612c773 100644 --- a/src/parsing/find_player.c +++ b/src/parsing/find_player.c @@ -6,11 +6,11 @@ /* By: madumerg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/17 14:57:11 by madumerg #+# #+# */ -/* Updated: 2024/09/19 09:55:38 by madumerg ### ########.fr */ +/* Updated: 2024/09/29 20:37:45 by madumerg ### ########.fr */ /* */ /* ************************************************************************** */ -#include "cub3d.h" +#include "parsing.h" int search_letter(char **map, int i, char l) { diff --git a/src/parsing/principal_pars.c b/src/parsing/principal_pars.c index 4f575e9..85479dd 100644 --- a/src/parsing/principal_pars.c +++ b/src/parsing/principal_pars.c @@ -6,11 +6,11 @@ /* By: madumerg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/12 12:44:52 by madumerg #+# #+# */ -/* Updated: 2024/09/28 20:40:30 by madumerg ### ########.fr */ +/* Updated: 2024/09/29 20:37:58 by madumerg ### ########.fr */ /* */ /* ************************************************************************** */ -#include "cub3d.h" +#include "parsing.h" int all_data_verif(char **tab, t_pars *pars) { @@ -22,57 +22,51 @@ int all_data_verif(char **tab, t_pars *pars) return (0); } -int check_info(char **l, t_pars *pars) +int check_info(char **file, t_pars *pars) { char **tab; int i; + int ct; + ct = 0; i = 0; - tab = ft_calloc(sizeof(char *), 6); - if (!tab) - return (1); - while (l[i]) + while (file[i]) { - tab = ft_split(l[i], ' '); - if (tab == NULL) - return (1); - if (all_data_verif(tab, pars) == 1) - return (1); + if (ct == 6) + break ; + if (space_line(file[i]) == 1) + { + ct++; + tab = ft_split(file[i], ' '); + if (tab == NULL || all_data_verif(tab, pars) == 1) + return (1); + free_tab(tab); + } i++; } - free_tab(tab); return (0); } int verif_info_file(char *av, t_pars *pars) { char **map; - char **f_part; map = parse_file(av, 0, 1); if (map == NULL) return (err_mess(CRASH)); - f_part = info_map(map); - if (f_part == NULL) - { - free_tab(map); - return (err_mess(CRASH)); - } - if (check_info(f_part, pars) == 1 || check_dup_img(pars) == 1 || \ - check_dup_color(pars) == 1) + if (check_info(map, pars) == 1 || check_dup_img(pars) == 1 || \ + check_dup_color(pars) == 1 || all_skip(map, pars) == 1) { free_tab(map); return (1); } - if (all_skip(map, pars) == 1) - return (1); + free_tab(map); return (0); } int verif_all_map(char **map, t_pars *pars) { pars->map = alloc_map(map, longest_line(map)); - free_tab(map); if (pars->map == NULL) return (err_mess(CRASH)); if (check_char_map(pars->map) == 1) diff --git a/src/utils/clear_free.c b/src/utils/clear_free.c index 7c7ef07..fcd55fe 100644 --- a/src/utils/clear_free.c +++ b/src/utils/clear_free.c @@ -6,11 +6,11 @@ /* By: madumerg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/28 17:37:10 by madumerg #+# #+# */ -/* Updated: 2024/09/28 17:43:25 by madumerg ### ########.fr */ +/* Updated: 2024/09/29 20:34:58 by madumerg ### ########.fr */ /* */ /* ************************************************************************** */ -#include "cub3d.h" +#include "parsing.h" void free_tab(char **tab) { diff --git a/src/utils/mess_error.c b/src/utils/mess_error.c index c199dc9..ef7dbb2 100644 --- a/src/utils/mess_error.c +++ b/src/utils/mess_error.c @@ -6,11 +6,11 @@ /* By: madumerg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/07 17:35:14 by madumerg #+# #+# */ -/* Updated: 2024/09/11 11:10:48 by adjoly ### ########.fr */ +/* Updated: 2024/09/29 20:35:10 by madumerg ### ########.fr */ /* */ /* ************************************************************************** */ -#include "cub3d.h" +#include "parsing.h" int err_mess(char *str) { diff --git a/src/utils/parse_utils.c b/src/utils/parse_utils.c index 62f5ae6..9df2e87 100644 --- a/src/utils/parse_utils.c +++ b/src/utils/parse_utils.c @@ -6,11 +6,11 @@ /* By: madumerg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/11 14:20:54 by madumerg #+# #+# */ -/* Updated: 2024/09/28 17:32:42 by madumerg ### ########.fr */ +/* Updated: 2024/09/29 20:35:22 by madumerg ### ########.fr */ /* */ /* ************************************************************************** */ -#include "cub3d.h" +#include "parsing.h" int space_line(char *line) { @@ -30,31 +30,6 @@ int space_line(char *line) return (0); } -char **info_map(char **file) -{ - char **f_part; - int i; - int j; - - i = 0; - j = 0; - f_part = ft_calloc(6 + 1, sizeof(char *)); - if (!f_part) - return (NULL); - while (i >= j) - { - if (j == 6) - break ; - if (space_line(file[i]) == 1) - { - f_part[j] = file[i]; - j++; - } - i++; - } - return (f_part); -} - int verif_char(char c) { if (c != '1' && c != '0' && c != 'N' && c != 'S' && c != 'W' && \ diff --git a/src/utils/parse_utils_three.c b/src/utils/parse_utils_three.c index 933c2aa..7ba2ccf 100644 --- a/src/utils/parse_utils_three.c +++ b/src/utils/parse_utils_three.c @@ -6,11 +6,11 @@ /* By: madumerg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/28 15:40:12 by madumerg #+# #+# */ -/* Updated: 2024/09/28 17:32:55 by madumerg ### ########.fr */ +/* Updated: 2024/09/29 20:35:35 by madumerg ### ########.fr */ /* */ /* ************************************************************************** */ -#include "cub3d.h" +#include "parsing.h" char *fill_line(char *l, int size) { @@ -56,7 +56,10 @@ char **alloc_map(char **old_map, int size) { tmp[i] = fill_line(old_map[j], size); if (tmp[i] == NULL) + { + free_tab(tmp); return (NULL); + } i++; j++; } diff --git a/src/utils/parse_utils_two.c b/src/utils/parse_utils_two.c index a6e3933..aeceab6 100644 --- a/src/utils/parse_utils_two.c +++ b/src/utils/parse_utils_two.c @@ -6,11 +6,11 @@ /* By: madumerg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/17 15:12:28 by madumerg #+# #+# */ -/* Updated: 2024/09/28 20:44:38 by madumerg ### ########.fr */ +/* Updated: 2024/09/29 20:35:50 by madumerg ### ########.fr */ /* */ /* ************************************************************************** */ -#include "cub3d.h" +#include "parsing.h" int ft_count_line_map(char **file, int y) { @@ -34,21 +34,15 @@ void replace_nl(char *l) int recup_map(char **old_map, int i, t_pars *pars) { - char **tmp; - int j; + int k; - j = 0; - tmp = ft_calloc(sizeof(char *), ft_count_line_map(old_map, i)); - if (!tmp) - return (err_mess(CRASH)); + k = i; while (old_map[i]) { replace_nl(old_map[i]); - tmp[j] = old_map[i]; - j++; i++; } - if (verif_all_map(tmp, pars) == 1) + if (verif_all_map(&old_map[k], pars) == 1) return (1); return (0); } diff --git a/src/utils/utils.c b/src/utils/utils.c index 205a464..866d0b3 100644 --- a/src/utils/utils.c +++ b/src/utils/utils.c @@ -6,11 +6,11 @@ /* By: madumerg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/20 09:57:13 by madumerg #+# #+# */ -/* Updated: 2024/09/28 14:55:56 by madumerg ### ########.fr */ +/* Updated: 2024/09/29 20:36:00 by madumerg ### ########.fr */ /* */ /* ************************************************************************** */ -#include "cub3d.h" +#include "parsing.h" int count_tab(char **tab) {