Merge branch 'master' of git.sr.ht:~xamora/cube3D
This commit is contained in:
commit
15da46648b
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
*.o
|
||||
cub3D
|
||||
*.swp
|
@ -6,7 +6,7 @@
|
||||
/* By: erey-bet <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/04/27 14:30:29 by erey-bet #+# #+# */
|
||||
/* Updated: 2023/05/04 14:41:50 by erey-bet ### ########.fr */
|
||||
/* Updated: 2023/05/05 12:57:44 by erey-bet ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -26,8 +26,8 @@ int ray(t_game *game)
|
||||
while (x < WIDTH)
|
||||
{
|
||||
camera = 2 * x / ((double)(WIDTH - 1));
|
||||
ray->dir_x = (p->dir_x + 0.45) + p->pla_x * camera;
|
||||
ray->dir_y = (p->dir_y - 0.45) + p->pla_y * camera;
|
||||
ray->dir_x = p->dir_x + p->pla_x * camera;
|
||||
ray->dir_y = p->dir_y + p->pla_y * camera;
|
||||
dda(game, x);
|
||||
x++;
|
||||
}
|
||||
|
@ -6,13 +6,13 @@
|
||||
# By: cchauvet <cchauvet@student.42angoulem +#+ +:+ +#+ #
|
||||
# +#+#+#+#+#+ +#+ #
|
||||
# Created: 2022/09/27 08:39:27 by cchauvet #+# #+# #
|
||||
# Updated: 2023/04/26 12:14:25 by cchauvet ### ########.fr #
|
||||
# Updated: 2023/05/03 11:01:55 by cchauvet ### ########.fr #
|
||||
# #
|
||||
# **************************************************************************** #
|
||||
|
||||
CC = clang
|
||||
|
||||
SRCS = ft_contain_only.c ft_freer.c ft_is_in.c ft_random_generator.c ft_strchri.c ft_strcmp.c ft_strfjoin.c ft_strgen.c ft_strmerger.c ft_strndup.c ft_tabrealloc.c ft_ultoa_base.c ft_swap.c ft_tablen.c
|
||||
SRCS = ft_contain_only.c ft_freer.c ft_is_in.c ft_random_generator.c ft_strchri.c ft_strcmp.c ft_strfjoin.c ft_strgen.c ft_strmerger.c ft_strndup.c ft_tabrealloc.c ft_ultoa_base.c ft_swap.c ft_tablen.c ft_atoul.c ft_atoul_check.c
|
||||
|
||||
OBJS = $(SRCS:.c=.o)
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
/* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/01/04 14:03:10 by cchauvet #+# #+# */
|
||||
/* Updated: 2023/04/26 12:24:00 by cchauvet ### ########.fr */
|
||||
/* Updated: 2023/05/03 11:02:33 by cchauvet ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -14,28 +14,31 @@
|
||||
# define EXTRA_H
|
||||
# include <stdarg.h>
|
||||
# include <stdlib.h>
|
||||
#include <sys/types.h>
|
||||
# include <unistd.h>
|
||||
# include <fcntl.h>
|
||||
# include "../libft/libft.h"
|
||||
|
||||
size_t ft_tablen(const char **tab);
|
||||
char *ft_ultoa_base(unsigned long long n, char *base);
|
||||
char *get_next_line(int fd);
|
||||
size_t ft_random_generator(size_t start, size_t stop);
|
||||
void ft_freer_tab_ultimate(size_t len, ...);
|
||||
void ft_freer_ultimate(size_t len, ...);
|
||||
char *ft_strgen(char c, size_t len);
|
||||
char *ft_strfjoin(char *s1, char *s2);
|
||||
char *ft_strmerger(size_t arg_len, ...);
|
||||
int ft_is_in(char *str, char c);
|
||||
char **ft_tabrealloc(char **tab, size_t current_size, size_t new_size);
|
||||
char *ft_strndup(const char *src, size_t n);
|
||||
ssize_t ft_strchri(char *str, char c);
|
||||
int ft_contain_only_str(char *str, char *to_find);
|
||||
int ft_contain_only(char *str, char c);
|
||||
int ft_strcmp(const char *s1, const char *s2);
|
||||
void ft_swap(void *a, void *b);
|
||||
void ft_swap_int(int *a, int *b);
|
||||
void ft_swap_char(char *a, char *b);
|
||||
unsigned long ft_atoul(const char str[]);
|
||||
int ft_atoul_check(const char str[]);
|
||||
size_t ft_tablen(const void **tab);
|
||||
char *ft_ultoa_base(unsigned long long n, char *base);
|
||||
char *get_next_line(int fd);
|
||||
size_t ft_random_generator(size_t start, size_t stop);
|
||||
void ft_freer_tab_ultimate(size_t len, ...);
|
||||
void ft_freer_ultimate(size_t len, ...);
|
||||
char *ft_strgen(char c, size_t len);
|
||||
char *ft_strfjoin(char *s1, char *s2);
|
||||
char *ft_strmerger(size_t arg_len, ...);
|
||||
int ft_is_in(const char *str, char c);
|
||||
char **ft_tabrealloc(char **tab, size_t current_size, size_t new_size);
|
||||
char *ft_strndup(const char *src, size_t n);
|
||||
ssize_t ft_strchri(char *str, char c);
|
||||
int ft_contain_only_str(const char *str, const char *to_find);
|
||||
int ft_contain_only(const char *str, char c);
|
||||
int ft_strcmp(const char *s1, const char *s2);
|
||||
void ft_swap(void *a, void *b);
|
||||
void ft_swap_int(int *a, int *b);
|
||||
void ft_swap_char(char *a, char *b);
|
||||
|
||||
#endif
|
||||
|
38
libftx/extra/ft_atoul.c
Normal file
38
libftx/extra/ft_atoul.c
Normal file
@ -0,0 +1,38 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* ft_atoul.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: cchauvet <cchauvet@student.42angoulem +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/09/27 16:14:34 by cchauvet #+# #+# */
|
||||
/* Updated: 2023/05/03 11:03:04 by cchauvet ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "extra.h"
|
||||
|
||||
unsigned long ft_atoul(const char *str)
|
||||
{
|
||||
unsigned long out;
|
||||
char sign;
|
||||
size_t i;
|
||||
|
||||
sign = 1;
|
||||
i = 0;
|
||||
while (str[i] == '-' || str[i] == '+')
|
||||
{
|
||||
if (str[i] == '-')
|
||||
sign = -1;
|
||||
if (str[i] == '+')
|
||||
sign = 1;
|
||||
i++;
|
||||
}
|
||||
out = 0;
|
||||
while (str[i] >= '0' && str[i] <= '9')
|
||||
{
|
||||
out = out * 10 + str[i] - 48;
|
||||
i++;
|
||||
}
|
||||
return (out * sign);
|
||||
}
|
32
libftx/extra/ft_atoul_check.c
Normal file
32
libftx/extra/ft_atoul_check.c
Normal file
@ -0,0 +1,32 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* ft_atoul_check.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: cchauvet <cchauvet@student.42angoulem +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/03/08 14:43:33 by cchauvet #+# #+# */
|
||||
/* Updated: 2023/05/02 13:15:12 by cchauvet ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "./extra.h"
|
||||
|
||||
int ft_atoul_check(const char str[])
|
||||
{
|
||||
size_t i;
|
||||
unsigned long num;
|
||||
|
||||
num = 0;
|
||||
i = 0;
|
||||
while (str[i] != '\0')
|
||||
{
|
||||
if (str[i] > '9' || str[i] < '0')
|
||||
return (0);
|
||||
if (num > num * 10 + str[i] - '0')
|
||||
return (0);
|
||||
num = num * 10 + str[i] - 48;
|
||||
i++;
|
||||
}
|
||||
return (1);
|
||||
}
|
@ -6,13 +6,13 @@
|
||||
/* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/01/12 16:28:20 by cchauvet #+# #+# */
|
||||
/* Updated: 2023/01/12 16:31:22 by cchauvet ### ########.fr */
|
||||
/* Updated: 2023/04/26 13:07:06 by cchauvet ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "extra.h"
|
||||
|
||||
int ft_contain_only(char *str, char c)
|
||||
int ft_contain_only(const char *str, char c)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
@ -26,7 +26,7 @@ int ft_contain_only(char *str, char c)
|
||||
return (1);
|
||||
}
|
||||
|
||||
int ft_contain_only_str(char *str, char *to_find)
|
||||
int ft_contain_only_str(const char *str, const char *to_find)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
|
@ -6,13 +6,13 @@
|
||||
/* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/01/05 20:29:53 by cchauvet #+# #+# */
|
||||
/* Updated: 2023/01/08 12:15:08 by cchauvet ### ########.fr */
|
||||
/* Updated: 2023/04/26 13:07:30 by cchauvet ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "extra.h"
|
||||
|
||||
int ft_is_in(char *str, char c)
|
||||
int ft_is_in(const char *str, char c)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -6,13 +6,13 @@
|
||||
/* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/04/26 12:12:19 by cchauvet #+# #+# */
|
||||
/* Updated: 2023/04/26 12:13:38 by cchauvet ### ########.fr */
|
||||
/* Updated: 2023/04/28 12:58:24 by cchauvet ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "./extra.h"
|
||||
|
||||
size_t ft_tablen(const char **tab)
|
||||
size_t ft_tablen(const void **tab)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
/* By: cchauvet <cchauvet@student.42angoulem +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/09/26 14:47:54 by cchauvet #+# #+# */
|
||||
/* Updated: 2023/04/26 12:22:51 by cchauvet ### ########.fr */
|
||||
/* Updated: 2023/05/02 13:17:30 by cchauvet ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -16,8 +16,9 @@
|
||||
# include <unistd.h>
|
||||
# include <stdarg.h>
|
||||
# include "./libft/libft.h"
|
||||
# include "./extra/extra.h"
|
||||
|
||||
size_t ft_tablen(const char **tab);
|
||||
size_t ft_tablen(const void **tab);
|
||||
char *ft_ultoa_base(unsigned long long n, char *base);
|
||||
int ft_printf(const char *format, ...);
|
||||
int ft_eprintf(const char *format, ...);
|
||||
@ -28,10 +29,10 @@ size_t ft_random_generator(size_t start, size_t stop);
|
||||
void ft_freer_tab_ultimate(size_t len, ...);
|
||||
void ft_freer_ultimate(size_t len, ...);
|
||||
char *ft_strgen(char c, size_t len);
|
||||
int ft_is_in(char *str, char c);
|
||||
int ft_is_in(const char *str, char c);
|
||||
char **ft_tabrealloc(char **tab, size_t current_size, size_t new_size);
|
||||
int ft_contain_only_str(char *str, char *to_find);
|
||||
int ft_contain_only(char *str, char c);
|
||||
int ft_contain_only_str(const char *str, const char *to_find);
|
||||
int ft_contain_only(const char *str, char c);
|
||||
char *ft_strfjoin(char *s1, char *s2);
|
||||
char *ft_strmerger(size_t arg_len, ...);
|
||||
int ft_strcmp(const char *s1, const char *s2);
|
||||
@ -41,41 +42,4 @@ void ft_swap(void *a, void *b);
|
||||
void ft_swap_int(int *a, int *b);
|
||||
void ft_swap_char(char *a, char *b);
|
||||
|
||||
/* void *ft_cancel(void **tab, size_t len); */
|
||||
/* int ft_atoi(const char *nptr); */
|
||||
/* void ft_bzero(void *s, size_t n); */
|
||||
/* void *ft_calloc(size_t nmemb, size_t size); */
|
||||
/* int ft_isalnum(int c); */
|
||||
/* int ft_isalpha(int c); */
|
||||
/* int ft_isascii(int c); */
|
||||
/* int ft_isdigit(int c); */
|
||||
/* int ft_isprint(int c); */
|
||||
/* void *ft_memchr(const void *s, int c, size_t n); */
|
||||
/* int ft_memcmp(const void *s1, const void *s2, size_t n); */
|
||||
/* void *ft_memcpy(void *dest, const void *src, size_t n); */
|
||||
/* void *ft_memmove(void *dest, const void *src, size_t n); */
|
||||
/* void *ft_memset(void *s, int c, size_t n); */
|
||||
/* char *ft_strchr(const char *s, int c); */
|
||||
/* char *ft_strdup(const char *s); */
|
||||
/* size_t ft_strlcat(char *dst, const char *src, size_t size); */
|
||||
/* size_t ft_strlcpy(char *dst, const char *src, size_t size); */
|
||||
/* size_t ft_strlen(const char *s); */
|
||||
/* int ft_strncmp(const char *s1, const char *s2, size_t n); */
|
||||
/* char *ft_strnstr(const char *big, const char *little, size_t len); */
|
||||
/* char *ft_strrchr(const char *s, int c); */
|
||||
/* int ft_tolower(int c); */
|
||||
/* int ft_toupper(int c); */
|
||||
|
||||
/* char *ft_substr(char const *s, unsigned int start, size_t len); */
|
||||
/* char *ft_strjoin(char const *s1, char const *s2); */
|
||||
/* char *ft_strtrim(char const *s1, char const *set); */
|
||||
/* char **ft_split(char const *s, char c); */
|
||||
/* char *ft_itoa(int n); */
|
||||
/* char *ft_strmapi(char const *s, char (*f)(unsigned int, char)); */
|
||||
/* void ft_striteri(char *s, void (*f)(unsigned int, char*)); */
|
||||
/* void ft_putchar_fd(char c, int fd); */
|
||||
/* void ft_putstr_fd(char *s, int fd); */
|
||||
/* void ft_putendl_fd(char *s, int fd); */
|
||||
/* void ft_putnbr_fd(int n, int fd); */
|
||||
|
||||
#endif
|
||||
|
47
main.c
47
main.c
@ -1,47 +0,0 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* main.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: erey-bet <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/04/26 12:44:55 by erey-bet #+# #+# */
|
||||
/* Updated: 2023/05/04 13:39:00 by erey-bet ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "cube3D.h"
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
t_map map;
|
||||
|
||||
if (argc != 2)
|
||||
{
|
||||
printf("No argument");
|
||||
return (1);
|
||||
}
|
||||
/*map = map_parsing(&map, argv[1]);
|
||||
if (!map)
|
||||
{
|
||||
return (2);
|
||||
}*/
|
||||
(void)argv;
|
||||
map.map = malloc(sizeof(char *) * 10);
|
||||
map.map[0] = "111111";
|
||||
map.map[1] = "100101";
|
||||
map.map[2] = "101001";
|
||||
map.map[3] = "100001";
|
||||
map.map[4] = "100001";
|
||||
map.map[5] = "101001";
|
||||
map.map[6] = "111111";
|
||||
map.size_x = 6;
|
||||
map.size_y = 7;
|
||||
map.ply_x = 2;
|
||||
map.ply_y = 4;
|
||||
if (start_game(map))
|
||||
{
|
||||
return (3);
|
||||
}
|
||||
return (0);
|
||||
}
|
@ -12,6 +12,7 @@ typedef struct s_map
|
||||
long long color_top;
|
||||
long long spawn_x;
|
||||
long long spawn_y;
|
||||
char direction;
|
||||
} t_map;
|
||||
|
||||
#endif
|
||||
|
@ -1,12 +1,89 @@
|
||||
#include "./parsing_private.h"
|
||||
#include "map.h"
|
||||
#include <stddef.h>
|
||||
|
||||
static ssize_t get_nb_line(const char *path)
|
||||
{
|
||||
int fd;
|
||||
char readed[1];
|
||||
size_t i;
|
||||
|
||||
fd = open(path, O_RDONLY);
|
||||
if (fd == -1)
|
||||
return (-1);
|
||||
i = 1;
|
||||
while (read(fd, readed, 1))
|
||||
{
|
||||
if (readed[0] == '\n')
|
||||
i++;
|
||||
}
|
||||
close(fd);
|
||||
return (i);
|
||||
}
|
||||
|
||||
static char **read_map(const char *path)
|
||||
{
|
||||
int fd;
|
||||
size_t i;
|
||||
char **map;
|
||||
|
||||
map = malloc(sizeof(char *) * (get_nb_line(path) + 1));
|
||||
if (map == NULL)
|
||||
return (NULL);
|
||||
fd = open(path, O_RDONLY);
|
||||
if (fd == -1)
|
||||
{
|
||||
free(map);
|
||||
return (NULL);
|
||||
}
|
||||
i = 0;
|
||||
map[i] = get_next_line(fd);
|
||||
while (map[i] != NULL)
|
||||
{
|
||||
map[i][ft_strlen(map[i]) - 1] = '\0';
|
||||
i++;
|
||||
map[i] = get_next_line(fd);
|
||||
}
|
||||
return (map);
|
||||
}
|
||||
|
||||
t_map *map_parsing(const char *path)
|
||||
{
|
||||
char **file_content;
|
||||
char ***header;
|
||||
char **body;
|
||||
size_t header_size;
|
||||
t_map *map;
|
||||
|
||||
if (parsing_meta(path))
|
||||
return (NULL);
|
||||
map = malloc(sizeof(t_map));
|
||||
if (map == NULL)
|
||||
return (NULL);
|
||||
(void)path;
|
||||
file_content = read_map(path);
|
||||
if (file_content == NULL)
|
||||
{
|
||||
ft_eprintf("map: file error");
|
||||
return (NULL);
|
||||
}
|
||||
header = get_header((const char **) file_content, &header_size);
|
||||
if (header_is_valid(header, map) == 0)
|
||||
{
|
||||
ft_freer_tab_ultimate(1, file_content);
|
||||
ft_freer_ultimate(1, map);
|
||||
return (NULL);
|
||||
}
|
||||
//ici aussi header;
|
||||
body = get_body((const char **) file_content, header_size);
|
||||
ft_freer_tab_ultimate(1, file_content);
|
||||
if (body_is_valid((const char **) body, map) == 0)
|
||||
{
|
||||
ft_freer_ultimate(1, map);
|
||||
// faudra free
|
||||
return (NULL);
|
||||
}
|
||||
map->map = body;
|
||||
map->direction = map->map[map->spawn_y][map->spawn_x];
|
||||
map->map[map->spawn_y][map->spawn_x] = '0';
|
||||
return (map);
|
||||
}
|
||||
|
@ -63,7 +63,7 @@ static int map_is_in_one_part(const char **body)
|
||||
{
|
||||
size_t y;
|
||||
|
||||
y = ft_tablen((const void **) body);
|
||||
y = ft_tablen((const void **) body) - 1;
|
||||
while (body[y][0] == '\0' || ft_contain_only(body[y], ' '))
|
||||
y--;
|
||||
while (y > 0)
|
||||
@ -75,35 +75,14 @@ static int map_is_in_one_part(const char **body)
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int map_surround_check(char **body, size_t x, size_t y)
|
||||
{
|
||||
if (ft_is_in(";1", body[y][x]))
|
||||
return (0);
|
||||
if (ft_is_in(" ", body[y][x]))
|
||||
return (1);
|
||||
if (y == 0 || body[y] == NULL)
|
||||
return (1);
|
||||
if (x == 0 || body[y][x] == '\0')
|
||||
return (1);
|
||||
if (map_surround_check(body, x + 1, y))
|
||||
return (1);
|
||||
if (map_surround_check(body, x - 1, y))
|
||||
return (1);
|
||||
if (map_surround_check(body, x, y + 1))
|
||||
return (1);
|
||||
if (map_surround_check(body, x, y - 1))
|
||||
return (1);
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int map_surround(const char **body, t_map *map)
|
||||
static char **map_cpy(const char **body)
|
||||
{
|
||||
size_t i;
|
||||
char **copy;
|
||||
|
||||
copy = malloc((ft_tablen((const void **) body) + 1) * sizeof(char *));
|
||||
if (copy == NULL)
|
||||
return (1);
|
||||
return (NULL);
|
||||
i = 0;
|
||||
while (body[i] != NULL)
|
||||
{
|
||||
@ -111,46 +90,100 @@ static int map_surround(const char **body, t_map *map)
|
||||
if (copy[i] == NULL)
|
||||
{
|
||||
ft_cancel((void **) copy, i);
|
||||
return (1);
|
||||
return (NULL);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
copy[i] = NULL;
|
||||
if (map_surround_check(copy, map->spawn_x, map->spawn_y))
|
||||
{
|
||||
ft_freer_tab_ultimate(1, copy);
|
||||
return (copy);
|
||||
}
|
||||
|
||||
static int map_surround(const char **body)
|
||||
{
|
||||
char **copy;
|
||||
size_t y;
|
||||
size_t x;
|
||||
|
||||
copy = map_cpy(body);
|
||||
if (copy == NULL)
|
||||
return (1);
|
||||
y = 0;
|
||||
while (body[y] != NULL)
|
||||
{
|
||||
x = 0;
|
||||
while (body[y][x] != '\0')
|
||||
{
|
||||
if (body[y][x] == '0')
|
||||
{
|
||||
if (body[y + 1] == NULL || (y == 0)
|
||||
|| (body[y][x + 1] == '\0') || (x == 0)
|
||||
|| (body[y + 1][x] == ' ' || body[y + 1][x] == '\0')
|
||||
|| (body[y - 1][x] == ' ' || body[y - 1][x] == '\0')
|
||||
|| (body[y][x - 1] == ' ' || body[y][x - 1] == '\0')
|
||||
|| (body[y][x + 1] == ' ' || body[y][x + 1] == '\0'))
|
||||
return (1);
|
||||
}
|
||||
x++;
|
||||
}
|
||||
y++;
|
||||
}
|
||||
ft_freer_tab_ultimate(1, copy);
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int body_contain_normal_char(const char **body)
|
||||
{
|
||||
unsigned int y;
|
||||
unsigned int x;
|
||||
|
||||
y = 0;
|
||||
while (body[y] != NULL)
|
||||
{
|
||||
x = 0;
|
||||
while (body[y][x] != '\0')
|
||||
{
|
||||
if (!ft_is_in(" 01NEWS", body[y][x]))
|
||||
{
|
||||
ft_eprintf("map: %c: invalid character at rows=%u, colums=%u", body[y][x], y, x);
|
||||
return (0);
|
||||
}
|
||||
x++;
|
||||
}
|
||||
y++;
|
||||
}
|
||||
return (1);
|
||||
}
|
||||
|
||||
int body_is_valid(const char **body, t_map *map)
|
||||
{
|
||||
int error;
|
||||
|
||||
if (body == NULL)
|
||||
return (0);
|
||||
error = get_spawn_position(body, &map->spawn_x, &map->spawn_y);
|
||||
if (error == 1)
|
||||
{
|
||||
ft_eprintf("map: spawn position: multiple definition");
|
||||
return (1);
|
||||
return (0);
|
||||
}
|
||||
else if (error == 2)
|
||||
{
|
||||
ft_eprintf("map: spawn position: not define");
|
||||
return (1);
|
||||
return (0);
|
||||
}
|
||||
error = map_surround(body, map);
|
||||
error = map_surround(body);
|
||||
if (error)
|
||||
{
|
||||
ft_eprintf("map: not surrounded");
|
||||
return (1);
|
||||
return (0);
|
||||
}
|
||||
error = map_is_in_one_part(body);
|
||||
if (error)
|
||||
{
|
||||
ft_eprintf("map: splitted");
|
||||
return (1);
|
||||
return (0);
|
||||
}
|
||||
return (0);
|
||||
if (body_contain_normal_char(body) == 0)
|
||||
return (0);
|
||||
return (1);
|
||||
}
|
||||
|
@ -33,6 +33,8 @@ int header_is_valid(char ***header, t_map *map)
|
||||
int token;
|
||||
|
||||
|
||||
if (header == NULL)
|
||||
return (1);
|
||||
map->color_bot = -1;
|
||||
map->color_top = -1;
|
||||
i = 0;
|
||||
|
@ -5,17 +5,13 @@ static int name_check(const char *path)
|
||||
size_t len;
|
||||
|
||||
len = ft_strlen(path);
|
||||
if (len < 4)
|
||||
if (len < 4
|
||||
|| (ft_strcmp(".cub", path + len - 4) != 0))
|
||||
{
|
||||
ft_eprintf("map error: name doesn't finished by .cub");
|
||||
ft_eprintf("map: name doesn't finished by .cub");
|
||||
return (1);
|
||||
}
|
||||
if (ft_strcmp(".cub", path + len - 3) != 0)
|
||||
{
|
||||
ft_eprintf("map error: name doesn't finished by .cub");
|
||||
return (1);
|
||||
}
|
||||
return (1);
|
||||
return (0);
|
||||
}
|
||||
|
||||
int parsing_meta(const char *path)
|
||||
|
22
maps/test1.cub
Normal file
22
maps/test1.cub
Normal file
@ -0,0 +1,22 @@
|
||||
NO ./path_to_the_north_texture
|
||||
SO ./path_to_the_south_texture
|
||||
WE ./path_to_the_west_texture
|
||||
EA ./path_to_the_east_texture
|
||||
|
||||
F 220,100,0
|
||||
C 225,30,0
|
||||
|
||||
1111111111111111111111111
|
||||
1000000000110000000000001
|
||||
1011000001110000000000001
|
||||
1001000000000000000000001
|
||||
111111111011000001110000000000001
|
||||
100000000011000001110111111111111
|
||||
11110111111111011100000010001
|
||||
11110111111111011101010010001
|
||||
11000000110101011100000010001
|
||||
10000000000000001100000010001
|
||||
10000000000000001101010010001
|
||||
11000001110101011111011110N0111
|
||||
11110111 1110101 101111010001
|
||||
11111111 1111111 111111111111
|
22
maps/test_not_surround.cub
Normal file
22
maps/test_not_surround.cub
Normal file
@ -0,0 +1,22 @@
|
||||
NO ./path_to_the_north_texture
|
||||
SO ./path_to_the_south_texture
|
||||
WE ./path_to_the_west_texture
|
||||
EA ./path_to_the_east_texture
|
||||
|
||||
F 220,100,0
|
||||
C 225,30,0
|
||||
|
||||
1111111111111111111111111
|
||||
1000000000110000000000001
|
||||
1011000001110000000000001
|
||||
1001000000000000000000001
|
||||
111111111011000001110000000000001
|
||||
100000000011000001110111111111111
|
||||
11110111111111011100000010001
|
||||
11110111111111011101010010001
|
||||
11000000110101011100000010001
|
||||
10000000000000001100000010001
|
||||
10000000000000001101010010001
|
||||
11000001110101011111011110N00
|
||||
11110111 1110101 101111010001
|
||||
11111111 1111111 111111111111
|
23
maps/test_splitted.cub
Normal file
23
maps/test_splitted.cub
Normal file
@ -0,0 +1,23 @@
|
||||
NO ./path_to_the_north_texture
|
||||
SO ./path_to_the_south_texture
|
||||
WE ./path_to_the_west_texture
|
||||
EA ./path_to_the_east_texture
|
||||
|
||||
F 220,100,0
|
||||
C 225,30,0
|
||||
|
||||
1111111111111111111111111
|
||||
1000000000110000000000001
|
||||
1011000001110000000000001
|
||||
1001000000000000000000001
|
||||
111111111011000001110000000000001
|
||||
|
||||
100000000011000001110111111111111
|
||||
11110111111111011100000010001
|
||||
11110111111111011101010010001
|
||||
11000000110101011100000010001
|
||||
10000000000000001100000010001
|
||||
10000000000000001101010010001
|
||||
11000001110101011111011110N0111
|
||||
11110111 1110101 101111010001
|
||||
11111111 1111111 111111111111
|
Loading…
Reference in New Issue
Block a user