This commit is contained in:
kinou-p 2022-06-15 23:40:10 +02:00
parent 5da1a4b1c9
commit 8fd76831b5
5 changed files with 95 additions and 98 deletions

View File

@ -6,11 +6,11 @@
# By: apommier <apommier@student.42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2022/02/13 16:27:49 by apommier #+# #+# #
# Updated: 2022/06/15 18:49:48 by apommier ### ########.fr #
# Updated: 2022/06/15 23:36:51 by apommier ### ########.fr #
# #
# **************************************************************************** #
NAME = Cub3D
NAME = cub3D
SRCS = srcs/main.c\
srcs/cast_ray/get_texture_array.c\
srcs/cast_ray/cast_ray.c\
@ -20,6 +20,7 @@ SRCS = srcs/main.c\
srcs/utils/cub_utils.c\
srcs/utils/quit_game.c\
srcs/parsing/parse_map.c\
srcs/parsing/utils_parsing.c\
srcs/parsing/check_color_texture.c
OBJS = ${SRCS:.c=.o}

View File

@ -6,52 +6,12 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/11 01:00:17 by apommier #+# #+# */
/* Updated: 2022/06/15 18:32:06 by apommier ### ########.fr */
/* Updated: 2022/06/15 23:38:56 by apommier ### ########.fr */
/* */
/* ************************************************************************** */
#include "../../includes/Cub3D.h"
char next_space(char *str, int i)
{
while (str[i] == ' ')
i++;
return (str[i]);
}
int next_space_index(char *str, int i)
{
while (str[i] == ' ')
i++;
return (i);
}
char *transform_map(char **double_map, t_data *img)
{
char *map;
int i;
int j;
int index;
i = -1;
index = 0;
img->map.size = img->map.x * img->map.y;
map = ft_calloc(sizeof(char), img->map.size + 1);
if (!map)
quit_game(img);
while (double_map[++i])
{
j = -1;
while (double_map[i][++j])
{
map[i * img->map.x + j] = double_map[i][j];
index++;
}
}
img->map.simple_map = map;
return (0);
}
void set_texture_file(char *str, t_data *img, char c)
{
int index;

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/05/10 17:54:25 by sadjigui #+# #+# */
/* Updated: 2022/06/15 22:03:10 by apommier ### ########.fr */
/* Updated: 2022/06/15 23:33:19 by apommier ### ########.fr */
/* */
/* ************************************************************************** */
@ -28,7 +28,7 @@ void verifie_texture_color(t_data *img)
ft_exit("Error\nColor not set properly\n", img);
}
void error_msg(t_data *img)
void error_msg(t_data *img)
{
if (img->map.error == 1)
ft_exit("Error\nMap isn't closed\n", img);
@ -40,9 +40,9 @@ void error_msg(t_data *img)
ft_exit("Error\nBad character in map\n", img);
}
void size_line(char *str, t_data *img)
void size_line(char *str, t_data *img)
{
int i;
int i;
i = 0;
while (str[i])
@ -51,10 +51,10 @@ void size_line(char *str, t_data *img)
img->map.x = i;
}
char *charge_new(t_data *img, char **map, char **tmp_map)
char *charge_new(t_data *img, char **map, char **tmp_map)
{
char *str;
int i;
char *str;
int i;
i = 0;
str = malloc(sizeof(char) * (img->map.x + 3));
@ -90,16 +90,16 @@ int reverse_comp(char *s1, char *s2)
return (0);
}
void inter_map(char **split, char **tmp, t_data *img)
void inter_map(char **split, char **tmp, t_data *img)
{
int i;
int j;
int i;
int j;
i = 0;
while (split[i])
{
j = 0;
while(split[i][j])
while (split[i][j])
{
if (split[i][j] == '3')
img->map.error = -1;
@ -111,15 +111,15 @@ void inter_map(char **split, char **tmp, t_data *img)
}
}
void close_or_not(char **tab, int i, int j, t_data *img)
void close_or_not(char **tab, int i, int j, t_data *img)
{
if(tab[i + 1][j] == '3' || tab[i - 1][j] == '3')
if (tab[i + 1][j] == '3' || tab[i - 1][j] == '3')
img->map.error = 1;
if(tab[i][j + 1] == '3' || tab[i][j - 1] == '3')
if (tab[i][j + 1] == '3' || tab[i][j - 1] == '3')
img->map.error = 1;
if(tab[i + 1][j + 1] == '3' || tab[i + 1][j - 1] == '3')
if (tab[i + 1][j + 1] == '3' || tab[i + 1][j - 1] == '3')
img->map.error = 1;
if(tab[i - 1][j + 1] == '3' || tab[i - 1][j - 1] == '3')
if (tab[i - 1][j + 1] == '3' || tab[i - 1][j - 1] == '3')
img->map.error = 1;
if (img->map.error != 1)
img->map.error = 0;
@ -140,34 +140,30 @@ void find_angle(char c, t_data *img)
int check_inner_utils(char *line, t_data *img)
{
int i;
int player;
int player;
i = 0;
player = 0;
while (line[i])
{
// if (line[i] == '0' || line[i] == '1' || line[i] == '3' || line[i] == '\n')
// i++;
if (line[i] == 'N' || line[i] == 'S' || line[i] == 'E' || line[i] == 'W')
if (line[i] == 'N' || line[i] == 'S'
|| line[i] == 'E' || line[i] == 'W')
{
find_angle(line[i], img);
//img->player.x = (i - 1) * 64;
img->player.x = i * 64 - 32;
player++;
}
else if (line[i] != '3' && line[i] != '0' && line[i] != '1')
return (100);
// else
// return (2);
i++;
}
return (player);
}
void check_inner(char **map, t_data *img)//fonction bizarre
void check_inner(char **map, t_data *img)
{
int i;
int player;
int i;
int player;
i = 0;
player = 0;
@ -176,21 +172,20 @@ void check_inner(char **map, t_data *img)//fonction bizarre
player += check_inner_utils(map[i], img);
if (player == 1 && !img->player.y)
img->player.y = i * 64 - 32;
//img->player.y = (i - 1) * 64;
i++;
}
if (player == 0)
img->map.error = 2;
if (player > 1 && player < 100)//?????? pk 3 et -1?
if (player > 1 && player < 100)
img->map.error = 3;
if (player >= 100)
img->map.error = -1;
}
void check_border(char **tab, t_data *img)
void check_border(char **tab, t_data *img)
{
int i;
int j;
int i;
int j;
i = 0;
while (tab[i])
@ -198,7 +193,8 @@ void check_border(char **tab, t_data *img)
j = 0;
while (tab[i][j])
{
if (tab[i][j] == '0' || tab[i][j] == 'W' || tab[i][j] == 'N' || tab[i][j] == 'S' || tab[i][j] == 'E')
if (tab[i][j] == '0' || tab[i][j] == 'W' || tab[i][j] == 'N'
|| tab[i][j] == 'S' || tab[i][j] == 'E')
close_or_not(tab, i, j, img);
j++;
}
@ -208,8 +204,8 @@ void check_border(char **tab, t_data *img)
void check_zero_one(char **split, t_data *img)
{
char **tmp;
int i;
char **tmp;
int i;
i = 0;
while (split[i])
@ -222,12 +218,9 @@ void check_zero_one(char **split, t_data *img)
img->map.y = i;
tmp = malloc(sizeof(char *) * (i + 3));
if (!tmp)
{
free_double(split);
quit_game(img);
}
i = 0;
while(i < img->map.y + 2)
while (i < img->map.y + 2)
{
tmp[i] = charge_new(img, split, tmp);
i++;
@ -237,7 +230,7 @@ void check_zero_one(char **split, t_data *img)
if (img->map.error == -1)
{
free_double(tmp);
return;
return ;
}
check_border(tmp, img);
check_inner(tmp, img);
@ -292,10 +285,10 @@ char **isafile(char **av, t_data *img)
char **ret;
int count;
int pass;
count = 0;
get_map_size(av[1], img, &count, 0);
ret = ft_calloc(sizeof(char*), count);
ret = ft_calloc(sizeof(char *), count);
if (!ret)
quit_game(img);
img->to_be_free.tab = ret;
@ -312,12 +305,11 @@ char **isafile(char **av, t_data *img)
return (0);
}
int check_map(char **av, t_data *img)
int check_map(char **av, t_data *img)
{
img->map.x = 0;
img->map.y = 0;
img->map.error = 0;
if (reverse_comp(av[1], ".cub") || (ft_strlen(av[1]) == ft_strlen(".cub")))
{
ft_exit("Error\nNot a valid file \".cub\"\n", img);
@ -331,18 +323,8 @@ int check_map(char **av, t_data *img)
if (img->map.error != 0)
{
error_msg(img);
quit_game(img);//surely leak???
quit_game(img);
}
verifie_texture_color(img);
return (0);
}
/*int main(int ac, char **av)
{
t_root img;
if (check_map(av, &img))
return (0);
else
printf("map is clean\n");
}*/

View File

@ -0,0 +1,53 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* utils_parsing.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/15 23:34:49 by apommier #+# #+# */
/* Updated: 2022/06/15 23:38:38 by apommier ### ########.fr */
/* */
/* ************************************************************************** */
#include "../../includes/Cub3D.h"
char next_space(char *str, int i)
{
while (str[i] == ' ')
i++;
return (str[i]);
}
int next_space_index(char *str, int i)
{
while (str[i] == ' ')
i++;
return (i);
}
char *transform_map(char **double_map, t_data *img)
{
char *map;
int i;
int j;
int index;
i = -1;
index = 0;
img->map.size = img->map.x * img->map.y;
map = ft_calloc(sizeof(char), img->map.size + 1);
if (!map)
quit_game(img);
while (double_map[++i])
{
j = -1;
while (double_map[i][++j])
{
map[i * img->map.x + j] = double_map[i][j];
index++;
}
}
img->map.simple_map = map;
return (0);
}

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/15 18:48:45 by apommier #+# #+# */
/* Updated: 2022/06/15 19:23:03 by apommier ### ########.fr */
/* Updated: 2022/06/15 23:22:14 by apommier ### ########.fr */
/* */
/* ************************************************************************** */
@ -35,6 +35,7 @@ void ft_error(char *error_msg)
void ft_exit(char *str, t_data *img)
{
ft_putstr_fd(str, 2);
quit_game(img);
}