Merge branch 'master' of git.sr.ht:~xamora/cube3D
This commit is contained in:
		
							
								
								
									
										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>                    +#+  +:+       +#+        */ | /*   By: erey-bet <marvin@42.fr>                    +#+  +:+       +#+        */ | ||||||
| /*                                                +#+#+#+#+#+   +#+           */ | /*                                                +#+#+#+#+#+   +#+           */ | ||||||
| /*   Created: 2023/04/27 14:30:29 by erey-bet          #+#    #+#             */ | /*   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) | 	while (x < WIDTH) | ||||||
| 	{ | 	{ | ||||||
| 		camera = 2 * x / ((double)(WIDTH - 1)); | 		camera = 2 * x / ((double)(WIDTH - 1)); | ||||||
| 		ray->dir_x = (p->dir_x + 0.45) + p->pla_x * camera; | 		ray->dir_x = p->dir_x + p->pla_x * camera; | ||||||
| 		ray->dir_y = (p->dir_y - 0.45) + p->pla_y * camera; | 		ray->dir_y = p->dir_y + p->pla_y * camera; | ||||||
| 		dda(game, x); | 		dda(game, x); | ||||||
| 		x++; | 		x++; | ||||||
| 	} | 	} | ||||||
|  | |||||||
| @ -6,13 +6,13 @@ | |||||||
| #    By: cchauvet <cchauvet@student.42angoulem      +#+  +:+       +#+         # | #    By: cchauvet <cchauvet@student.42angoulem      +#+  +:+       +#+         # | ||||||
| #                                                 +#+#+#+#+#+   +#+            # | #                                                 +#+#+#+#+#+   +#+            # | ||||||
| #    Created: 2022/09/27 08:39:27 by cchauvet          #+#    #+#              # | #    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 | 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) | OBJS = $(SRCS:.c=.o) | ||||||
|  |  | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ | |||||||
| /*   By: cchauvet <cchauvet@student.42angouleme.fr  +#+  +:+       +#+        */ | /*   By: cchauvet <cchauvet@student.42angouleme.fr  +#+  +:+       +#+        */ | ||||||
| /*                                                +#+#+#+#+#+   +#+           */ | /*                                                +#+#+#+#+#+   +#+           */ | ||||||
| /*   Created: 2023/01/04 14:03:10 by cchauvet          #+#    #+#             */ | /*   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,11 +14,14 @@ | |||||||
| # define EXTRA_H | # define EXTRA_H | ||||||
| # include <stdarg.h> | # include <stdarg.h> | ||||||
| # include <stdlib.h> | # include <stdlib.h> | ||||||
|  | #include <sys/types.h> | ||||||
| # include <unistd.h> | # include <unistd.h> | ||||||
| # include <fcntl.h> | # include <fcntl.h> | ||||||
| # include "../libft/libft.h" | # include "../libft/libft.h" | ||||||
|  |  | ||||||
| size_t		ft_tablen(const char **tab); | 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			*ft_ultoa_base(unsigned long long n, char *base); | ||||||
| char			*get_next_line(int fd); | char			*get_next_line(int fd); | ||||||
| size_t			ft_random_generator(size_t start, size_t stop); | size_t			ft_random_generator(size_t start, size_t stop); | ||||||
| @ -27,12 +30,12 @@ void		ft_freer_ultimate(size_t len, ...); | |||||||
| char			*ft_strgen(char c, size_t len); | char			*ft_strgen(char c, size_t len); | ||||||
| char			*ft_strfjoin(char *s1, char *s2); | char			*ft_strfjoin(char *s1, char *s2); | ||||||
| char			*ft_strmerger(size_t arg_len, ...); | char			*ft_strmerger(size_t arg_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); | char			**ft_tabrealloc(char **tab, size_t current_size, size_t new_size); | ||||||
| char			*ft_strndup(const char *src, size_t n); | char			*ft_strndup(const char *src, size_t n); | ||||||
| ssize_t			ft_strchri(char *str, char c); | ssize_t			ft_strchri(char *str, char c); | ||||||
| int			ft_contain_only_str(char *str, char *to_find); | int				ft_contain_only_str(const char *str, const char *to_find); | ||||||
| int			ft_contain_only(char *str, char c); | int				ft_contain_only(const char *str, char c); | ||||||
| int				ft_strcmp(const char *s1, const char *s2); | int				ft_strcmp(const char *s1, const char *s2); | ||||||
| void			ft_swap(void *a, void *b); | void			ft_swap(void *a, void *b); | ||||||
| void			ft_swap_int(int *a, int *b); | void			ft_swap_int(int *a, int *b); | ||||||
|  | |||||||
							
								
								
									
										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  +#+  +:+       +#+        */ | /*   By: cchauvet <cchauvet@student.42angouleme.fr  +#+  +:+       +#+        */ | ||||||
