diff --git a/Makefile b/Makefile deleted file mode 100644 index 2558b6d..0000000 --- a/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -CC = gcc -CFLAGS = -fsanitize=address -g -Wall -Wextra -Werror -NAME = cub3d - -SRCDIR = srcs -INCDIR = includes -LIBFT = libft/libft.a -GNL = gnl/gnl.a - -SRCS = $(SRCDIR)/main.c \ - $(SRCDIR)/parsing/parsing.c \ - $(SRCDIR)/parsing/check_file.c \ - $(SRCDIR)/parsing/init_parsing.c \ - $(SRCDIR)/parsing/get_map.c \ - $(SRCDIR)/parsing/line_detect.c \ - $(SRCDIR)/parsing/get_textures.c \ - $(SRCDIR)/parsing/check_colors.c \ - $(SRCDIR)/utils/utils.c \ - $(SRCDIR)/utils/init.c \ - $(SRCDIR)/parsing/check_map.c \ - $(SRCDIR)/parsing/check_map_2.c \ - -INCS = $(INCDIR)/parsing.h \ - $(INCDIR)/cub.h \ - -all: $(NAME) - -$(NAME): $(SRCS) $(INCS) - @$(MAKE) -s -C libft - @$(MAKE) -s -C gnl - $(CC) -g -I$(INCDIR) $(SRCS) -o $(NAME) $(LIBFT) $(GNL) - -clean: - rm -f $(NAME) - @make clean -s -C libft - @make clean -s -C gnl - -clean1: - rm -f $(NAME) - -fclean: clean1 - @make fclean -s -C libft - @make fclean -s -C gnl -re: fclean all - -.PHONY: all clean fclean re clean1 diff --git a/cub3d b/cub3d deleted file mode 100755 index d6a801c..0000000 Binary files a/cub3d and /dev/null differ diff --git a/cub3d.h b/cub3d.h new file mode 100644 index 0000000..b94baf8 --- /dev/null +++ b/cub3d.h @@ -0,0 +1,68 @@ +// cub3d.h +#ifndef CUB3D_H +# define CUB3D_H +# include +# include +# include +# include "mlx.h" + +# define WIN_W 1280 +# define WIN_H 720 + +typedef struct s_img { + void *ptr; + char *addr; + int bpp; + int line_len; + int endian; +} t_img; + +typedef struct s_tex { + t_img img; + int w, h; +} t_tex; + +typedef struct s_keys { + bool w, a, s, d, left, right; +} t_keys; + +typedef struct s_app { + void *mlx; + void *win; + t_img frame; + // map + char **map; // rectangle, accès map[y][x] + int map_w, map_h; + + // player + double px, py; // position + double dirx, diry; // direction + double planex, planey; // caméra (FOV ~66° => plane longueur ~0.66) + + // movement + double move_speed; + double rot_speed; + + // textures (N,E,S,W) supposées chargées via parsing + t_tex tex[4]; + + // zbuffer pour sprites/doors bonus + double *zbuf; + + t_keys keys; +} t_app; + +// utils +void put_pixel(t_img *img, int x, int y, int color); +int get_tex_color(t_tex *t, int tx, int ty); + +// hooks +int key_press(int keycode, t_app *a); +int key_release(int keycode, t_app *a); +int close_win(t_app *a); + +// loop +int update(t_app *a); +void render_frame(t_app *a); + +#endif diff --git a/gnl/Makefile b/gnl/Makefile deleted file mode 100644 index c166fae..0000000 --- a/gnl/Makefile +++ /dev/null @@ -1,60 +0,0 @@ -# **************************************************************************** # -# # -# ::: :::::::: # -# Makefile :+: :+: :+: # -# +:+ +:+ +:+ # -# By: lfirmin lfirmim@student.42.fr> +#+ +:+ +#+ # -# +#+#+#+#+#+ +#+ # -# Created: 2024/08/12 07:07:31 by lfirmin #+# #+# # -# Updated: 2024/08/12 09:15:05 by lfirmin ### ########.fr # -# # -# **************************************************************************** # - -NAME = gnl.a -SRCS_DIR = srcs/ -INCS_DIR = includes/ -OBJ_DIR = obj/ - -SRC = get_next_line.c get_next_line_utils.c -CC = cc -CFLAGS = -Wall -Wextra -Werror -fPIE -INCLUDE = -I $(INCS_DIR) -SRCS = $(addprefix $(SRCS_DIR), $(SRC)) -OBJ = $(addprefix $(OBJ_DIR), $(SRC:.c=.o)) - -# Colors -GREEN = \033[0;32m -YELLOW = \033[0;33m -RESET = \033[0m -WHITE = \033[0;97m - -# Loading animation -LOADING_CHARS = ⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏ - -all: $(NAME) - -$(NAME): $(OBJ) - @printf "$(YELLOW)Compiling get_next_line, Please wait...$(RESET)" - @for char in $(LOADING_CHARS); do \ - printf "\r$(YELLOW)Compiling get_next_line, Please wait... $$char$(RESET)"; \ - sleep 0.1; \ - done - @ar rc $(NAME) $(OBJ) - @ranlib $(NAME) - @printf "\r$(GREEN)fine ! $(WHITE)get_next_line compiled successfully ! $(RESET)\n" - -$(OBJ_DIR)%.o: $(SRCS_DIR)%.c - @mkdir -p $(OBJ_DIR) - @$(CC) $(CFLAGS) $(INCLUDE) -c $< -o $@ - -clean: - @rm -rf $(OBJ_DIR) - @printf "$(WHITE)Clean process completed for $(GREEN)get_next_line.$(RESET)\n" - -fclean: clean - @rm -f $(NAME) - @printf "$(WHITE)Full clean process completed for $(GREEN)get_next_line.$(RESET)\n" - -re: fclean all - -.PHONY: all clean fclean re diff --git a/gnl/gnl.a b/gnl/gnl.a deleted file mode 100644 index ab25040..0000000 Binary files a/gnl/gnl.a and /dev/null differ diff --git a/gnl/include/get_next_line.h b/gnl/include/get_next_line.h deleted file mode 100644 index 9ffb3e2..0000000 --- a/gnl/include/get_next_line.h +++ /dev/null @@ -1,32 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* get_next_line.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: abelghou +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/07/21 19:32:47 by abelghou #+# #+# */ -/* Updated: 2024/07/23 20:47:15 by abelghou ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef GET_NEXT_LINE_H -# define GET_NEXT_LINE_H - -# ifndef BUFFER_SIZE -# define BUFFER_SIZE 1000 -# endif - -# include -# include -# include -# include - -char *ft_substr(char const *s, unsigned int start, size_t len); -int ft_strlen_g(const char *str); -char *ft_strchr_gnl(const char *s, int i); -char *ft_strdup_g(const char *s); -char *ft_strjoin(char const *s1, char const *s2); -char *get_next_line(int fd); - -#endif \ No newline at end of file diff --git a/gnl/obj/get_next_line.o b/gnl/obj/get_next_line.o deleted file mode 100644 index f050108..0000000 Binary files a/gnl/obj/get_next_line.o and /dev/null differ diff --git a/gnl/obj/get_next_line_utils.o b/gnl/obj/get_next_line_utils.o deleted file mode 100644 index e4574dd..0000000 Binary files a/gnl/obj/get_next_line_utils.o and /dev/null differ diff --git a/gnl/readme.md b/gnl/readme.md deleted file mode 100644 index 8e0d256..0000000 --- a/gnl/readme.md +++ /dev/null @@ -1,41 +0,0 @@ -# get_next_line - -A function that reads a line from a file descriptor. - -## 💡 About -The get_next_line project is a programming function that reads a line ending with a newline character from a file descriptor. When calling the function in a loop, it will then allow you to read the text file pointed to by the file descriptor, one line at a time until the end of the file. - -## 🛠️ Function Prototype -```c -char *get_next_line(int fd); -``` -## 📋 Usage -```c -#include "get_next_line.h" -#include - -int main(void) -{ - int fd; - char *line; - - fd = open("test.txt", O_RDONLY); - while ((line = get_next_line(fd)) != NULL) - { - printf("%s", line); - free(line); - } - close(fd); - return (0); -} -``` - -## ⚠️ Return Value -* The line that was read when successful -* NULL if there is nothing else to read or if an error occurred - -## 📊 Expected Behavior -* Repeated calls to get_next_line() should let you read the text file pointed to by the file descriptor, one line at a time -* The function should return the line that was read -* If there is nothing else to read or if an error occurred, it should return NULL -* The returned line should include the terminating \n character, except if the end of file was reached and does not end with a \n character \ No newline at end of file diff --git a/gnl/srcs/get_next_line.c b/gnl/srcs/get_next_line.c deleted file mode 100644 index 24fb53f..0000000 --- a/gnl/srcs/get_next_line.c +++ /dev/null @@ -1,102 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* get_next_line.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: abelghou +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/07/17 21:31:24 by abelghou #+# #+# */ -/* Updated: 2024/07/24 18:17:55 by abelghou ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../include/get_next_line.h" - -static char *sort_and_store(int fd, char *buf, char *backup) -{ - int read_line; - char *char_temp; - - read_line = 1; - while (read_line != 0) - { - read_line = read(fd, buf, BUFFER_SIZE); - if (read_line == -1) - return (0); - else if (read_line == 0) - break ; - buf[read_line] = '\0'; - if (!backup) - backup = ft_strdup_g(""); - if (!backup) - return (NULL); - char_temp = backup; - backup = ft_strjoin(char_temp, buf); - free(char_temp); - char_temp = NULL; - if (ft_strchr_gnl (buf, '\n')) - break ; - } - return (backup); -} - -static char *extract(char *line) -{ - size_t count; - char *backup; - - count = 0; - while (line[count] != '\n' && line[count] != '\0') - count++; - if (line[count] == '\0' || line[1] == '\0') - return (0); - backup = ft_substr(line, count + 1, ft_strlen_g(line) - count); - if (!backup) - return (NULL); - if (*backup == '\0') - { - free (backup); - backup = NULL; - } - line[count + 1] = '\0'; - return (backup); -} - -char *get_next_line(int fd) -{ - char *line; - char *buf; - char *temp; - static char *backup; - - if (fd < 0 || BUFFER_SIZE <= 0) - return (free(backup), backup = NULL, NULL); - buf = (char *)malloc(sizeof(char) * (BUFFER_SIZE + 1)); - if (!buf) - return (free(backup), backup = NULL, NULL); - line = sort_and_store(fd, buf, backup); - free(buf); - buf = NULL; - if (!line) - return (free(backup), backup = NULL, NULL); - backup = extract(line); - temp = ft_strdup_g(line); - free(line); - if (!temp) - return (free(backup), backup = NULL, NULL); - return (temp); -} - -// int main() -// { -// int fd; -// char *line; -// fd = open("fd.txt", O_RDONLY); -// while((line = get_next_line(fd)) != NULL) -// { -// printf("%s", line); -// free(line); -// } -// line = get_next_line(fd); -// close(fd); -// } \ No newline at end of file diff --git a/gnl/srcs/get_next_line_utils.c b/gnl/srcs/get_next_line_utils.c deleted file mode 100644 index 5ba6d2d..0000000 --- a/gnl/srcs/get_next_line_utils.c +++ /dev/null @@ -1,106 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* get_next_line_utils.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: abelghou +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/07/21 19:34:18 by abelghou #+# #+# */ -/* Updated: 2024/07/23 20:06:41 by abelghou ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../include/get_next_line.h" - -char *ft_substr(char const *s, unsigned int start, size_t len) -{ - size_t i; - size_t j; - char *str; - - str = (char *)malloc(sizeof(*s) * (len + 1)); - if (str == 0) - return (NULL); - i = 0; - j = 0; - while (s[i]) - { - if (i >= start && j < len) - { - str[j] = s[i]; - j++; - } - i++; - } - str[j] = '\0'; - return (str); -} - -int ft_strlen_g(const char *str) -{ - int i; - - i = 0; - while (str[i]) - i++; - return (i); -} - -char *ft_strchr_gnl(const char *s, int i) -{ - while (*s) - { - if (*s == i) - return ((char *)s); - s++; - } - if (i == '\0') - return ((char *)s); - return (0); -} - -char *ft_strdup_g(const char *s) -{ - int i; - int j; - char *str; - - i = 0; - j = ft_strlen_g(s); - str = (char *)malloc(sizeof(*str) * (j + 1)); - if (!str) - return (NULL); - while (i < j) - { - str[i] = s[i]; - i++; - } - str[i] = '\0'; - return (str); -} - -char *ft_strjoin(char const *s1, char const *s2) -{ - int i; - int j; - char *str; - - i = 0; - j = 0; - str = (char *)malloc(sizeof(char) * (ft_strlen_g(s1) \ - + ft_strlen_g(s2) + 1)); - if (str == NULL) - return (NULL); - while (s1[i] != '\0') - { - str[i] = s1[i]; - i++; - } - while (s2[j] != '\0') - { - str[i + j] = s2[j]; - j++; - } - str[i + j] = '\0'; - return (str); -} diff --git a/includes/cub.h b/includes/cub.h deleted file mode 100644 index 052dc8b..0000000 --- a/includes/cub.h +++ /dev/null @@ -1,57 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* cub.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/08/22 14:56:25 by lfirmin #+# #+# */ -/* Updated: 2025/10/07 12:14:42 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#ifndef CUB_H - -# define CUB_H - -# include "parsing.h" -# include "../libft/include/libft.h" -# include "../gnl/include/get_next_line.h" - -# define ERROR_PREFIX "Error\n" -# define ERROR_EXT "Invalid file extension. Only .cub files are accepted." -# define ERROR_EMPT_PATH "Invalid map file path." -# define ERROR_INIT_DATA "Initialization of the data structure failed." -# define ERROR_INIT_TEX "Initialization of the textures structure failed." -# define ERROR_INIT_PARS "Initialization of the parsing structure failed." -# define ERROR_EMPTY "You have provided an empty file." -# define ERROR_COL "The RGB values provided are not valid or absent." -# define ERROR_NULL_P "Player not found or multiple players." -# define ERROR_BAD_CHAR "Invalid character in map." -# define ERROR_POS "Player position not found." -# define ERROR_ALLOC "Allocation failed." -# define ERROR_PLAYER "Player not found or multiple players." -# define ERROR_CHAR "Invalid character in map." -# define ERROR_DOUBLE "Multiple images/colors have been provided \ -for the same texture." -# define ERROR_NOT_CLOSE "Map is not closed by walls." -# define ERROR_NOT_XMP "The texture file is not an xpm image." - -typedef struct s_data -{ - char **map; - char *map_path; - t_textures *texture; - t_data_parsing parsing; -} t_data; - -//utils -void ft_error(char *message); -void free_char_array(char **array); -int ft_arrlen(char **arr); -void print_array(char **array);//temp - -//init -int init_data(t_data *data, char *path); -void free_data(t_data *data); - -#endif diff --git a/includes/parsing.h b/includes/parsing.h deleted file mode 100644 index 8f96c8c..0000000 --- a/includes/parsing.h +++ /dev/null @@ -1,89 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parsing.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/08/22 14:08:04 by lfirmin #+# #+# */ -/* Updated: 2025/10/07 12:16:07 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef PARSING_H -# define PARSING_H - -# include -# include -# include -# include - -struct s_data; -typedef struct s_data t_data; - -typedef struct s_textures -{ - char *north; - char *south; - char *east; - char *west; - int floor[3]; - int ceiling[3]; -} t_textures; - -typedef struct s_data_parsing -{ - char **raw_map; - int fd_map; - int fd_map_dup; - int player[3]; -} t_data_parsing; -//player -> 0 = x, 1 = y, 2 = head - -//parsing -int parsing(t_data *data); - -//check_file -int check_extension(char *map_path); -int check_file(char *map_path, t_data_parsing *parsing); - -//get_map -int get_map(t_data *data); -int line_counter(int fd); -int put_map_on_array(t_data *data); -char *clean_line(char *raw_line); - -//init_parsing -int init_parsing(t_data_parsing *parsing); -int init_textures(t_textures *textures); -int free_textures(t_textures *textures); - -//line_detect -int is_config_line(char *line); -int is_empty_line(char *line); -int is_texture_line(char *line); -int is_color_line(char *line); -int check_extension_2(char *str); - -//get_textures -int get_texture_path(char *line, t_textures *texture, int *j); -int validate_and_convert_rgb(char **parts, int rgb[3]); -int get_rgb_values(char *line, int rgb[3]); -int is_valid_number(char *str); - -//check_colors -int check_colors(t_textures *texture); -int is_rgb(int color[3]); - -// check_map -int check_map_char(char **map); -void find_player_pos(char **map, int *player); -int flood_fill(char **map_cp, int x, int y); -int rep_ex_wall(char **map_cp, int x, int y); -int check_char_and_count(char c, int *p); - -//check_map_2 -int hasivalidchar(char **map); -int validate_map(char **map, int *player); - -#endif diff --git a/input.c b/input.c new file mode 100644 index 0000000..e5d3adb --- /dev/null +++ b/input.c @@ -0,0 +1,46 @@ +// input.c +#include "cub3d.h" +#ifdef __APPLE__ +# define KEY_ESC 53 +# define KEY_W 13 +# define KEY_A 0 +# define KEY_S 1 +# define KEY_D 2 +# define KEY_LEFT 123 +# define KEY_RIGHT 124 +#else +# define KEY_ESC 65307 +# define KEY_W 119 +# define KEY_A 97 +# define KEY_S 115 +# define KEY_D 100 +# define KEY_LEFT 65361 +# define KEY_RIGHT 65363 +#endif + +int key_press(int key, t_app *a){ + if (key == KEY_ESC) close_win(a); + if (key == KEY_W) a->keys.w = true; + if (key == KEY_S) a->keys.s = true; + if (key == KEY_A) a->keys.a = true; + if (key == KEY_D) a->keys.d = true; + if (key == KEY_LEFT) a->keys.left = true; + if (key == KEY_RIGHT) a->keys.right = true; + return 0; +} +int key_release(int key, t_app *a){ + if (key == KEY_W) a->keys.w = false; + if (key == KEY_S) a->keys.s = false; + if (key == KEY_A) a->keys.a = false; + if (key == KEY_D) a->keys.d = false; + if (key == KEY_LEFT) a->keys.left = false; + if (key == KEY_RIGHT) a->keys.right = false; + return 0; +} +int close_win(t_app *a){ + if (a->zbuf) free(a->zbuf); + if (a->frame.ptr) mlx_destroy_image(a->mlx, a->frame.ptr); + if (a->win) mlx_destroy_window(a->mlx, a->win); + exit(0); + return 0; +} diff --git a/libft/Makefile b/libft/Makefile deleted file mode 100644 index 87b9709..0000000 --- a/libft/Makefile +++ /dev/null @@ -1,68 +0,0 @@ -# **************************************************************************** # -# # -# ::: :::::::: # -# Makefile :+: :+: :+: # -# +:+ +:+ +:+ # -# By: lfirmin +#+ +:+ +#+ # -# +#+#+#+#+#+ +#+ # -# Created: 2024/05/19 12:59:31 by lfirmin #+# #+# # -# Updated: 2025/04/19 11:53:48 by lfirmin ### ########.fr # -# # -# **************************************************************************** # - -NAME = libft.a -HEADER = ./include -SRCS_DIR = ./srcs/ -SRC = ft_isalnum.c ft_isprint.c ft_memcmp.c ft_putchar_fd.c ft_split.c \ - ft_strlcat.c ft_strncmp.c ft_substr.c ft_atoi.c ft_isalpha.c \ - ft_itoa.c ft_memcpy.c ft_putendl_fd.c ft_strchr.c ft_strlcpy.c \ - ft_strnstr.c ft_tolower.c ft_bzero.c ft_isascii.c ft_strtrim.c \ - ft_memmove.c ft_putnbr_fd.c ft_strdup.c ft_strlen.c ft_strrchr.c \ - ft_toupper.c ft_calloc.c ft_isdigit.c ft_memchr.c ft_memset.c \ - ft_putstr_fd.c ft_strjoin.c ft_strmapi.c ft_striteri.c \ - ft_lstnew_bonus.c ft_lstadd_front_bonus.c ft_lstsize_bonus.c \ - ft_lstlast_bonus.c ft_lstadd_back_bonus.c ft_lstdelone_bonus.c \ - ft_lstclear_bonus.c ft_lstiter_bonus.c ft_lstmap_bonus.c ft_strcmp.c \ - ft_atoll.c ft_straddchar.c ft_strcpy.c ft_arrcpy.c - -SRCS = $(addprefix $(SRCS_DIR), $(SRC)) -CC = cc -CFLAGS = -Wall -Wextra -Werror -g3 -INCLUDE = -I $(HEADER) -OBJ_DIR = obj/ -OBJ = $(addprefix $(OBJ_DIR), $(SRC:.c=.o)) - -GREEN = \033[0;32m -YELLOW = \033[0;33m -RESET = \033[0m -WHITE = \033[0;97m - -LOADING_CHARS = ⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏ - -all: $(NAME) - -$(NAME): $(OBJ) - @printf "$(YELLOW)Compiling libft, Please wait...$(RESET)" - @for char in $(LOADING_CHARS); do \ - printf "\r$(YELLOW)Compiling libft, Please wait... $$char$(RESET)"; \ - sleep 0.1; \ - done - @ar rc $(NAME) $(OBJ) - @ranlib $(NAME) - @printf "\r$(GREEN)Great news ! $(WHITE)Libft compiled successfully ! $(RESET)\n" - -$(OBJ_DIR)%.o: $(SRCS_DIR)%.c - @mkdir -p $(OBJ_DIR) - @$(CC) $(CFLAGS) $(INCLUDE) -c $< -o $@ - -clean: - @rm -rf $(OBJ_DIR) - @printf "$(WHITE)Clean process completed for $(GREEN)Libft.$(RESET)\n" - -fclean: clean - @rm -f $(NAME) - @printf "$(WHITE)Full clean process completed for $(GREEN)Libft.$(RESET)\n" - -re: fclean all - -.PHONY: all clean fclean re \ No newline at end of file diff --git a/libft/Readme.md b/libft/Readme.md deleted file mode 100644 index ef5f375..0000000 --- a/libft/Readme.md +++ /dev/null @@ -1,55 +0,0 @@ -# Libft - 42 Project - -## Description -Libft is the first project at 42 school. The aim is to recreate various standard C library functions, as well as additional functions that will be useful throughout the cursus. This library will be used in most of the future 42 projects. - -## Functions - -### Libc Functions -`ft_isalpha` • `ft_isdigit` • `ft_isalnum` • `ft_isascii` • `ft_isprint` • `ft_strlen` • `ft_memset` • `ft_bzero` • `ft_memcpy` • `ft_memmove` • `ft_strlcpy` • `ft_strlcat` • `ft_toupper` • `ft_tolower` • `ft_strchr` • `ft_strrchr` • `ft_strncmp` • `ft_memchr` • `ft_memcmp` • `ft_strnstr` • `ft_atoi` • `ft_calloc` • `ft_strdup` - -### Additional Functions -`ft_substr` • `ft_strjoin` • `ft_strtrim` • `ft_split` • `ft_itoa` • `ft_strmapi` • `ft_striteri` • `ft_putchar_fd` • `ft_putstr_fd` • `ft_putendl_fd` • `ft_putnbr_fd` - -### Bonus Functions -`ft_lstnew` • `ft_lstadd_front` • `ft_lstsize` • `ft_lstlast` • `ft_lstadd_back` • `ft_lstdelone` • `ft_lstclear` • `ft_lstiter` • `ft_lstmap` - -## Getting Started - -### Prerequisites -- GCC compiler -- Make - -### Usage -1. Include the header in your source file: -```c -#include "libft.h" -``` - -### Compilation -1. Compilation: -```bash -make -``` - -## Cleaning -- Remove object files: -```bash -make clean -``` - -- Remove object files and library: -```bash -make fclean -``` - -- Recompile everything: -```bash -make re -``` - -## Testing -This project doesn't come with unit tests, but you can use external testers: -- [libft-unit-test](https://github.com/alelievr/libft-unit-test) -- [libft-war-machine](https://github.com/ska42/libft-war-machine) -- [Tripouille/libfTester](https://github.com/Tripouille/libftTester) diff --git a/libft/include/libft.h b/libft/include/libft.h deleted file mode 100644 index b2d0d5a..0000000 --- a/libft/include/libft.h +++ /dev/null @@ -1,93 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* libft.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/21 11:19:08 by lfirmin #+# #+# */ -/* Updated: 2025/04/19 11:56:03 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef LIBFT_H -# define LIBFT_H - -# include -# include -# include -# include -# include -# include - -typedef struct v -{ - char **array; - int i; - int j; - int start; - int end; -} t_split_struct; - -typedef struct s_list -{ - void *content; - struct s_list *next; -} t_list; - -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); -int ft_atoi(const char *str); -int ft_memcmp(const void *ptr1, const void *ptr2, size_t num); -int ft_strncmp(const char *s1, const char *s2, unsigned int n); -int ft_toupper(int c); -int ft_tolower(int c); -int ft_lstsize(t_list *lst); -int ft_strcmp(char *s1, char *s2); -long long ft_atoll(const char *str); - -size_t ft_strlen(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 dsts); - -void *ft_bzero(void *s, size_t n); -void *ft_calloc(size_t count, size_t n); -void *ft_memchr(const void *s, int c, size_t n); -void *ft_memcpy(void *dest, const void *src, size_t len); -void *ft_memset(void *b, int c, size_t len); -void *ft_memmove(void *s1, const void *s2, size_t len); -void *ft_memset(void *str, int c, size_t n); -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); -void ft_striteri(char *s, void (*f)(unsigned int, char*)); -void ft_lstadd_front(t_list **lst, t_list *new); -void ft_lstadd_back(t_list **lst, t_list *new); -void ft_lstdelone(t_list *lst, void (*del)(void*)); -void ft_lstclear(t_list **lst, void (*del)(void*)); -void ft_lstiter(t_list *lst, void (*f)(void *)); - -char *ft_strchr(char const *str, int c); -char *ft_strdup(const char *src); -char *ft_strjoin(const char *s1, const char *s2); -char *ft_strnstr(const char *hay, const char *need, size_t len); -char *ft_strrchr(const char *str, int c); -char *ft_strtrim(char const *s1, char const *set); -char *ft_substr(char const *s, unsigned int start, size_t len); -char **ft_split(char const *s, char c); -char *ft_strmapi(char const *s, char (*f)(unsigned int, char)); -char *ft_itoa(int n); -char *ft_straddchar(char *str, char c); -char *ft_strcpy(char *dest, char *src); -char **ft_arrcpy(char **array); - -t_list *ft_lstnew(void *content); -t_list *ft_lstlast(t_list *lst); -t_list *ft_lstmap(t_list *lst, void *(*f)(void *), \ - void (*del)(void *)); - -#endif \ No newline at end of file diff --git a/libft/libft.a b/libft/libft.a deleted file mode 100644 index d6d50ba..0000000 Binary files a/libft/libft.a and /dev/null differ diff --git a/libft/obj/ft_arrcpy.o b/libft/obj/ft_arrcpy.o deleted file mode 100644 index 4882104..0000000 Binary files a/libft/obj/ft_arrcpy.o and /dev/null differ diff --git a/libft/obj/ft_atoi.o b/libft/obj/ft_atoi.o deleted file mode 100644 index 3049d5c..0000000 Binary files a/libft/obj/ft_atoi.o and /dev/null differ diff --git a/libft/obj/ft_atoll.o b/libft/obj/ft_atoll.o deleted file mode 100644 index a13c20a..0000000 Binary files a/libft/obj/ft_atoll.o and /dev/null differ diff --git a/libft/obj/ft_bzero.o b/libft/obj/ft_bzero.o deleted file mode 100644 index cba45f1..0000000 Binary files a/libft/obj/ft_bzero.o and /dev/null differ diff --git a/libft/obj/ft_calloc.o b/libft/obj/ft_calloc.o deleted file mode 100644 index ee13491..0000000 Binary files a/libft/obj/ft_calloc.o and /dev/null differ diff --git a/libft/obj/ft_isalnum.o b/libft/obj/ft_isalnum.o deleted file mode 100644 index 6f856ee..0000000 Binary files a/libft/obj/ft_isalnum.o and /dev/null differ diff --git a/libft/obj/ft_isalpha.o b/libft/obj/ft_isalpha.o deleted file mode 100644 index 249afe4..0000000 Binary files a/libft/obj/ft_isalpha.o and /dev/null differ diff --git a/libft/obj/ft_isascii.o b/libft/obj/ft_isascii.o deleted file mode 100644 index e28cafb..0000000 Binary files a/libft/obj/ft_isascii.o and /dev/null differ diff --git a/libft/obj/ft_isdigit.o b/libft/obj/ft_isdigit.o deleted file mode 100644 index 87e05b9..0000000 Binary files a/libft/obj/ft_isdigit.o and /dev/null differ diff --git a/libft/obj/ft_isprint.o b/libft/obj/ft_isprint.o deleted file mode 100644 index 1e8a716..0000000 Binary files a/libft/obj/ft_isprint.o and /dev/null differ diff --git a/libft/obj/ft_itoa.o b/libft/obj/ft_itoa.o deleted file mode 100644 index 57025c2..0000000 Binary files a/libft/obj/ft_itoa.o and /dev/null differ diff --git a/libft/obj/ft_lstadd_back_bonus.o b/libft/obj/ft_lstadd_back_bonus.o deleted file mode 100644 index a97b101..0000000 Binary files a/libft/obj/ft_lstadd_back_bonus.o and /dev/null differ diff --git a/libft/obj/ft_lstadd_front_bonus.o b/libft/obj/ft_lstadd_front_bonus.o deleted file mode 100644 index f28ae9e..0000000 Binary files a/libft/obj/ft_lstadd_front_bonus.o and /dev/null differ diff --git a/libft/obj/ft_lstclear_bonus.o b/libft/obj/ft_lstclear_bonus.o deleted file mode 100644 index 6f6d6c7..0000000 Binary files a/libft/obj/ft_lstclear_bonus.o and /dev/null differ diff --git a/libft/obj/ft_lstdelone_bonus.o b/libft/obj/ft_lstdelone_bonus.o deleted file mode 100644 index fff510e..0000000 Binary files a/libft/obj/ft_lstdelone_bonus.o and /dev/null differ diff --git a/libft/obj/ft_lstiter_bonus.o b/libft/obj/ft_lstiter_bonus.o deleted file mode 100644 index a51bda5..0000000 Binary files a/libft/obj/ft_lstiter_bonus.o and /dev/null differ diff --git a/libft/obj/ft_lstlast_bonus.o b/libft/obj/ft_lstlast_bonus.o deleted file mode 100644 index c9569a9..0000000 Binary files a/libft/obj/ft_lstlast_bonus.o and /dev/null differ diff --git a/libft/obj/ft_lstmap_bonus.o b/libft/obj/ft_lstmap_bonus.o deleted file mode 100644 index 4d7d2bb..0000000 Binary files a/libft/obj/ft_lstmap_bonus.o and /dev/null differ diff --git a/libft/obj/ft_lstnew_bonus.o b/libft/obj/ft_lstnew_bonus.o deleted file mode 100644 index 5374b3d..0000000 Binary files a/libft/obj/ft_lstnew_bonus.o and /dev/null differ diff --git a/libft/obj/ft_lstsize_bonus.o b/libft/obj/ft_lstsize_bonus.o deleted file mode 100644 index d7eb61a..0000000 Binary files a/libft/obj/ft_lstsize_bonus.o and /dev/null differ diff --git a/libft/obj/ft_memchr.o b/libft/obj/ft_memchr.o deleted file mode 100644 index 7df2b12..0000000 Binary files a/libft/obj/ft_memchr.o and /dev/null differ diff --git a/libft/obj/ft_memcmp.o b/libft/obj/ft_memcmp.o deleted file mode 100644 index eeaea53..0000000 Binary files a/libft/obj/ft_memcmp.o and /dev/null differ diff --git a/libft/obj/ft_memcpy.o b/libft/obj/ft_memcpy.o deleted file mode 100644 index 78b03bb..0000000 Binary files a/libft/obj/ft_memcpy.o and /dev/null differ diff --git a/libft/obj/ft_memmove.o b/libft/obj/ft_memmove.o deleted file mode 100644 index 6cb3598..0000000 Binary files a/libft/obj/ft_memmove.o and /dev/null differ diff --git a/libft/obj/ft_memset.o b/libft/obj/ft_memset.o deleted file mode 100644 index 72099e8..0000000 Binary files a/libft/obj/ft_memset.o and /dev/null differ diff --git a/libft/obj/ft_putchar_fd.o b/libft/obj/ft_putchar_fd.o deleted file mode 100644 index 611135a..0000000 Binary files a/libft/obj/ft_putchar_fd.o and /dev/null differ diff --git a/libft/obj/ft_putendl_fd.o b/libft/obj/ft_putendl_fd.o deleted file mode 100644 index ede5fe9..0000000 Binary files a/libft/obj/ft_putendl_fd.o and /dev/null differ diff --git a/libft/obj/ft_putnbr_fd.o b/libft/obj/ft_putnbr_fd.o deleted file mode 100644 index ae4c7e0..0000000 Binary files a/libft/obj/ft_putnbr_fd.o and /dev/null differ diff --git a/libft/obj/ft_putstr_fd.o b/libft/obj/ft_putstr_fd.o deleted file mode 100644 index 34af8ad..0000000 Binary files a/libft/obj/ft_putstr_fd.o and /dev/null differ diff --git a/libft/obj/ft_split.o b/libft/obj/ft_split.o deleted file mode 100644 index bf1faac..0000000 Binary files a/libft/obj/ft_split.o and /dev/null differ diff --git a/libft/obj/ft_straddchar.o b/libft/obj/ft_straddchar.o deleted file mode 100644 index 7086024..0000000 Binary files a/libft/obj/ft_straddchar.o and /dev/null differ diff --git a/libft/obj/ft_strchr.o b/libft/obj/ft_strchr.o deleted file mode 100644 index bcf3a07..0000000 Binary files a/libft/obj/ft_strchr.o and /dev/null differ diff --git a/libft/obj/ft_strcmp.o b/libft/obj/ft_strcmp.o deleted file mode 100644 index 0ec078f..0000000 Binary files a/libft/obj/ft_strcmp.o and /dev/null differ diff --git a/libft/obj/ft_strcpy.o b/libft/obj/ft_strcpy.o deleted file mode 100644 index 2155ac2..0000000 Binary files a/libft/obj/ft_strcpy.o and /dev/null differ diff --git a/libft/obj/ft_strdup.o b/libft/obj/ft_strdup.o deleted file mode 100644 index 1e68a64..0000000 Binary files a/libft/obj/ft_strdup.o and /dev/null differ diff --git a/libft/obj/ft_striteri.o b/libft/obj/ft_striteri.o deleted file mode 100644 index 354eef1..0000000 Binary files a/libft/obj/ft_striteri.o and /dev/null differ diff --git a/libft/obj/ft_strjoin.o b/libft/obj/ft_strjoin.o deleted file mode 100644 index f784d14..0000000 Binary files a/libft/obj/ft_strjoin.o and /dev/null differ diff --git a/libft/obj/ft_strlcat.o b/libft/obj/ft_strlcat.o deleted file mode 100644 index 20ccf96..0000000 Binary files a/libft/obj/ft_strlcat.o and /dev/null differ diff --git a/libft/obj/ft_strlcpy.o b/libft/obj/ft_strlcpy.o deleted file mode 100644 index 938d5e6..0000000 Binary files a/libft/obj/ft_strlcpy.o and /dev/null differ diff --git a/libft/obj/ft_strlen.o b/libft/obj/ft_strlen.o deleted file mode 100644 index 05d939b..0000000 Binary files a/libft/obj/ft_strlen.o and /dev/null differ diff --git a/libft/obj/ft_strmapi.o b/libft/obj/ft_strmapi.o deleted file mode 100644 index 8387053..0000000 Binary files a/libft/obj/ft_strmapi.o and /dev/null differ diff --git a/libft/obj/ft_strncmp.o b/libft/obj/ft_strncmp.o deleted file mode 100644 index 2d114f2..0000000 Binary files a/libft/obj/ft_strncmp.o and /dev/null differ diff --git a/libft/obj/ft_strnstr.o b/libft/obj/ft_strnstr.o deleted file mode 100644 index 1e89f1b..0000000 Binary files a/libft/obj/ft_strnstr.o and /dev/null differ diff --git a/libft/obj/ft_strrchr.o b/libft/obj/ft_strrchr.o deleted file mode 100644 index e963234..0000000 Binary files a/libft/obj/ft_strrchr.o and /dev/null differ diff --git a/libft/obj/ft_strtrim.o b/libft/obj/ft_strtrim.o deleted file mode 100644 index eb359fd..0000000 Binary files a/libft/obj/ft_strtrim.o and /dev/null differ diff --git a/libft/obj/ft_substr.o b/libft/obj/ft_substr.o deleted file mode 100644 index b00a21e..0000000 Binary files a/libft/obj/ft_substr.o and /dev/null differ diff --git a/libft/obj/ft_tolower.o b/libft/obj/ft_tolower.o deleted file mode 100644 index 497a66a..0000000 Binary files a/libft/obj/ft_tolower.o and /dev/null differ diff --git a/libft/obj/ft_toupper.o b/libft/obj/ft_toupper.o deleted file mode 100644 index 1209c5d..0000000 Binary files a/libft/obj/ft_toupper.o and /dev/null differ diff --git a/libft/srcs/ft_arrcpy.c b/libft/srcs/ft_arrcpy.c deleted file mode 100644 index 2498a9c..0000000 --- a/libft/srcs/ft_arrcpy.c +++ /dev/null @@ -1,41 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_arrcpy.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/21 02:18:17 by lfirmin #+# #+# */ -/* Updated: 2025/10/06 14:06:37 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -char **ft_arrcpy(char **array) -{ - char **copy; - int i; - int len; - - len = 0; - while (array[len]) - len++; - copy = malloc(sizeof(char *) * (len + 1)); - if (!copy) - return (NULL); - i = 0; - while (i < len) - { - copy[i] = strdup(array[i]); - if (!copy[i]) - { - while (i > 0) - free(copy[--i]); - free(copy); - return (NULL); - } - i++; - } - copy[i] = NULL; - return (copy); -} diff --git a/libft/srcs/ft_atoi.c b/libft/srcs/ft_atoi.c deleted file mode 100644 index a05a597..0000000 --- a/libft/srcs/ft_atoi.c +++ /dev/null @@ -1,40 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_atoi.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/21 10:09:46 by lfirmin #+# #+# */ -/* Updated: 2024/06/03 21:02:02 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -int ft_atoi(const char *str) -{ - int i; - int s; - int m; - - i = 0; - s = 0; - m = 0; - while ((str[i] <= 13 && str[i] >= 9) || str[i] == 32) - i++; - while (str[i] == '-' || str[i] == '+') - { - s++; - if (s >= 2) - return (0); - if (str[i] == '-') - m++; - i++; - } - s = 0; - while (str[i] >= 48 && str[i] <= 57) - s = s * 10 + (str[i++] - 48); - if (m % 2 == 1) - s = s * -1; - return (s); -} diff --git a/libft/srcs/ft_atoll.c b/libft/srcs/ft_atoll.c deleted file mode 100644 index 34fd5a5..0000000 --- a/libft/srcs/ft_atoll.c +++ /dev/null @@ -1,38 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_atoll.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/11/03 17:25:06 by lfirmin #+# #+# */ -/* Updated: 2024/11/03 17:25:33 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -long long ft_atoll(const char *str) -{ - long long result; - int sign; - - result = 0; - sign = 1; - while (*str == ' ' || (*str >= 9 && *str <= 13)) - str++; - if (*str == '-' || *str == '+') - { - if (*str == '-') - sign = -1; - str++; - } - while (*str >= '0' && *str <= '9') - { - if (result > INT_MAX || result < INT_MIN) - return (2147483648); - result = result * 10 + (*str - '0'); - str++; - } - return (result * sign); -} diff --git a/libft/srcs/ft_bzero.c b/libft/srcs/ft_bzero.c deleted file mode 100644 index 507f22d..0000000 --- a/libft/srcs/ft_bzero.c +++ /dev/null @@ -1,24 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_bzero.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/21 00:20:00 by lfirmin #+# #+# */ -/* Updated: 2024/05/30 19:49:23 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void *ft_bzero(void *b, size_t len) -{ - size_t i; - unsigned char *r; - - r = (unsigned char *)b; - i = 0; - while (i < len) - r[i++] = '\0'; - return (b); -} diff --git a/libft/srcs/ft_calloc.c b/libft/srcs/ft_calloc.c deleted file mode 100644 index b42206a..0000000 --- a/libft/srcs/ft_calloc.c +++ /dev/null @@ -1,31 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_calloc.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/21 11:14:02 by lfirmin #+# #+# */ -/* Updated: 2024/06/03 18:15:05 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void *ft_calloc(size_t c, size_t s) -{ - void *ptr; - long long int tmp1; - long long int tmp2; - - tmp1 = (long long int)c; - tmp2 = (long long int)s; - if ((c > 4294967295 || s > 4294967295) && (tmp1 < 0 && tmp2 < 0)) - return (NULL); - if (tmp1 * tmp2 < 0) - return (NULL); - ptr = malloc(c * s); - if (!ptr) - return (NULL); - ft_bzero(ptr, c * s); - return (ptr); -} diff --git a/libft/srcs/ft_isalnum.c b/libft/srcs/ft_isalnum.c deleted file mode 100644 index 0fd48a2..0000000 --- a/libft/srcs/ft_isalnum.c +++ /dev/null @@ -1,19 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isalnum.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/20 02:29:49 by lfirmin #+# #+# */ -/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -int ft_isalnum(int c) -{ - if ((c >= 97 && c <= 122) || (c >= 48 && c <= 57) || (c >= 65 && c <= 90)) - return (1); - return (0); -} diff --git a/libft/srcs/ft_isalpha.c b/libft/srcs/ft_isalpha.c deleted file mode 100644 index 3382c40..0000000 --- a/libft/srcs/ft_isalpha.c +++ /dev/null @@ -1,19 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isalpha.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/20 01:55:52 by lfirmin #+# #+# */ -/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -int ft_isalpha(int c) -{ - if ((c >= 97 && c <= 122) || (c >= 65 && c <= 90)) - return (1); - return (0); -} diff --git a/libft/srcs/ft_isascii.c b/libft/srcs/ft_isascii.c deleted file mode 100644 index c5d9e0b..0000000 --- a/libft/srcs/ft_isascii.c +++ /dev/null @@ -1,19 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isascii.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/20 02:36:17 by lfirmin #+# #+# */ -/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -int ft_isascii(int c) -{ - if (c >= 0 && c <= 127) - return (1); - return (0); -} diff --git a/libft/srcs/ft_isdigit.c b/libft/srcs/ft_isdigit.c deleted file mode 100644 index 78f90b9..0000000 --- a/libft/srcs/ft_isdigit.c +++ /dev/null @@ -1,19 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isdigit.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/20 02:31:51 by lfirmin #+# #+# */ -/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -int ft_isdigit(int c) -{ - if (c >= 48 && c <= 57) - return (1); - return (0); -} diff --git a/libft/srcs/ft_isprint.c b/libft/srcs/ft_isprint.c deleted file mode 100644 index 2a09bb2..0000000 --- a/libft/srcs/ft_isprint.c +++ /dev/null @@ -1,19 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isprint.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/20 02:38:24 by lfirmin #+# #+# */ -/* Updated: 2024/05/23 06:21:54 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -int ft_isprint(int c) -{ - if (((c >= 0 && c <= 31) || c >= 127 || c == EOF)) - return (0); - return (1); -} diff --git a/libft/srcs/ft_itoa.c b/libft/srcs/ft_itoa.c deleted file mode 100644 index eade559..0000000 --- a/libft/srcs/ft_itoa.c +++ /dev/null @@ -1,51 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_itoa.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/24 12:59:00 by lfirmin #+# #+# */ -/* Updated: 2024/05/29 10:31:36 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -static size_t ft_count(long int n) -{ - size_t c; - - c = 0; - if (n <= 0) - c = 1; - while (n != 0) - { - n = n / 10; - c++; - } - return (c); -} - -char *ft_itoa(int n) -{ - char *str; - size_t size; - long int num; - - num = n; - size = ft_count(num); - str = (char *)malloc(size + 1); - if (!str) - return (NULL); - str[size] = '\0'; - if (num < 0) - num = -num; - while (size--) - { - str[size] = num % 10 + '0'; - num = num / 10; - if (n < 0 && size == 0) - str[size] = '-'; - } - return (str); -} diff --git a/libft/srcs/ft_lstadd_back_bonus.c b/libft/srcs/ft_lstadd_back_bonus.c deleted file mode 100644 index 2bfdfc7..0000000 --- a/libft/srcs/ft_lstadd_back_bonus.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstadd_back.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/06/01 02:01:18 by lfirmin #+# #+# */ -/* Updated: 2024/06/03 15:59:33 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void ft_lstadd_back(t_list **lst, t_list *new) -{ - t_list *last; - - if (!new) - return ; - if (!lst || !*lst) - { - *lst = new; - return ; - } - last = ft_lstlast(*lst); - last->next = new; -} diff --git a/libft/srcs/ft_lstadd_front_bonus.c b/libft/srcs/ft_lstadd_front_bonus.c deleted file mode 100644 index b784622..0000000 --- a/libft/srcs/ft_lstadd_front_bonus.c +++ /dev/null @@ -1,21 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstadd_front.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/31 20:34:57 by lfirmin #+# #+# */ -/* Updated: 2024/05/31 20:41:34 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void ft_lstadd_front(t_list **lst, t_list *new) -{ - if (lst && new) - { - new->next = *lst; - *lst = new; - } -} diff --git a/libft/srcs/ft_lstclear_bonus.c b/libft/srcs/ft_lstclear_bonus.c deleted file mode 100644 index 54479d1..0000000 --- a/libft/srcs/ft_lstclear_bonus.c +++ /dev/null @@ -1,28 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstclear.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/06/01 20:46:07 by lfirmin #+# #+# */ -/* Updated: 2024/06/01 20:51:07 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void ft_lstclear(t_list **lst, void (*del)(void*)) -{ - t_list *t; - - if (lst) - { - while (*lst) - { - t = (*lst)->next; - ft_lstdelone(*lst, del); - (*lst) = t; - } - (*lst) = NULL; - } -} diff --git a/libft/srcs/ft_lstdelone_bonus.c b/libft/srcs/ft_lstdelone_bonus.c deleted file mode 100644 index 94ae5ab..0000000 --- a/libft/srcs/ft_lstdelone_bonus.c +++ /dev/null @@ -1,20 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstdelone.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/06/01 20:32:56 by lfirmin #+# #+# */ -/* Updated: 2024/06/01 20:32:56 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void ft_lstdelone(t_list *lst, void (*del)(void*)) -{ - if (!lst || !del) - return ; - del(lst->content); - free(lst); -} diff --git a/libft/srcs/ft_lstiter_bonus.c b/libft/srcs/ft_lstiter_bonus.c deleted file mode 100644 index 8870692..0000000 --- a/libft/srcs/ft_lstiter_bonus.c +++ /dev/null @@ -1,23 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstiter.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/06/01 21:05:12 by lfirmin #+# #+# */ -/* Updated: 2024/06/01 21:05:12 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void ft_lstiter(t_list *lst, void (*f)(void *)) -{ - if (!lst || !f) - return ; - while (lst) - { - f(lst->content); - lst = lst->next; - } -} diff --git a/libft/srcs/ft_lstlast_bonus.c b/libft/srcs/ft_lstlast_bonus.c deleted file mode 100644 index c00582b..0000000 --- a/libft/srcs/ft_lstlast_bonus.c +++ /dev/null @@ -1,23 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstlast.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/06/01 01:52:09 by lfirmin #+# #+# */ -/* Updated: 2024/06/01 01:57:22 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -t_list *ft_lstlast(t_list *lst) -{ - while (lst) - { - if (!lst->next) - return (lst); - lst = lst->next; - } - return (lst); -} diff --git a/libft/srcs/ft_lstmap_bonus.c b/libft/srcs/ft_lstmap_bonus.c deleted file mode 100644 index 7efc366..0000000 --- a/libft/srcs/ft_lstmap_bonus.c +++ /dev/null @@ -1,41 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstmap.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/06/02 18:21:09 by lfirmin #+# #+# */ -/* Updated: 2024/06/03 15:53:13 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)) -{ - t_list *new; - t_list *save; - - if (!lst || !del || !f) - return (NULL); - new = ft_lstnew(lst->content); - if (!new) - return (NULL); - new->content = f(new->content); - save = new; - lst = lst->next; - while (lst) - { - new->next = ft_lstnew(lst->content); - if (!new->next) - { - ft_lstclear(&save, del); - return (NULL); - } - new->next->content = f(new->next->content); - new = new->next; - lst = lst->next; - } - new->next = NULL; - return (save); -} diff --git a/libft/srcs/ft_lstnew_bonus.c b/libft/srcs/ft_lstnew_bonus.c deleted file mode 100644 index d9a9ba7..0000000 --- a/libft/srcs/ft_lstnew_bonus.c +++ /dev/null @@ -1,24 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstnew.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/31 18:41:23 by lfirmin #+# #+# */ -/* Updated: 2024/05/31 20:33:26 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -t_list *ft_lstnew(void *content) -{ - t_list *new; - - new = (t_list *)malloc(sizeof(*new)); - if (!new) - return (NULL); - new->content = content; - new->next = NULL; - return (new); -} diff --git a/libft/srcs/ft_lstsize_bonus.c b/libft/srcs/ft_lstsize_bonus.c deleted file mode 100644 index d68e15d..0000000 --- a/libft/srcs/ft_lstsize_bonus.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstsize.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/31 22:00:49 by lfirmin #+# #+# */ -/* Updated: 2024/05/31 22:12:17 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -int ft_lstsize(t_list *lst) -{ - int i; - t_list *count; - - count = lst; - i = 0; - while (count) - { - count = count->next; - i++; - } - return (i); -} diff --git a/libft/srcs/ft_memchr.c b/libft/srcs/ft_memchr.c deleted file mode 100644 index 4272249..0000000 --- a/libft/srcs/ft_memchr.c +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memchr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/21 07:40:39 by lfirmin #+# #+# */ -/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void *ft_memchr(const void *s, int c, size_t n) -{ - unsigned char *str; - - str = (unsigned char *)s; - while (n--) - { - if (*str == (unsigned char)c) - return (str); - str++; - } - return (NULL); -} diff --git a/libft/srcs/ft_memcmp.c b/libft/srcs/ft_memcmp.c deleted file mode 100644 index fc9d739..0000000 --- a/libft/srcs/ft_memcmp.c +++ /dev/null @@ -1,30 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memcmp.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/21 07:57:58 by lfirmin #+# #+# */ -/* Updated: 2024/05/22 11:34:35 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -int ft_memcmp(const void *ptr1, const void *ptr2, size_t num) -{ - unsigned char *pt1; - unsigned char *pt2; - size_t i; - - pt1 = (unsigned char *)ptr1; - pt2 = (unsigned char *)ptr2; - i = 0; - while (i < num) - { - if (pt1[i] != pt2[i]) - return (pt1[i] - pt2[i]); - i++; - } - return (0); -} diff --git a/libft/srcs/ft_memcpy.c b/libft/srcs/ft_memcpy.c deleted file mode 100644 index 7f3d5a2..0000000 --- a/libft/srcs/ft_memcpy.c +++ /dev/null @@ -1,32 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memcpy.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tordner +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/21 01:08:31 by lfirmin #+# #+# */ -/* Updated: 2025/06/02 00:40:39 by tordner ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void *ft_memcpy(void *dest, const void *src, size_t len) -{ - size_t i; - unsigned char *r; - unsigned char *s; - - i = 0; - r = (unsigned char *)dest; - s = (unsigned char *)src; - if (dest == (void *)0 && src == (void *)0) - return (dest); - while (i < len) - { - r[i] = s[i]; - i++; - } - return (dest); -} diff --git a/libft/srcs/ft_memmove.c b/libft/srcs/ft_memmove.c deleted file mode 100644 index 8920c37..0000000 --- a/libft/srcs/ft_memmove.c +++ /dev/null @@ -1,39 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memmov.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/21 01:26:13 by lfirmin #+# #+# */ -/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void *ft_memmove(void *s1, const void *s2, size_t len) -{ - unsigned char *dest; - unsigned char *src; - unsigned int i; - - dest = (unsigned char *)s1; - src = (unsigned char *)s2; - i = 0; - if (dest == NULL && src == NULL) - return (NULL); - if (dest < src) - { - while (i < len) - { - dest[i] = src[i]; - i++; - } - } - else - { - while (0 < len--) - dest[len] = src[len]; - } - return (dest); -} diff --git a/libft/srcs/ft_memset.c b/libft/srcs/ft_memset.c deleted file mode 100644 index d4ecdb0..0000000 --- a/libft/srcs/ft_memset.c +++ /dev/null @@ -1,24 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memset.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/20 02:42:40 by lfirmin #+# #+# */ -/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void *ft_memset(void *b, int c, size_t len) -{ - size_t i; - unsigned char *r; - - i = 0; - r = (unsigned char *)b; - while (i < len) - r[i++] = (unsigned char)c; - return (b); -} diff --git a/libft/srcs/ft_putchar_fd.c b/libft/srcs/ft_putchar_fd.c deleted file mode 100644 index 8a930f9..0000000 --- a/libft/srcs/ft_putchar_fd.c +++ /dev/null @@ -1,17 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putchar_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/29 11:17:45 by lfirmin #+# #+# */ -/* Updated: 2024/05/29 11:20:42 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void ft_putchar_fd(char c, int fd) -{ - write(fd, &c, 1); -} diff --git a/libft/srcs/ft_putendl_fd.c b/libft/srcs/ft_putendl_fd.c deleted file mode 100644 index c2e3e97..0000000 --- a/libft/srcs/ft_putendl_fd.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putendl_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/29 11:35:44 by lfirmin #+# #+# */ -/* Updated: 2024/05/29 11:38:36 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void ft_putendl_fd(char *s, int fd) -{ - ft_putstr_fd(s, fd); - ft_putchar_fd('\n', fd); -} diff --git a/libft/srcs/ft_putnbr_fd.c b/libft/srcs/ft_putnbr_fd.c deleted file mode 100644 index 0b02ab1..0000000 --- a/libft/srcs/ft_putnbr_fd.c +++ /dev/null @@ -1,31 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putnbr_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/29 11:42:38 by lfirmin #+# #+# */ -/* Updated: 2024/05/29 11:56:04 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void ft_putnbr_fd(int n, int fd) -{ - long int nb; - - nb = n; - if (nb < 0) - { - nb = -nb; - ft_putchar_fd('-', fd); - } - if (nb >= 10) - { - ft_putnbr_fd(nb / 10, fd); - ft_putnbr_fd(nb % 10, fd); - } - else - ft_putchar_fd(nb + '0', fd); -} diff --git a/libft/srcs/ft_putstr_fd.c b/libft/srcs/ft_putstr_fd.c deleted file mode 100644 index ecdc0ef..0000000 --- a/libft/srcs/ft_putstr_fd.c +++ /dev/null @@ -1,24 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putstr_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/29 11:27:05 by lfirmin #+# #+# */ -/* Updated: 2024/05/29 11:33:18 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void ft_putstr_fd(char *s, int fd) -{ - int i; - - i = 0; - while (s[i]) - { - ft_putchar_fd(s[i], fd); - i++; - } -} diff --git a/libft/srcs/ft_split.c b/libft/srcs/ft_split.c deleted file mode 100644 index 9650577..0000000 --- a/libft/srcs/ft_split.c +++ /dev/null @@ -1,95 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_split.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/22 05:56:37 by lfirmin #+# #+# */ -/* Updated: 2024/06/04 12:08:51 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -static int ft_c(char const *s, char c) -{ - int i; - int count; - - count = 0; - i = 0; - while (s[i]) - { - if (s[i] != c && (i == 0 || s[i - 1] == c)) - count++; - i++; - } - return (count); -} - -void init_split_struct(t_split_struct *v, char const *s, char c) -{ - if (!s) - return ; - v->array = (char **)malloc((ft_c(s, c) + 1) * sizeof(char *)); - if (!s || !v->array) - return ; - v->i = 0; - v->j = 0; -} - -static char *ft_strncpy(char *dest, const char *src, unsigned int n) -{ - unsigned int i; - - i = 0; - while (src[i] != '\0' && i < n) - { - dest[i] = src[i]; - ++i; - } - while (i < n) - { - dest[i] = '\0'; - i++; - } - return (dest); -} - -char **free_split(char **array, size_t j) -{ - while (j > 0) - { - free(array[--j]); - } - free(array); - return (NULL); -} - -char **ft_split(char const *s, char c) -{ - t_split_struct v; - - init_split_struct(&v, s, c); - if (!s || !v.array) - return (NULL); - while (s[v.i]) - { - while (s[v.i] == c && s[v.i]) - v.i++; - v.start = v.i; - while (s[v.i] != c && s[v.i]) - v.i++; - if (v.i > v.start) - { - v.array[v.j] = (char *)malloc(v.i - v.start + 1); - if (!v.array[v.j]) - return (free_split(v.array, v.j)); - ft_strncpy(v.array[v.j], &s[v.start], v.i - v.start); - v.array[v.j][v.i - v.start] = '\0'; - v.j++; - } - } - v.array[v.j] = NULL; - return (v.array); -} diff --git a/libft/srcs/ft_straddchar.c b/libft/srcs/ft_straddchar.c deleted file mode 100644 index bf83573..0000000 --- a/libft/srcs/ft_straddchar.c +++ /dev/null @@ -1,37 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_straddchar.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/11/08 06:02:17 by lfirmin #+# #+# */ -/* Updated: 2024/11/08 06:02:17 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -char *ft_straddchar(char *str, char c) -{ - int i; - char *res; - - if (!str) - return (NULL); - i = 0; - while (str[i]) - i++; - res = (char *)malloc(sizeof(char) * (i + 2)); - if (!res) - return (NULL); - i = 0; - while (str[i]) - { - res[i] = str[i]; - i++; - } - res[i] = c; - res[i + 1] = '\0'; - return (res); -} diff --git a/libft/srcs/ft_strchr.c b/libft/srcs/ft_strchr.c deleted file mode 100644 index 11f57be..0000000 --- a/libft/srcs/ft_strchr.c +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strchr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/21 06:46:40 by lfirmin #+# #+# */ -/* Updated: 2024/05/24 08:51:25 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -char *ft_strchr(char const *str, int c) -{ - while (*str) - { - if (*str == (char)c) - return ((char *)str); - str++; - } - if (*str == (char)c) - return ((char *)str); - else - return (NULL); -} diff --git a/libft/srcs/ft_strcmp.c b/libft/srcs/ft_strcmp.c deleted file mode 100644 index e3d21ba..0000000 --- a/libft/srcs/ft_strcmp.c +++ /dev/null @@ -1,22 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strcmp.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/10/19 21:01:26 by lfirmin #+# #+# */ -/* Updated: 2024/10/19 21:01:26 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -int ft_strcmp(char *s1, char *s2) -{ - int i; - - i = 0; - while (s1[i] == s2[i] && s1[i] != '\0' && s2[i] != '\0') - i++; - return (s1[i] - s2[i]); -} diff --git a/libft/srcs/ft_strcpy.c b/libft/srcs/ft_strcpy.c deleted file mode 100644 index c72313d..0000000 --- a/libft/srcs/ft_strcpy.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strcpy.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/04/19 11:53:24 by lfirmin #+# #+# */ -/* Updated: 2025/04/19 11:58:04 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -char *ft_strcpy(char *dest, char *src) -{ - size_t i; - - i = 0; - while (src[i] != '\0') - { - dest[i] = src[i]; - i++; - } - dest[i] = '\0'; - return (dest); -} diff --git a/libft/srcs/ft_strdup.c b/libft/srcs/ft_strdup.c deleted file mode 100644 index 7df78c5..0000000 --- a/libft/srcs/ft_strdup.c +++ /dev/null @@ -1,34 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strdup.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/15 05:28:24 by lfirmin #+# #+# */ -/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -char *ft_strdup(const char *src) -{ - char *dest; - int i; - int size; - - size = 0; - while (src[size] != '\0') - size++; - dest = malloc(sizeof(char) * (size + 1)); - if (dest == NULL) - return (NULL); - i = 0; - while (i != size) - { - dest[i] = src[i]; - i++; - } - dest[i] = '\0'; - return (dest); -} diff --git a/libft/srcs/ft_striteri.c b/libft/srcs/ft_striteri.c deleted file mode 100644 index bd32dda..0000000 --- a/libft/srcs/ft_striteri.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_striteri.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/29 10:54:40 by lfirmin #+# #+# */ -/* Updated: 2024/05/29 11:12:05 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void ft_striteri(char *s, void (*f)(unsigned int, char*)) -{ - int i; - - i = 0; - if (s) - { - while (s[i]) - { - f(i, &s[i]); - ++i; - } - } -} diff --git a/libft/srcs/ft_strjoin.c b/libft/srcs/ft_strjoin.c deleted file mode 100644 index aed8eb4..0000000 --- a/libft/srcs/ft_strjoin.c +++ /dev/null @@ -1,34 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strjoin.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/22 01:00:14 by lfirmin #+# #+# */ -/* Updated: 2024/05/24 08:49:06 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -char *ft_strjoin(const char *s1, const char *s2) -{ - char *res; - int i; - int j; - - i = 0; - j = 0; - if (s1 == NULL && s2 == NULL) - return (NULL); - res = (char *) malloc((ft_strlen(s1) + ft_strlen(s2) + 1) * sizeof(char)); - if (!res) - return (NULL); - while (s1[i]) - res[j++] = s1[i++]; - i = 0; - while (s2[i]) - res[j++] = s2[i++]; - res[j] = 0; - return (res); -} diff --git a/libft/srcs/ft_strlcat.c b/libft/srcs/ft_strlcat.c deleted file mode 100644 index b691378..0000000 --- a/libft/srcs/ft_strlcat.c +++ /dev/null @@ -1,32 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strlcat.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/21 03:55:25 by lfirmin #+# #+# */ -/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -size_t ft_strlcat(char *dst, const char *src, size_t size) -{ - size_t i; - size_t r; - size_t s; - - i = 0; - r = ft_strlen(dst); - s = ft_strlen(src); - if (size <= r) - return (s + size); - while (r + i < size - 1 && src[i] != '\0') - { - dst[r + i] = src[i]; - i++; - } - dst[r + i] = '\0'; - return (r + s); -} diff --git a/libft/srcs/ft_strlcpy.c b/libft/srcs/ft_strlcpy.c deleted file mode 100644 index 9721995..0000000 --- a/libft/srcs/ft_strlcpy.c +++ /dev/null @@ -1,34 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strlcpy.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/21 02:18:17 by lfirmin #+# #+# */ -/* Updated: 2024/05/30 18:36:18 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -size_t ft_strlcpy(char *dst, const char *src, size_t dsts) -{ - size_t srcs; - size_t i; - - ft_strlen(src); - if (!src || !dst) - return (0); - srcs = ft_strlen(src); - i = 0; - if (dsts != 0) - { - while (src[i] != '\0' && i < (dsts - 1)) - { - dst[i] = src[i]; - i++; - } - dst[i] = '\0'; - } - return (srcs); -} diff --git a/libft/srcs/ft_strlen.c b/libft/srcs/ft_strlen.c deleted file mode 100644 index c8a5c83..0000000 --- a/libft/srcs/ft_strlen.c +++ /dev/null @@ -1,22 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strlen.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/19 23:16:45 by lfirmin #+# #+# */ -/* Updated: 2024/05/23 07:36:59 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -size_t ft_strlen(const char *s) -{ - int i; - - i = 0; - while (s[i]) - i++; - return ((size_t)i); -} diff --git a/libft/srcs/ft_strmapi.c b/libft/srcs/ft_strmapi.c deleted file mode 100644 index 9197596..0000000 --- a/libft/srcs/ft_strmapi.c +++ /dev/null @@ -1,32 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strmapi.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/28 15:10:42 by lfirmin #+# #+# */ -/* Updated: 2024/05/28 17:00:27 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -char *ft_strmapi(char const *s, char (*f)(unsigned int, char)) -{ - char *str; - int i; - - if (!s) - return (NULL); - str = (char *)malloc(ft_strlen(s) + 1); - if (!str) - return (NULL); - i = 0; - while (s[i]) - { - str[i] = f(i, s[i]); - ++i; - } - str[i] = '\0'; - return (str); -} diff --git a/libft/srcs/ft_strncmp.c b/libft/srcs/ft_strncmp.c deleted file mode 100644 index 7fcfec4..0000000 --- a/libft/srcs/ft_strncmp.c +++ /dev/null @@ -1,32 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strncmp.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/21 06:55:09 by lfirmin #+# #+# */ -/* Updated: 2024/05/24 08:47:59 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -int ft_strncmp(const char *s1, const char *s2, unsigned int n) -{ - unsigned int i; - unsigned char c1; - unsigned char c2; - - i = 0; - if (n == 0) - return (0); - while (i < n) - { - c1 = (unsigned char)s1[i]; - c2 = (unsigned char)s2[i]; - if (c1 != c2 || c1 == '\0' || c2 == '\0') - return (c1 - c2); - i++; - } - return (0); -} diff --git a/libft/srcs/ft_strnstr.c b/libft/srcs/ft_strnstr.c deleted file mode 100644 index 4f5acca..0000000 --- a/libft/srcs/ft_strnstr.c +++ /dev/null @@ -1,36 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strnstr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/21 08:22:59 by lfirmin #+# #+# */ -/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -char *ft_strnstr(const char *hay, const char *need, size_t len) -{ - size_t i; - size_t n; - - i = 0; - if (need[0] == '\0') - return ((char *)hay); - while (hay[i] != '\0') - { - n = 0; - while (hay[i + n] == need[n] && (i + n) < len) - { - if (hay[i + n] == '\0' && need[n] == '\0') - return ((char *)&hay[i]); - n++; - } - if (need[n] == '\0') - return ((char *)hay + i); - i++; - } - return (0); -} diff --git a/libft/srcs/ft_strrchr.c b/libft/srcs/ft_strrchr.c deleted file mode 100644 index c7fc977..0000000 --- a/libft/srcs/ft_strrchr.c +++ /dev/null @@ -1,35 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strrchr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/21 06:42:38 by lfirmin #+# #+# */ -/* Updated: 2024/05/30 18:30:00 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -char *ft_strrchr(const char *str, int c) -{ - int i; - int last_occurrence; - - ft_strlen(str); - i = 0; - last_occurrence = -1; - if (str == NULL) - return (NULL); - while (str[i]) - { - if (str[i] == (char)c) - last_occurrence = i; - i++; - } - if ((char)c == '\0') - return ((char *)&str[i]); - if (last_occurrence != -1) - return ((char *)&str[last_occurrence]); - return (NULL); -} diff --git a/libft/srcs/ft_strtrim.c b/libft/srcs/ft_strtrim.c deleted file mode 100644 index abbf77f..0000000 --- a/libft/srcs/ft_strtrim.c +++ /dev/null @@ -1,68 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strtrim.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/23 21:32:01 by lfirmin #+# #+# */ -/* Updated: 2024/05/31 02:04:11 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -static int is_in_set(char c, const char *set) -{ - while (*set) - { - if (c == *set) - { - return (1); - } - set++; - } - return (0); -} - -static char *ft_strncpy(char *dest, const char *src, unsigned int n) -{ - unsigned int i; - - i = 0; - while (src[i] != '\0' && i < n) - { - dest[i] = src[i]; - ++i; - } - while (i < n) - { - dest[i] = '\0'; - i++; - } - return (dest); -} - -char *ft_strtrim(const char *s1, const char *set) -{ - size_t s; - size_t e; - size_t len; - char *str; - - if (!s1 || !set) - return (NULL); - s = 0; - while (s1[s] && is_in_set(s1[s], set)) - s++; - e = ft_strlen(s1); - while (e > s && is_in_set(s1[e - 1], set)) - e--; - len = e - s; - str = (char *)malloc(sizeof(char) * (len + 1)); - if (!str) - return (NULL); - ft_strncpy(str, s1 + s, len); - str[len] = '\0'; - return (str); -} diff --git a/libft/srcs/ft_substr.c b/libft/srcs/ft_substr.c deleted file mode 100644 index 8e73142..0000000 --- a/libft/srcs/ft_substr.c +++ /dev/null @@ -1,34 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_substr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/22 00:15:54 by lfirmin #+# #+# */ -/* Updated: 2024/05/24 08:28:01 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -char *ft_substr(char const *s, unsigned int start, size_t len) -{ - char *sub; - size_t i; - - if ((ft_strlen(s) - start) < len) - len = ft_strlen(s) - start; - if (ft_strlen(s) < start) - return (ft_strdup("")); - i = 0; - sub = (char *) malloc(len + 1); - if (!sub) - return (NULL); - while (len > 0) - { - sub[i++] = s[start++]; - len--; - } - sub[i] = '\0'; - return (sub); -} diff --git a/libft/srcs/ft_tolower.c b/libft/srcs/ft_tolower.c deleted file mode 100644 index 288a27a..0000000 --- a/libft/srcs/ft_tolower.c +++ /dev/null @@ -1,19 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_tolower.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/21 04:50:40 by lfirmin #+# #+# */ -/* Updated: 2024/05/22 11:09:36 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -int ft_tolower(int c) -{ - if (c >= 65 && c <= 90) - return (c + 32); - return (c); -} diff --git a/libft/srcs/ft_toupper.c b/libft/srcs/ft_toupper.c deleted file mode 100644 index d563003..0000000 --- a/libft/srcs/ft_toupper.c +++ /dev/null @@ -1,19 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_toupper.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/21 04:50:40 by lfirmin #+# #+# */ -/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -int ft_toupper(int c) -{ - if (c >= 97 && c <= 122) - return (c - 32); - return (c); -} diff --git a/main.c b/main.c new file mode 100644 index 0000000..6e1b1db --- /dev/null +++ b/main.c @@ -0,0 +1,69 @@ +// main.c +#include "cub3d.h" +#include +#include + +// ---- TEMP: petite map de test fermée (a remplacer par le parsing) ---- +static char *gmap[] = { + "111111111111", + "100000000001", + "101111011101", + "100100010001", + "101100010001", + "100000000001", + "111111111111", + NULL +}; + +static int map_w(char **m){ int w=0; for(int i=0;m[0][i];++i) w++; return w; } +static int map_h(char **m){ int h=0; while(m[h]) h++; return h; } + +// Charge texture XPM via mlx_xpm_file_to_image (ou via parsing) +static void load_tex(t_app *a, int id, const char *path){ + t_tex *t = &a->tex[id]; + t->img.ptr = mlx_xpm_file_to_image(a->mlx, (char*)path, &t->w, &t->h); + if (!t->img.ptr){ fprintf(stderr,"Texture load fail: %s\n", path); exit(1); } + t->img.addr = mlx_get_data_addr(t->img.ptr, &t->img.bpp, &t->img.line_len, &t->img.endian); +} + +int main(void) { + t_app a; + memset(&a, 0, sizeof(a)); + + a.mlx = mlx_init(); + if (!a.mlx) return 1; + a.win = mlx_new_window(a.mlx, WIN_W, WIN_H, "cub3d"); + a.frame.ptr = mlx_new_image(a.mlx, WIN_W, WIN_H); + a.frame.addr = mlx_get_data_addr(a.frame.ptr, &a.frame.bpp, &a.frame.line_len, &a.frame.endian); + + // map (remplace par le résultat de ton parsing) + a.map = gmap; + a.map_w = map_w(a.map); + a.map_h = map_h(a.map); + + // player init (à placer selon la map/parsed spawn + direction N/E/S/W) + a.px = 2.5; a.py = 2.5; + a.dirx = -1.0; a.diry = 0.0; + a.planex = 0.0; a.planey = 0.66; + + a.move_speed = 0.08; + a.rot_speed = 0.05; + + a.zbuf = malloc(sizeof(double) * WIN_W); + if (!a.zbuf) return 1; + + // charge 4 textures (exemples de chemins) + load_tex(&a, 0, "tex_north.xpm"); + load_tex(&a, 1, "tex_east.xpm"); + load_tex(&a, 2, "tex_south.xpm"); + load_tex(&a, 3, "tex_west.xpm"); + + // hooks + mlx_hook(a.win, 2, 1L<<0, key_press, &a); // KeyPress + mlx_hook(a.win, 3, 1L<<1, key_release, &a); // KeyRelease + mlx_hook(a.win, 17, 0, close_win, &a); // DestroyNotify + mlx_loop_hook(a.mlx, update, &a); + + mlx_loop(a.mlx); + return 0; +} diff --git a/render.c b/render.c new file mode 100644 index 0000000..9a9057d --- /dev/null +++ b/render.c @@ -0,0 +1,140 @@ +// render.c +#include "cub3d.h" + +static int is_wall(t_app *a, int mx, int my) { + if (mx < 0 || my < 0 || mx >= a->map_w || my >= a->map_h) return 1; + return (a->map[my][mx] == '1'); +} + +static void move_player(t_app *a) { + double ms = a->move_speed; + double rs = a->rot_speed; + + // forward/back + if (a->keys.w) { + double nx = a->px + a->dirx * ms; + double ny = a->py + a->diry * ms; + if (!is_wall(a, (int)nx, (int)a->py)) a->px = nx; + if (!is_wall(a, (int)a->px, (int)ny)) a->py = ny; + } + if (a->keys.s) { + double nx = a->px - a->dirx * ms; + double ny = a->py - a->diry * ms; + if (!is_wall(a, (int)nx, (int)a->py)) a->px = nx; + if (!is_wall(a, (int)a->px, (int)ny)) a->py = ny; + } + // strafe + if (a->keys.a) { + double nx = a->px - a->diry * ms; + double ny = a->py + a->dirx * ms; + if (!is_wall(a, (int)nx, (int)a->py)) a->px = nx; + if (!is_wall(a, (int)a->px, (int)ny)) a->py = ny; + } + if (a->keys.d) { + double nx = a->px + a->diry * ms; + double ny = a->py - a->dirx * ms; + if (!is_wall(a, (int)nx, (int)a->py)) a->px = nx; + if (!is_wall(a, (int)a->px, (int)ny)) a->py = ny; + } + // rotation + if (a->keys.left || a->keys.right) { + double angle = (a->keys.left ? -rs : rs); + double olddirx = a->dirx; + a->dirx = a->dirx * cos(angle) - a->diry * sin(angle); + a->diry = olddirx * sin(angle) + a->diry * cos(angle); + double oldplanex = a->planex; + a->planex = a->planex * cos(angle) - a->planey * sin(angle); + a->planey = oldplanex * sin(angle) + a->planey * cos(angle); + } +} + +static void draw_vertical_line_tex(t_app *a, int x, int drawStart, int drawEnd, + t_tex *tex, int texX, double step, double texPos) { + if (drawStart < 0) drawStart = 0; + if (drawEnd >= WIN_H) drawEnd = WIN_H - 1; + + // plafond (optionnel: couleur unie) + for (int y = 0; y < drawStart; ++y) + put_pixel(&a->frame, x, y, 0x0080A0); // bleu doux + + for (int y = drawStart; y <= drawEnd; ++y) { + int texY = (int)texPos & (tex->h - 1); // textures power-of-two → masque ok + texPos += step; + int color = get_tex_color(tex, texX, texY); + put_pixel(&a->frame, x, y, color); + } + // sol + for (int y = drawEnd + 1; y < WIN_H; ++y) + put_pixel(&a->frame, x, y, 0x404040); +} + +void render_frame(t_app *a) { + // clear: pas nécessaire si on redraw tout (plafond/sol + murs) + for (int x = 0; x < WIN_W; ++x) { + // camX dans [-1, 1] + double cameraX = 2.0 * x / (double)WIN_W - 1.0; + double rayDirX = a->dirx + a->planex * cameraX; + double rayDirY = a->diry + a->planey * cameraX; + + int mapX = (int)a->px; + int mapY = (int)a->py; + + double deltaDistX = (rayDirX == 0) ? 1e30 : fabs(1.0 / rayDirX); + double deltaDistY = (rayDirY == 0) ? 1e30 : fabs(1.0 / rayDirY); + double sideDistX, sideDistY; + int stepX, stepY; + + if (rayDirX < 0) { stepX = -1; sideDistX = (a->px - mapX) * deltaDistX; } + else { stepX = 1; sideDistX = (mapX + 1.0 - a->px) * deltaDistX; } + if (rayDirY < 0) { stepY = -1; sideDistY = (a->py - mapY) * deltaDistY; } + else { stepY = 1; sideDistY = (mapY + 1.0 - a->py) * deltaDistY; } + + int hit = 0, side = 0; + while (!hit) { + if (sideDistX < sideDistY) { sideDistX += deltaDistX; mapX += stepX; side = 0; } + else { sideDistY += deltaDistY; mapY += stepY; side = 1; } + if (is_wall(a, mapX, mapY)) hit = 1; + } + + double perpWallDist = (side == 0) + ? (mapX - a->px + (1 - stepX) / 2.0) / rayDirX + : (mapY - a->py + (1 - stepY) / 2.0) / rayDirY; + if (perpWallDist < 1e-6) perpWallDist = 1e-6; + + int lineHeight = (int)(WIN_H / perpWallDist); + int drawStart = -lineHeight / 2 + WIN_H / 2; + int drawEnd = lineHeight / 2 + WIN_H / 2; + + // texture selection: 0=N,1=E,2=S,3=W (à adapter selon ta map) + int tex_id; + if (side == 0 && rayDirX > 0) tex_id = 3; // W + else if (side == 0 && rayDirX < 0) tex_id = 1; // E + else if (side == 1 && rayDirY > 0) tex_id = 0; // N + else tex_id = 2; // S + t_tex *tex = &a->tex[tex_id]; + + // point d'impact sur le mur + double wallX = (side == 0) ? (a->py + perpWallDist * rayDirY) + : (a->px + perpWallDist * rayDirX); + wallX -= floor(wallX); + + int texX = (int)(wallX * (double)tex->w); + if (side == 0 && rayDirX > 0) texX = tex->w - texX - 1; + if (side == 1 && rayDirY < 0) texX = tex->w - texX - 1; + + double step = (double)tex->h / (double)lineHeight; + double texPos = (drawStart - WIN_H / 2 + lineHeight / 2) * step; + + draw_vertical_line_tex(a, x, drawStart, drawEnd, tex, texX, step, texPos); + + a->zbuf[x] = perpWallDist; + } + + mlx_put_image_to_window(a->mlx, a->win, a->frame.ptr, 0, 0); +} + +int update(t_app *a) { + move_player(a); + render_frame(a); + return 0; +} diff --git a/srcs/main.c b/srcs/main.c deleted file mode 100644 index 8283755..0000000 --- a/srcs/main.c +++ /dev/null @@ -1,61 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* main.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/08/22 14:56:25 by lfirmin #+# #+# */ -/* Updated: 2025/10/08 16:25:42 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "cub.h" - -void print_int_array(int *array, int size) -{ - int i; - - if (!array) - return ; - i = 0; - while (i < size) - { - ft_putnbr_fd(array[i], 1); - if (i < size - 1) - write(1, ", ", 2); - i++; - } - write(1, "\n", 1); -} -void debug(t_data data) -{ - printf("map:\n\n"); - print_array(data.map); - printf("\n"); - printf("c: "); - fflush(stdout); - print_int_array(data.texture->ceiling, 3); - printf("f: "); - fflush(stdout); - print_int_array(data.texture->floor, 3); - printf("p: "); - fflush(stdout); - print_int_array(data.parsing.player, 3); - printf("\n"); - printf("\ntexture:\n\n"); - printf("%s\n", data.texture->east); - printf("%s\n", data.texture->north); - printf("%s\n", data.texture->west); - printf("%s\n", data.texture->south); -} -int main(int ac, char **av) -{ - t_data data; - - init_data(&data, av[1]); - if (parsing(&data)); - debug(data); - free_char_array(data.parsing.raw_map); - free_textures(data.texture); - free_data(&data); -} diff --git a/srcs/parsing/check_colors.c b/srcs/parsing/check_colors.c deleted file mode 100644 index 97a04a8..0000000 --- a/srcs/parsing/check_colors.c +++ /dev/null @@ -1,35 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* check_colors.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/08/25 18:41:26 by lfirmin #+# #+# */ -/* Updated: 2025/10/07 10:06:32 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "cub.h" - -int check_colors(t_textures *texture) -{ - if (is_rgb(texture->floor)) - return (ft_error(ERROR_COL), 1); - if (is_rgb(texture->ceiling)) - return (ft_error(ERROR_COL), 1); - return (0); -} - -int is_rgb(int color[3]) -{ - int i; - - i = 0; - while (i < 3) - { - if (color[i] > 255 || color[i] < 0) - return (1); - i++; - } - return (0); -} diff --git a/srcs/parsing/check_file.c b/srcs/parsing/check_file.c deleted file mode 100644 index 5022033..0000000 --- a/srcs/parsing/check_file.c +++ /dev/null @@ -1,40 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* check_file.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/08/22 15:07:29 by lfirmin #+# #+# */ -/* Updated: 2025/10/07 10:11:50 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "cub.h" - -int check_file(char *map_path, t_data_parsing *parsing) -{ - if (!map_path) - return (ft_error(ERROR_EMPT_PATH), 1); - if (check_extension(map_path)) - return (1); - parsing->fd_map = open(map_path, O_RDONLY); - if (parsing->fd_map < 0) - return (perror("Error\n"), 1); - parsing->fd_map_dup = open(map_path, O_RDONLY); - if (parsing->fd_map_dup < 0) - return (perror("Error\n"), 1); - return (0); -} - -int check_extension(char *map_path) -{ - int len_map_path; - - len_map_path = ft_strlen(map_path); - if (len_map_path < 4) - return (ft_error(ERROR_EXT), 1); - if (ft_strcmp(map_path + len_map_path - 4, ".cub") != 0) - return (ft_error(ERROR_EXT), 1); - return (0); -} diff --git a/srcs/parsing/check_map.c b/srcs/parsing/check_map.c deleted file mode 100644 index eb9c2ad..0000000 --- a/srcs/parsing/check_map.c +++ /dev/null @@ -1,123 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* check_map.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/08/22 15:07:29 by lfirmin #+# #+# */ -/* Updated: 2025/10/07 10:11:50 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "cub.h" - -int check_char_and_count(char c, int *p) -{ - if (c == '1' || c == '0' || c == ' ' || c == '\n') - return (0); - else if (c == 'S' || c == 'N' || c == 'E' || c == 'W') - { - (*p)++; - return (0); - } - else - return (2); -} - -int check_map_char(char **map) -{ - int i; - int j; - int p; - int ret; - - i = 0; - p = 0; - while (map[i]) - { - j = 0; - while (map[i][j]) - { - ret = check_char_and_count(map[i][j], &p); - if (ret != 0) - return (ret); - j++; - } - i++; - } - if (p != 1) - return (1); - return (0); -} - -void find_player_pos(char **map, int *player) -{ - int i; - int j; - - i = 0; - while (map[i]) - { - j = 0; - while (map[i][j]) - { - if (map[i][j] == 'S' || map[i][j] == 'N' || - map[i][j] == 'E' || map[i][j] == 'W') - { - player[0] = j; - player[1] = i; - player[2] = map[i][j]; - return ; - } - j++; - } - i++; - } -} - -int flood_fill(char **map_cp, int x, int y) -{ - if (!map_cp[y] || !map_cp[y][x]) - return (1); - if (map_cp[y][x] == 'v') - return (0); - if (map_cp[y][x] == '1') - { - map_cp[y][x] = 'v'; - return (0); - } - if (map_cp[y][x] == '0' || map_cp[y][x] == 'N' || map_cp[y][x] == 'S' - || map_cp[y][x] == 'E' || map_cp[y][x] == 'W') - { - map_cp[y][x] = 'v'; - if (flood_fill(map_cp, x + 1, y)) - return (1); - if (flood_fill(map_cp, x - 1, y)) - return (1); - if (flood_fill(map_cp, x, y + 1)) - return (1); - if (flood_fill(map_cp, x, y - 1)) - return (1); - return (0); - } - return (1); -} - -int rep_ex_wall(char **map_cp, int x, int y) -{ - if (y < 0 || x < 0) - return (0); - if (!map_cp[y] || !map_cp[y][x]) - return (0); - if (map_cp[y][x] == '1') - map_cp[y][x] = 'v'; - if (map_cp[y][x] == 'v') - { - map_cp[y][x] = 'c'; - rep_ex_wall(map_cp, x + 1, y); - rep_ex_wall(map_cp, x - 1, y); - rep_ex_wall(map_cp, x, y + 1); - rep_ex_wall(map_cp, x, y - 1); - } - return (0); -} diff --git a/srcs/parsing/check_map_2.c b/srcs/parsing/check_map_2.c deleted file mode 100644 index b4de039..0000000 --- a/srcs/parsing/check_map_2.c +++ /dev/null @@ -1,54 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* check_map_2.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/08/22 15:07:29 by lfirmin #+# #+# */ -/* Updated: 2025/10/07 12:09:03 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "cub.h" - -int hasinvalidchar(char **map) -{ - int y; - int x; - - y = 0; - while (map[y]) - { - x = 0; - while (map[y][x]) - { - if (map[y][x] != 'c' && map[y][x] != ' ' && map[y][x] != ' ' - && map[y][x] != '\n') - return (1); - x++; - } - y++; - } - return (0); -} - -int validate_map(char **map, int *player) -{ - int result; - char **map_cp; - - map_cp = ft_arrcpy(map); - result = check_map_char(map); - if (result == 1) - return (free_char_array(map_cp), ft_error(ERROR_PLAYER), 1); - if (result == 2) - return (free_char_array(map_cp), ft_error(ERROR_CHAR), 1); - find_player_pos(map, player); - if (flood_fill(map_cp, player[0], player[1])) - return (free_char_array(map_cp), ft_error(ERROR_NOT_CLOSE), 1); - rep_ex_wall(map_cp, player[0], player[1]); - if (hasinvalidchar(map_cp)) - return (free_char_array(map_cp), ft_error(ERROR_CHAR), 1); - free_char_array(map_cp); - return (0); -} diff --git a/srcs/parsing/get_map.c b/srcs/parsing/get_map.c deleted file mode 100644 index ed3c1a0..0000000 --- a/srcs/parsing/get_map.c +++ /dev/null @@ -1,94 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* get_map.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/08/23 13:29:28 by lfirmin #+# #+# */ -/* Updated: 2025/10/07 10:13:07 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "cub.h" - -int get_map(t_data *data) -{ - int nb_line; - - nb_line = line_counter(data->parsing.fd_map); - if (nb_line <= 0) - return (ft_error(ERROR_EMPTY), 1); - data->parsing.raw_map = ft_calloc(nb_line + 1, sizeof(char *)); - if (put_map_on_array(data)) - return (1); - return (0); -} - -int line_counter(int fd) -{ - int nb_line; - char *line; - - line = NULL; - nb_line = 0; - line = get_next_line(fd); - while (line != NULL) - { - nb_line++; - free(line); - line = get_next_line(fd); - } - free(line); - line = get_next_line(-1); - free(line); - return (nb_line); -} - -int put_map_on_array(t_data *data) -{ - char *line; - char *cleaned; - int i; - int j[6]; - - ft_memset(j, 0, sizeof(j)); - i = 0; - while ((line = get_next_line(data->parsing.fd_map_dup)) != NULL) - { - if (is_config_line(line)) - { - cleaned = clean_line(line); - if (get_texture_path(cleaned, data->texture, j)) - { - free(line); - free(cleaned); - line = get_next_line(-1); - if (line) - free(line); - return (1); - } - free(line); - free(cleaned); - } - else if (is_empty_line(line) && i == 0) - free(line); - else - data->parsing.raw_map[i++] = line; - } - line = get_next_line(-1); - if (line) - free(line); - data->parsing.raw_map[i] = NULL; - return (0); -} - -char *clean_line(char *raw_line) -{ - char *cleaned; - - if (!raw_line) - return (NULL); - cleaned = ft_strtrim(raw_line, " \t\n\r"); - return (cleaned); -} diff --git a/srcs/parsing/get_textures.c b/srcs/parsing/get_textures.c deleted file mode 100644 index 55b68a5..0000000 --- a/srcs/parsing/get_textures.c +++ /dev/null @@ -1,91 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* get_textures.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/08/24 12:37:11 by lfirmin #+# #+# */ -/* Updated: 2025/10/07 10:13:41 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "cub.h" - -int get_texture_path(char *line, t_textures *texture, int *j) -{ - if (check_extension_2(line) && !is_color_line(line)) - return (ft_error(ERROR_NOT_XMP), 1); - else if (is_texture_line(line) == 1 && j[0]++ == 0) - texture->north = ft_strtrim(line + 2, " \t\n\r"); - else if (is_texture_line(line) == 2 && j[1]++ == 0) - texture->south = ft_strtrim(line + 2, " \t\n\r"); - else if (is_texture_line(line) == 3 && j[2]++ == 0) - texture->west = ft_strtrim(line + 2, " \t\n\r"); - else if (is_texture_line(line) == 4 && j[3]++ == 0) - texture->east = ft_strtrim(line + 2, " \t\n\r"); - else if (is_color_line(line) == 1 && j[4]++ == 0) - get_rgb_values(line, texture->floor); - else if (is_color_line(line) == 2 && j[5]++ == 0) - get_rgb_values(line, texture->ceiling); - else - return (ft_error(ERROR_DOUBLE), 2); - return (0); -} - -int is_valid_number(char *str) -{ - int i; - - if (!str || !*str) - return (0); - i = 0; - while (str[i] == ' ' || str[i] == '\t') - i++; - if (!str[i] || !(str[i] >= '0' && str[i] <= '9')) - return (0); - while (str[i] >= '0' && str[i] <= '9') - i++; - while (str[i] == ' ' || str[i] == '\t') - i++; - if (str[i] != '\0') - return (0); - return (1); -} - -int validate_and_convert_rgb(char **parts, int rgb[3]) -{ - int i; - - i = -1; - while (++i < 3) - { - if (!is_valid_number(parts[i])) - return (free_char_array(parts), 1); - rgb[i] = ft_atoi(parts[i]); - if (rgb[i] < 0 || rgb[i] > 255) - return (free_char_array(parts), 1); - } - return (free_char_array(parts), 0); -} - -int get_rgb_values(char *line, int rgb[3]) -{ - char *start; - char **parts; - int i; - - if (!line || !rgb) - return (1); - start = ft_strchr(line, ' '); - if (!start) - return (1); - parts = ft_split(start + 1, ','); - if (!parts) - return (1); - i = 0; - while (parts[i]) - i++; - if (i != 3) - return (free_char_array(parts), 1); - return (validate_and_convert_rgb(parts, rgb)); -} diff --git a/srcs/parsing/init_parsing.c b/srcs/parsing/init_parsing.c deleted file mode 100644 index 73a9414..0000000 --- a/srcs/parsing/init_parsing.c +++ /dev/null @@ -1,50 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* init_parsing.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/08/23 13:33:00 by lfirmin #+# #+# */ -/* Updated: 2025/10/07 10:14:37 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "cub.h" - -int init_parsing(t_data_parsing *parsing) -{ - if (!parsing) - return (ft_error(ERROR_INIT_PARS), 1); - parsing->fd_map = 0; - parsing->raw_map = NULL; - return (0); -} - -int init_textures(t_textures *textures) -{ - int i; - - if (!textures) - return (ft_error(ERROR_INIT_TEX), 1); - textures->north = NULL; - textures->south = NULL; - textures->east = NULL; - textures->west = NULL; - i = 0; - while (i < 3) - { - textures->floor[i] = -1; - textures->ceiling[i] = -1; - i++; - } - return (0); -} - -int free_textures(t_textures *textures) -{ - free(textures->north); - free(textures->south); - free(textures->east); - free(textures->west); - return (0); -} diff --git a/srcs/parsing/line_detect.c b/srcs/parsing/line_detect.c deleted file mode 100644 index a76b055..0000000 --- a/srcs/parsing/line_detect.c +++ /dev/null @@ -1,104 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* line_detect.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/08/24 11:58:39 by lfirmin #+# #+# */ -/* Updated: 2025/10/08 14:05:47 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "cub.h" - -int check_extension_2(char *str) -{ - size_t len; - - len = strlen(str); - if (len < 4) - return (1); - return (ft_strcmp(str + len - 4, ".xpm")); -} - -int is_config_line(char *line) -{ - char *trimmed; - int result; - - result = 0; - if (!line) - return (0); - trimmed = ft_strtrim(line, " \t\n\r"); - if (!trimmed) - return (0); - if (ft_strncmp(trimmed, "NO ", 3) == 0 - || ft_strncmp(trimmed, "SO ", 3) == 0 - || ft_strncmp(trimmed, "WE ", 3) == 0 - || ft_strncmp(trimmed, "EA ", 3) == 0 - || ft_strncmp(trimmed, "F ", 2) == 0 - || ft_strncmp(trimmed, "C ", 2) == 0) - result = 1; - free(trimmed); - return (result); -} - -int is_empty_line(char *line) -{ - int i; - - i = 0; - if (!line) - return (1); - while (line[i]) - { - if (line[i] != ' ' && line[i] != '\t' - && line[i] != '\n' && line[i] != '\r') - return (0); - i++; - } - return (1); -} - -int is_color_line(char *line) -{ - char *trimmed; - int result; - - result = 0; - if (!line) - return (0); - trimmed = ft_strtrim(line, " \t\n\r"); - if (!trimmed) - return (0); - if (ft_strncmp(trimmed, "F ", 2) == 0) - result = 1; - else if (ft_strncmp(trimmed, "C ", 2) == 0) - result = 2; - free(trimmed); - return (result); -} - -int is_texture_line(char *line) -{ - char *trimmed; - int result; - - result = 0; - if (!line) - return (0); - trimmed = ft_strtrim(line, " \t\n\r"); - if (!trimmed) - return (0); - if (ft_strncmp(trimmed, "NO ", 3) == 0) - result = 1; - else if (ft_strncmp(trimmed, "SO ", 3) == 0) - result = 2; - else if (ft_strncmp(trimmed, "WE ", 3) == 0) - result = 3; - else if (ft_strncmp(trimmed, "EA ", 3) == 0) - result = 4; - free(trimmed); - return (result); -} diff --git a/srcs/parsing/parsing.c b/srcs/parsing/parsing.c deleted file mode 100644 index d79190e..0000000 --- a/srcs/parsing/parsing.c +++ /dev/null @@ -1,33 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parsing.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/08/22 14:17:58 by lfirmin #+# #+# */ -/* Updated: 2025/10/07 10:15:24 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "cub.h" - -int parsing(t_data *data) -{ - if (check_file(data->map_path, &data->parsing) == 1) - return (1); - if (get_map(data)) - { - close(data->parsing.fd_map); - close(data->parsing.fd_map_dup); - return (1); - } - close(data->parsing.fd_map); - close(data->parsing.fd_map_dup); - if (check_colors(data->texture) == 1) - return (1); - if (validate_map(data->parsing.raw_map, data->parsing.player)) - return (1); - data->map = data->parsing.raw_map; - data->parsing.raw_map = NULL; - return (0); -} diff --git a/srcs/utils/init.c b/srcs/utils/init.c deleted file mode 100644 index 77d21fd..0000000 --- a/srcs/utils/init.c +++ /dev/null @@ -1,35 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* init.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/08/22 18:57:21 by lfirmin #+# #+# */ -/* Updated: 2025/10/08 16:21:46 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "cub.h" - -int init_data(t_data *data, char *path) -{ - if (!data) - return (ft_error(ERROR_INIT_DATA), 1); - data->texture = malloc(sizeof(t_textures)); - if (!data->texture) - return (ft_error(ERROR_INIT_TEX), 1); - init_parsing(&data->parsing); - init_textures(data->texture); - data->map = NULL; - data->map_path = path; - return (0); -} - -void free_data(t_data *data) -{ - if (!data) - return ; - if (data->texture) - free(data->texture); - free_char_array(data->map); -} diff --git a/srcs/utils/utils.c b/srcs/utils/utils.c deleted file mode 100644 index d48a8ef..0000000 --- a/srcs/utils/utils.c +++ /dev/null @@ -1,60 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* utils.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: lfirmin +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/08/22 14:56:25 by lfirmin #+# #+# */ -/* Updated: 2025/10/07 12:14:42 by lfirmin ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "cub.h" - -void ft_error(char *message) -{ - int len; - - len = 0; - while (message[len]) - len++; - write(2, ERROR_PREFIX, 6); - write(2, message, len); - write(2, "\n", 1); -} - -void free_char_array(char **array) -{ - int i; - - if (!array) - return ; - i = 0; - while (array[i]) - free(array[i++]); - free(array); -} - -int ft_arrlen(char **arr) -{ - int i; - - while (arr[i]) - i++; - return (i); -} - -void print_array(char **array) -{ - int i; - - i = 0; - if (!array) - return ; - while (array[i]) - { - printf("%s", array[i]); - i++; - } -} diff --git a/test b/test new file mode 100644 index 0000000..e69de29 diff --git a/test.cub b/test.cub deleted file mode 100644 index 5b32dae..0000000 --- a/test.cub +++ /dev/null @@ -1,29 +0,0 @@ - - -NO textures/test/north.xpm -EA textures/test/east.xpm -WE textures/test/west.xpm -SO textures/test/sud.xpm - - - - -C 200,200,200 -F 200,200,200 - - 1111 - 1001 -10001 -10001 -10101 -1S001 -1001 -10001 -10001 -100011 -10001 -10001 -111111 - 1111 - 11 - 1111 diff --git a/utils.c b/utils.c new file mode 100644 index 0000000..200e699 --- /dev/null +++ b/utils.c @@ -0,0 +1,15 @@ +// utils.c +#include "cub3d.h" + +void put_pixel(t_img *img, int x, int y, int color) { + if (x < 0 || x >= WIN_W || y < 0 || y >= WIN_H) return; + char *dst = img->addr + (y * img->line_len + x * (img->bpp / 8)); + *(unsigned int*)dst = (unsigned int)color; +} + +int get_tex_color(t_tex *t, int tx, int ty) { + if (tx < 0) tx = 0; if (tx >= t->w) tx = t->w - 1; + if (ty < 0) ty = 0; if (ty >= t->h) ty = t->h - 1; + char *p = t->img.addr + ty * t->img.line_len + tx * (t->img.bpp / 8); + return *(unsigned int*)p; +}