norm
This commit is contained in:
parent
5da1a4b1c9
commit
8fd76831b5
5
Makefile
5
Makefile
@ -6,11 +6,11 @@
|
|||||||
# By: apommier <apommier@student.42.fr> +#+ +:+ +#+ #
|
# By: apommier <apommier@student.42.fr> +#+ +:+ +#+ #
|
||||||
# +#+#+#+#+#+ +#+ #
|
# +#+#+#+#+#+ +#+ #
|
||||||
# Created: 2022/02/13 16:27:49 by apommier #+# #+# #
|
# 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 = srcs/main.c\
|
||||||
srcs/cast_ray/get_texture_array.c\
|
srcs/cast_ray/get_texture_array.c\
|
||||||
srcs/cast_ray/cast_ray.c\
|
srcs/cast_ray/cast_ray.c\
|
||||||
@ -20,6 +20,7 @@ SRCS = srcs/main.c\
|
|||||||
srcs/utils/cub_utils.c\
|
srcs/utils/cub_utils.c\
|
||||||
srcs/utils/quit_game.c\
|
srcs/utils/quit_game.c\
|
||||||
srcs/parsing/parse_map.c\
|
srcs/parsing/parse_map.c\
|
||||||
|
srcs/parsing/utils_parsing.c\
|
||||||
srcs/parsing/check_color_texture.c
|
srcs/parsing/check_color_texture.c
|
||||||
|
|
||||||
OBJS = ${SRCS:.c=.o}
|
OBJS = ${SRCS:.c=.o}
|
||||||
|
|||||||
@ -6,52 +6,12 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/06/11 01:00:17 by apommier #+# #+# */
|
/* 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"
|
#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)
|
void set_texture_file(char *str, t_data *img, char c)
|
||||||
{
|
{
|
||||||
int index;
|
int index;
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/05/10 17:54:25 by sadjigui #+# #+# */
|
/* 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);
|
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)
|
if (img->map.error == 1)
|
||||||
ft_exit("Error\nMap isn't closed\n", img);
|
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);
|
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;
|
i = 0;
|
||||||
while (str[i])
|
while (str[i])
|
||||||
@ -51,10 +51,10 @@ void size_line(char *str, t_data *img)
|
|||||||
img->map.x = i;
|
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;
|
char *str;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
str = malloc(sizeof(char) * (img->map.x + 3));
|
str = malloc(sizeof(char) * (img->map.x + 3));
|
||||||
@ -90,16 +90,16 @@ int reverse_comp(char *s1, char *s2)
|
|||||||
return (0);
|
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 i;
|
||||||
int j;
|
int j;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
while (split[i])
|
while (split[i])
|
||||||
{
|
{
|
||||||
j = 0;
|
j = 0;
|
||||||
while(split[i][j])
|
while (split[i][j])
|
||||||
{
|
{
|
||||||
if (split[i][j] == '3')
|
if (split[i][j] == '3')
|
||||||
img->map.error = -1;
|
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;
|
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;
|
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;
|
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;
|
img->map.error = 1;
|
||||||
if (img->map.error != 1)
|
if (img->map.error != 1)
|
||||||
img->map.error = 0;
|
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 check_inner_utils(char *line, t_data *img)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int player;
|
int player;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
player = 0;
|
player = 0;
|
||||||
while (line[i])
|
while (line[i])
|
||||||
{
|
{
|
||||||
// if (line[i] == '0' || line[i] == '1' || line[i] == '3' || line[i] == '\n')
|
if (line[i] == 'N' || line[i] == 'S'
|
||||||
// i++;
|
|| line[i] == 'E' || line[i] == 'W')
|
||||||
if (line[i] == 'N' || line[i] == 'S' || line[i] == 'E' || line[i] == 'W')
|
|
||||||
{
|
{
|
||||||
find_angle(line[i], img);
|
find_angle(line[i], img);
|
||||||
//img->player.x = (i - 1) * 64;
|
|
||||||
img->player.x = i * 64 - 32;
|
img->player.x = i * 64 - 32;
|
||||||
player++;
|
player++;
|
||||||
}
|
}
|
||||||
else if (line[i] != '3' && line[i] != '0' && line[i] != '1')
|
else if (line[i] != '3' && line[i] != '0' && line[i] != '1')
|
||||||
return (100);
|
return (100);
|
||||||
// else
|
|
||||||
// return (2);
|
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
return (player);
|
return (player);
|
||||||
}
|
}
|
||||||
|
|
||||||
void check_inner(char **map, t_data *img)//fonction bizarre
|
void check_inner(char **map, t_data *img)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int player;
|
int player;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
player = 0;
|
player = 0;
|
||||||
@ -176,21 +172,20 @@ void check_inner(char **map, t_data *img)//fonction bizarre
|
|||||||
player += check_inner_utils(map[i], img);
|
player += check_inner_utils(map[i], img);
|
||||||
if (player == 1 && !img->player.y)
|
if (player == 1 && !img->player.y)
|
||||||
img->player.y = i * 64 - 32;
|
img->player.y = i * 64 - 32;
|
||||||
//img->player.y = (i - 1) * 64;
|
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
if (player == 0)
|
if (player == 0)
|
||||||
img->map.error = 2;
|
img->map.error = 2;
|
||||||
if (player > 1 && player < 100)//?????? pk 3 et -1?
|
if (player > 1 && player < 100)
|
||||||
img->map.error = 3;
|
img->map.error = 3;
|
||||||
if (player >= 100)
|
if (player >= 100)
|
||||||
img->map.error = -1;
|
img->map.error = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void check_border(char **tab, t_data *img)
|
void check_border(char **tab, t_data *img)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int j;
|
int j;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
while (tab[i])
|
while (tab[i])
|
||||||
@ -198,7 +193,8 @@ void check_border(char **tab, t_data *img)
|
|||||||
j = 0;
|
j = 0;
|
||||||
while (tab[i][j])
|
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);
|
close_or_not(tab, i, j, img);
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
@ -208,8 +204,8 @@ void check_border(char **tab, t_data *img)
|
|||||||
|
|
||||||
void check_zero_one(char **split, t_data *img)
|
void check_zero_one(char **split, t_data *img)
|
||||||
{
|
{
|
||||||
char **tmp;
|
char **tmp;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
while (split[i])
|
while (split[i])
|
||||||
@ -222,12 +218,9 @@ void check_zero_one(char **split, t_data *img)
|
|||||||
img->map.y = i;
|
img->map.y = i;
|
||||||
tmp = malloc(sizeof(char *) * (i + 3));
|
tmp = malloc(sizeof(char *) * (i + 3));
|
||||||
if (!tmp)
|
if (!tmp)
|
||||||
{
|
|
||||||
free_double(split);
|
|
||||||
quit_game(img);
|
quit_game(img);
|
||||||
}
|
|
||||||
i = 0;
|
i = 0;
|
||||||
while(i < img->map.y + 2)
|
while (i < img->map.y + 2)
|
||||||
{
|
{
|
||||||
tmp[i] = charge_new(img, split, tmp);
|
tmp[i] = charge_new(img, split, tmp);
|
||||||
i++;
|
i++;
|
||||||
@ -237,7 +230,7 @@ void check_zero_one(char **split, t_data *img)
|
|||||||
if (img->map.error == -1)
|
if (img->map.error == -1)
|
||||||
{
|
{
|
||||||
free_double(tmp);
|
free_double(tmp);
|
||||||
return;
|
return ;
|
||||||
}
|
}
|
||||||
check_border(tmp, img);
|
check_border(tmp, img);
|
||||||
check_inner(tmp, img);
|
check_inner(tmp, img);
|
||||||
@ -292,10 +285,10 @@ char **isafile(char **av, t_data *img)
|
|||||||
char **ret;
|
char **ret;
|
||||||
int count;
|
int count;
|
||||||
int pass;
|
int pass;
|
||||||
|
|
||||||
count = 0;
|
count = 0;
|
||||||
get_map_size(av[1], img, &count, 0);
|
get_map_size(av[1], img, &count, 0);
|
||||||
ret = ft_calloc(sizeof(char*), count);
|
ret = ft_calloc(sizeof(char *), count);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
quit_game(img);
|
quit_game(img);
|
||||||
img->to_be_free.tab = ret;
|
img->to_be_free.tab = ret;
|
||||||
@ -312,12 +305,11 @@ char **isafile(char **av, t_data *img)
|
|||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int check_map(char **av, t_data *img)
|
int check_map(char **av, t_data *img)
|
||||||
{
|
{
|
||||||
img->map.x = 0;
|
img->map.x = 0;
|
||||||
img->map.y = 0;
|
img->map.y = 0;
|
||||||
img->map.error = 0;
|
img->map.error = 0;
|
||||||
|
|
||||||
if (reverse_comp(av[1], ".cub") || (ft_strlen(av[1]) == ft_strlen(".cub")))
|
if (reverse_comp(av[1], ".cub") || (ft_strlen(av[1]) == ft_strlen(".cub")))
|
||||||
{
|
{
|
||||||
ft_exit("Error\nNot a valid file \".cub\"\n", img);
|
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)
|
if (img->map.error != 0)
|
||||||
{
|
{
|
||||||
error_msg(img);
|
error_msg(img);
|
||||||
quit_game(img);//surely leak???
|
quit_game(img);
|
||||||
}
|
}
|
||||||
verifie_texture_color(img);
|
verifie_texture_color(img);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*int main(int ac, char **av)
|
|
||||||
{
|
|
||||||
t_root img;
|
|
||||||
|
|
||||||
if (check_map(av, &img))
|
|
||||||
return (0);
|
|
||||||
else
|
|
||||||
printf("map is clean\n");
|
|
||||||
}*/
|
|
||||||
|
|||||||
53
srcs/parsing/utils_parsing.c
Normal file
53
srcs/parsing/utils_parsing.c
Normal 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);
|
||||||
|
}
|
||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/06/15 18:48:45 by apommier #+# #+# */
|
/* 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)
|
void ft_exit(char *str, t_data *img)
|
||||||
{
|
{
|
||||||
ft_putstr_fd(str, 2);
|
ft_putstr_fd(str, 2);
|
||||||
|
|
||||||
quit_game(img);
|
quit_game(img);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user