| /*                                                +#+#+#+#+#+   +#+           */ | /*                                                +#+#+#+#+#+   +#+           */ | ||||||
| /*   Created: 2023/01/12 16:28:20 by cchauvet          #+#    #+#             */ | /*   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" | #include "extra.h" | ||||||
|  |  | ||||||
| int	ft_contain_only(char *str, char c) | int	ft_contain_only(const char *str, char c) | ||||||
| { | { | ||||||
| 	size_t	i; | 	size_t	i; | ||||||
|  |  | ||||||
| @ -26,7 +26,7 @@ int	ft_contain_only(char *str, char c) | |||||||
| 	return (1); | 	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; | 	size_t	i; | ||||||
|  |  | ||||||
|  | |||||||
| @ -6,13 +6,13 @@ | |||||||
| /*   By: cchauvet <cchauvet@student.42angouleme.fr  +#+  +:+       +#+        */ | /*   By: cchauvet <cchauvet@student.42angouleme.fr  +#+  +:+       +#+        */ | ||||||
| /*                                                +#+#+#+#+#+   +#+           */ | /*                                                +#+#+#+#+#+   +#+           */ | ||||||
| /*   Created: 2023/01/05 20:29:53 by cchauvet          #+#    #+#             */ | /*   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" | #include "extra.h" | ||||||
|  |  | ||||||
| int	ft_is_in(char *str, char c) | int	ft_is_in(const char *str, char c) | ||||||
| { | { | ||||||
| 	int	i; | 	int	i; | ||||||
|  |  | ||||||
|  | |||||||
| @ -6,13 +6,13 @@ | |||||||
| /*   By: cchauvet <cchauvet@student.42angouleme.fr  +#+  +:+       +#+        */ | /*   By: cchauvet <cchauvet@student.42angouleme.fr  +#+  +:+       +#+        */ | ||||||
| /*                                                +#+#+#+#+#+   +#+           */ | /*                                                +#+#+#+#+#+   +#+           */ | ||||||
| /*   Created: 2023/04/26 12:12:19 by cchauvet          #+#    #+#             */ | /*   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" | #include "./extra.h" | ||||||
|  |  | ||||||
| size_t	ft_tablen(const char **tab) | size_t	ft_tablen(const void **tab) | ||||||
| { | { | ||||||
| 	size_t	i; | 	size_t	i; | ||||||
|  |  | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ | |||||||
| /*   By: cchauvet <cchauvet@student.42angoulem      +#+  +:+       +#+        */ | /*   By: cchauvet <cchauvet@student.42angoulem      +#+  +:+       +#+        */ | ||||||
| /*                                                +#+#+#+#+#+   +#+           */ | /*                                                +#+#+#+#+#+   +#+           */ | ||||||
| /*   Created: 2022/09/26 14:47:54 by cchauvet          #+#    #+#             */ | /*   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 <unistd.h> | ||||||
| # include <stdarg.h> | # include <stdarg.h> | ||||||
| # include "./libft/libft.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); | char	*ft_ultoa_base(unsigned long long n, char *base); | ||||||
| int		ft_printf(const char *format, ...); | int		ft_printf(const char *format, ...); | ||||||
| int		ft_eprintf(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_tab_ultimate(size_t len, ...); | ||||||
| void	ft_freer_ultimate(size_t len, ...); | void	ft_freer_ultimate(size_t len, ...); | ||||||
| char	*ft_strgen(char c, 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); | 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_str(const char *str, const char *to_find); | ||||||
| int		ft_contain_only(char *str, char c); | int		ft_contain_only(const char *str, char c); | ||||||
| char	*ft_strfjoin(char *s1, char *s2); | char	*ft_strfjoin(char *s1, char *s2); | ||||||
| char	*ft_strmerger(size_t arg_len, ...); | char	*ft_strmerger(size_t arg_len, ...); | ||||||
| int		ft_strcmp(const char *s1, const char *s2); | 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_int(int *a, int *b); | ||||||
| void	ft_swap_char(char *a, char *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 | #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	color_top; | ||||||
| 	long long	spawn_x; | 	long long	spawn_x; | ||||||
| 	long long	spawn_y; | 	long long	spawn_y; | ||||||
|  | 	char		direction; | ||||||
| }	t_map; | }	t_map; | ||||||
|  |  | ||||||
| #endif | #endif | ||||||
|  | |||||||
| @ -1,12 +1,89 @@ | |||||||
| #include "./parsing_private.h" | #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) | t_map	*map_parsing(const char *path) | ||||||
| { | { | ||||||
|  | 	char	**file_content; | ||||||
|  | 	char	***header; | ||||||
|  | 	char	**body; | ||||||
|  | 	size_t	header_size; | ||||||
| 	t_map	*map; | 	t_map	*map; | ||||||
|  |  | ||||||
|  | 	if (parsing_meta(path)) | ||||||
|  | 		return (NULL); | ||||||
| 	map = malloc(sizeof(t_map)); | 	map = malloc(sizeof(t_map)); | ||||||
| 	if (map == NULL) | 	if (map == NULL) | ||||||
| 		return (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); | 	return (map); | ||||||
| } | } | ||||||
|  | |||||||
| @ -63,7 +63,7 @@ static int	map_is_in_one_part(const char **body) | |||||||
| { | { | ||||||
| 	size_t	y; | 	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], ' ')) | 	while (body[y][0] == '\0' || ft_contain_only(body[y], ' ')) | ||||||
| 		y--; | 		y--; | ||||||
| 	while (y > 0) | 	while (y > 0) | ||||||
| @ -75,35 +75,14 @@ static int	map_is_in_one_part(const char **body) | |||||||
| 	return (0); | 	return (0); | ||||||
| } | } | ||||||
|  |  | ||||||
| static int	map_surround_check(char **body, size_t x, size_t y) | static char	**map_cpy(const char **body) | ||||||
| { |  | ||||||
| 	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) |  | ||||||
| { | { | ||||||
| 	size_t	i; | 	size_t	i; | ||||||
| 	char	**copy; | 	char	**copy; | ||||||
|  |  | ||||||
| 	copy = malloc((ft_tablen((const void **) body) + 1) * sizeof(char *)); | 	copy = malloc((ft_tablen((const void **) body) + 1) * sizeof(char *)); | ||||||
| 	if (copy == NULL) | 	if (copy == NULL) | ||||||
| 		return (1); | 		return (NULL); | ||||||
| 	i = 0; | 	i = 0; | ||||||
| 	while (body[i] != NULL) | 	while (body[i] != NULL) | ||||||
| 	{ | 	{ | ||||||
| @ -111,46 +90,100 @@ static int	map_surround(const char **body, t_map *map) | |||||||
| 		if (copy[i] == NULL) | 		if (copy[i] == NULL) | ||||||
| 		{ | 		{ | ||||||
| 			ft_cancel((void **) copy, i); | 			ft_cancel((void **) copy, i); | ||||||
| 			return (1); | 			return (NULL); | ||||||
| 		} | 		} | ||||||
| 		i++; | 		i++; | ||||||
| 	} | 	} | ||||||
| 	copy[i] = NULL; | 	copy[i] = NULL; | ||||||
| 	if (map_surround_check(copy, map->spawn_x, map->spawn_y)) | 	return (copy); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static int	map_surround(const char **body) | ||||||
| { | { | ||||||
| 		ft_freer_tab_ultimate(1, copy); | 	char	**copy; | ||||||
|  | 	size_t	y; | ||||||
|  | 	size_t	x; | ||||||
|  |  | ||||||
|  | 	copy = map_cpy(body); | ||||||
|  | 	if (copy == NULL) | ||||||
| 		return (1); | 		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); | 	ft_freer_tab_ultimate(1, copy); | ||||||
| 	return (0); | 	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	body_is_valid(const char **body, t_map *map) | ||||||
| { | { | ||||||
| 	int	error; | 	int	error; | ||||||
|  |  | ||||||
|  | 	if (body == NULL) | ||||||
|  | 		return (0); | ||||||
| 	error = get_spawn_position(body, &map->spawn_x, &map->spawn_y); | 	error = get_spawn_position(body, &map->spawn_x, &map->spawn_y); | ||||||
| 	if (error == 1) | 	if (error == 1) | ||||||
| 	{ | 	{ | ||||||
| 		ft_eprintf("map: spawn position: multiple definition"); | 		ft_eprintf("map: spawn position: multiple definition"); | ||||||
| 		return (1); | 		return (0); | ||||||
| 	} | 	} | ||||||
| 	else if (error == 2) | 	else if (error == 2) | ||||||
| 	{ | 	{ | ||||||
| 		ft_eprintf("map: spawn position: not define"); | 		ft_eprintf("map: spawn position: not define"); | ||||||
| 		return (1); | 		return (0); | ||||||
| 	} | 	} | ||||||
| 	error = map_surround(body, map); | 	error = map_surround(body); | ||||||
| 	if (error) | 	if (error) | ||||||
| 	{ | 	{ | ||||||
| 		ft_eprintf("map: not surrounded"); | 		ft_eprintf("map: not surrounded"); | ||||||
| 		return (1); | 		return (0); | ||||||
| 	} | 	} | ||||||
| 	error = map_is_in_one_part(body); | 	error = map_is_in_one_part(body); | ||||||
| 	if (error) | 	if (error) | ||||||
| 	{ | 	{ | ||||||
| 		ft_eprintf("map: splitted"); | 		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; | 	int		token; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	if (header == NULL) | ||||||
|  | 		return (1); | ||||||
| 	map->color_bot = -1; | 	map->color_bot = -1; | ||||||
| 	map->color_top = -1; | 	map->color_top = -1; | ||||||
| 	i = 0; | 	i = 0; | ||||||
|  | |||||||
| @ -5,17 +5,13 @@ static int	name_check(const char *path) | |||||||
| 	size_t	len; | 	size_t	len; | ||||||
|  |  | ||||||
| 	len = ft_strlen(path); | 	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); | 		return (1); | ||||||
| 	} | 	} | ||||||
| 	if (ft_strcmp(".cub", path + len - 3) != 0) | 	return (0); | ||||||
| 	{ |  | ||||||
| 		ft_eprintf("map error: name doesn't finished by .cub"); |  | ||||||
| 		return (1); |  | ||||||
| 	} |  | ||||||
| 	return (1); |  | ||||||
| } | } | ||||||
|  |  | ||||||
| int	parsing_meta(const char *path) | 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 | ||||||
		Reference in New Issue
	
	Block a user