diff --git a/.so_long.h.swo b/.so_long.h.swo deleted file mode 100644 index 94fdf3c..0000000 Binary files a/.so_long.h.swo and /dev/null differ diff --git a/assets/background_64.xpm b/assets/background_64.xpm new file mode 100644 index 0000000..14cb9d5 --- /dev/null +++ b/assets/background_64.xpm @@ -0,0 +1,68 @@ +/* XPM */ +static char * background_64_xpm[] = { +"64 64 1 1", +" c #000000", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/assets/collectible_64.xpm b/assets/collectible_64.xpm new file mode 100644 index 0000000..7457e75 --- /dev/null +++ b/assets/collectible_64.xpm @@ -0,0 +1,85 @@ +/* XPM */ +static char * collectible_64_xpm[] = { +"64 64 18 1", +" c #000000", +". c #002600", +"+ c #013A00", +"@ c #013700", +"# c #014400", +"$ c #09B700", +"% c #0DDC00", +"& c #10F800", +"* c #10F600", +"= c #0ABD00", +"- c #058D00", +"; c #09BA00", +"> c #11FD00", +", c #11FB00", +"' c #10F900", +") c #059100", +"! c #0DDA00", +"~ c #0DD900", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" .+++++@ ", +" #$%&&&&&*=-. ", +" @;*>>>>>>>>>,%- ", +" -%>>>>>>>>>>>>>';@ ", +" )'>>>>>>>>>>>>>>>>!@ ", +" #*>>>>>>>>>>>>>>>>>>; ", +" .~>>>>>>>>>>>>>>>>>>>'- ", +" -,>>>>>>>>>>>>>>>>>>>>%. ", +" .%>>>>>>>>>>>>>>>>>>>>>,- ", +" #'>>>>>>>>>>>>>>>>>>>>>>= ", +" $>>>>>>>>>>>>>>>>>>>>>>>*@ ", +" ;>>>>>>>>>>>>>>>>>>>>>>>&+ ", +" ;>>>>>>>>>>>>>>>>>>>>>>>&+ ", +" ;>>>>>>>>>>>>>>>>>>>>>>>&+ ", +" ;>>>>>>>>>>>>>>>>>>>>>>>&+ ", +" ;>>>>>>>>>>>>>>>>>>>>>>>&+ ", +" -,>>>>>>>>>>>>>>>>>>>>>>%. ", +" @*>>>>>>>>>>>>>>>>>>>>>>$ ", +" ;>>>>>>>>>>>>>>>>>>>>>*# ", +" #*>>>>>>>>>>>>>>>>>>>>; ", +" ),>>>>>>>>>>>>>>>>>>%@ ", +" .~>>>>>>>>>>>>>>>>>'- ", +" @~,>>>>>>>>>>>>>>*) ", +" .)*>>>>>>>>>>>,~# ", +" #;*,>>>>>>'%-. ", +" @-;;;;;$#. ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/assets/enemy_64.xpm b/assets/enemy_64.xpm new file mode 100644 index 0000000..1a7caee --- /dev/null +++ b/assets/enemy_64.xpm @@ -0,0 +1,86 @@ +/* XPM */ +static char * enemy_64_xpm[] = { +"64 64 19 1", +" c #000000", +". c #260000", +"+ c #3B0000", +"@ c #380000", +"# c #450000", +"$ c #B90000", +"% c #DE0000", +"& c #FA0000", +"* c #F80000", +"= c #BE0000", +"- c #8E0000", +"; c #BB0000", +"> c #FF0000", +", c #FD0000", +"' c #FB0000", +") c #920000", +"! c #DC0000", +"~ c #DB0000", +"{ c #930000", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" .+++++@ ", +" #$%&&&&&*=-. ", +" @;*>>>>>>>>>,%- ", +" -%>>>>>>>>>>>>>';@ ", +" )'>>>>>>>>>>>>>>>>!@ ", +" #*>>>>>>>>>>>>>>>>>>; ", +" .~>>>>>>>>>>>>>>>>>>>'- ", +" -,>>>>>>>>>>>>>>>>>>>>%. ", +" .%>>>>>>>>>>>>>>>>>>>>>,- ", +" #'>>>>>>>>>>>>>>>>>>>>>>= ", +" $>>>>>>>>>>>>>>>>>>>>>>>*@ ", +" ;>>>>>>>>>>>>>>>>>>>>>>>&+ ", +" ;>>>>>>>>>>>>>>>>>>>>>>>&+ ", +" ;>>>>>>>>>>>>>>>>>>>>>>>&+ ", +" ;>>>>>>>>>>>>>>>>>>>>>>>&+ ", +" ;>>>>>>>>>>>>>>>>>>>>>>>&+ ", +" -,>>>>>>>>>>>>>>>>>>>>>>%. ", +" @*>>>>>>>>>>>>>>>>>>>>>>$ ", +" ;>>>>>>>>>>>>>>>>>>>>>*# ", +" #*>>>>>>>>>>>>>>>>>>>>; ", +" {,>>>>>>>>>>>>>>>>>>%@ ", +" .~>>>>>>>>>>>>>>>>>'- ", +" @~,>>>>>>>>>>>>>>*) ", +" .{*>>>>>>>>>>>,~# ", +" #;*,>>>>>>'%-. ", +" @-;;;;;$#. ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/assets/exit_64.xpm b/assets/exit_64.xpm new file mode 100644 index 0000000..9c9e190 --- /dev/null +++ b/assets/exit_64.xpm @@ -0,0 +1,75 @@ +/* XPM */ +static char * exit_64_xpm[] = { +"64 64 8 1", +" c #000000", +". c #030021", +"+ c #2900A3", +"@ c #2A00A6", +"# c #060031", +"$ c #3B00DE", +"% c #3C00E2", +"& c #3A00DA", +" ", +" ", +" ", +" ", +" .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+. ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$# ", +" #&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&# ", +" ###################################################### ", +" ", +" ", +" "}; diff --git a/assets/player_64.xpm b/assets/player_64.xpm new file mode 100644 index 0000000..a2ea41f --- /dev/null +++ b/assets/player_64.xpm @@ -0,0 +1,83 @@ +/* XPM */ +static char * player_64_xpm[] = { +"64 64 16 1", +" c #000000", +". c #262626", +"+ c #383838", +"@ c #454545", +"# c #B6B6B6", +"$ c #BABABA", +"% c #8D8D8D", +"& c #DCDCDC", +"* c #F8F8F8", +"= c #FDFDFD", +"- c #FBFBFB", +"; c #F6F6F6", +"> c #BDBDBD", +", c #8C8C8C", +"' c #DADADA", +") c #919191", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" .+@#$$$$$%++ ", +" .%$&**======-*;>#@ ", +" @#&-===============;>%. ", +" +$;====================-&, ", +" ,&========================*$+ ", +" +$*===========================&, ", +" +'==============================*) ", +" +'================================*) ", +" +'==================================*) ", +" +'====================================*) ", +" $======================================;@ ", +" ,*======================================='. ", +" +&========================================-) ", +" $==========================================;@ ", +" @;===========================================$ ", +" #============================================;+ ", +" .&============================================-% ", +" %-=============================================&. ", +" $==============================================*+ ", +" .&==============================================-% ", +" +*===============================================$ ", +" @*===============================================> ", +" #================================================;+ ", +" $================================================*+ ", +" $================================================*+ ", +" $================================================*+ ", +" $================================================*+ ", +" $================================================*+ ", +" %-===============================================&. ", +" +*===============================================$ ", +" +;===============================================# ", +" >==============================================*@ ", +" #==============================================;+ ", +" @;=============================================$ ", +" >============================================*@ ", +" %-===========================================&. ", +" .&==========================================-% ", +" ,*========================================='. ", +" $========================================;@ ", +" +&======================================-) ", +" ,*====================================='. ", +" )*==================================='+ ", +" )*================================='+ ", +" )*==============================='+ ", +" );============================-'+ ", +" @'-=========================;). ", +" .);======================-'@ ", +" @$;-=================*&%. ", +" +%&*-===========*;$@. ", +" .+%$>;*****&$#@+ ", +" ++++++. ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/assets/wall_64.xpm b/assets/wall_64.xpm new file mode 100644 index 0000000..f548f0c --- /dev/null +++ b/assets/wall_64.xpm @@ -0,0 +1,68 @@ +/* XPM */ +static char * wall_64_xpm[] = { +"64 64 1 1", +" c #FFFFFF", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/libft/Makefile b/libft/Makefile index 78f88f2..6e759cb 100644 --- a/libft/Makefile +++ b/libft/Makefile @@ -6,7 +6,7 @@ # By: erey-bet +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2022/09/27 04:19:30 by erey-bet #+# #+# # -# Updated: 2022/12/12 13:46:44 by erey-bet ### ########.fr # +# Updated: 2022/12/13 13:23:28 by erey-bet ### ########.fr # # # # **************************************************************************** # @@ -16,7 +16,7 @@ ft_strlcat.c ft_toupper.c ft_tolower.c ft_strchr.c ft_strrchr.c ft_strncmp.c \ ft_memchr.c ft_memcmp.c ft_strnstr.c ft_atoi.c ft_calloc.c ft_strdup.c \ ft_substr.c ft_strjoin.c ft_strtrim.c ft_split.c ft_itoa.c ft_strmapi.c \ ft_striteri.c ft_putchar_fd.c ft_putstr_fd.c ft_putendl_fd.c ft_putnbr_fd.c \ -ft_get_size.c ft_power.c ft_atoi_check.c ft_strlen_double.c +ft_get_size.c ft_power.c ft_atoi_check.c ft_strlen_double.c ft_strjoin_free.c OBJS = ${SRCS:.c=.o} BONUS_SRCS = ft_lstnew.c ft_lstadd_front.c ft_lstsize.c ft_lstlast.c \ ft_lstadd_back.c ft_lstdelone.c ft_lstclear.c ft_lstiter.c ft_lstmap.c diff --git a/libft/ft_strjoin_free.c b/libft/ft_strjoin_free.c new file mode 100644 index 0000000..a1cf45a --- /dev/null +++ b/libft/ft_strjoin_free.c @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strjoin_free.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/27 14:47:27 by erey-bet #+# #+# */ +/* Updated: 2022/12/13 13:24:11 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strjoin_free(char *s1, char *s2, int b) +{ + char *tmp; + int size; + + if (s1 == NULL || s2 == NULL) + return (NULL); + size = ft_strlen(s1) + ft_strlen(s2) + 1; + tmp = ft_calloc(size, 1); + if (tmp == NULL) + return (NULL); + ft_strlcpy(tmp, s1, size); + ft_strlcat(tmp, s2, size); + if (b > 0) + free(s1); + if (b > 1) + free(s2); + return (tmp); +} diff --git a/libft/ft_strjoin_free.o b/libft/ft_strjoin_free.o new file mode 100644 index 0000000..101a0da Binary files /dev/null and b/libft/ft_strjoin_free.o differ diff --git a/libft/libft.a b/libft/libft.a index d0d0846..3374431 100644 Binary files a/libft/libft.a and b/libft/libft.a differ diff --git a/libft/libft.h b/libft/libft.h index 606df93..aa91cbc 100644 --- a/libft/libft.h +++ b/libft/libft.h @@ -6,7 +6,7 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/09/26 16:31:10 by erey-bet #+# #+# */ -/* Updated: 2022/12/12 13:46:30 by erey-bet ### ########.fr */ +/* Updated: 2022/12/13 13:23:44 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ @@ -55,6 +55,7 @@ void ft_putnbr_fd(int n, int fd); int ft_get_size(long n); int ft_power(int nb, int power); char *ft_strjoin(char const *s1, char const *s2); +char *ft_strjoin_free(char *s1, char *s2, int b); char *ft_strtrim(char const *s1, char const *set); char *ft_substr(char const *s, unsigned int start, size_t len); t_list *ft_lstnew(void *content); diff --git a/map_test2.txt b/map_test2.txt new file mode 100644 index 0000000..1bb91f5 --- /dev/null +++ b/map_test2.txt @@ -0,0 +1,6 @@ +1111111111111111111111111111111111 +1E0000000000000C00000C000000000001 +1010010100100000101001000000010101 +1010010010101010001001000000010101 +1P0000000C00C0000000000000000000C1 +1111111111111111111111111111111111 diff --git a/so_long b/so_long index d96326c..539ce5c 100755 Binary files a/so_long and b/so_long differ diff --git a/so_long.c b/so_long.c index e361f59..b525877 100644 --- a/so_long.c +++ b/so_long.c @@ -6,22 +6,27 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/09 14:18:18 by erey-bet #+# #+# */ -/* Updated: 2022/12/12 21:52:42 by erey-bet ### ########.fr */ +/* Updated: 2022/12/14 17:15:45 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ #include "so_long.h" #include -void free_img(t_data *data) +void all_free(t_data *data) { - mlx_destroy_image(data->mlx, data->mlx_img); - free(data->mlx_img); + (void)data; } int quit(t_data *data) { - (void)data; + mlx_destroy_image(data->mlx, data->mlx_img); + mlx_clear_window(data->mlx, data->mlx_win); + mlx_destroy_window(data->mlx, data->mlx_win); + mlx_destroy_display(data->mlx); + mlx_loop_end(data->mlx); + free(data->mlx); + //free(data); exit(0); return (0); } @@ -47,6 +52,11 @@ t_xy *get_position(t_data *data, char c) return (xy); } +char get_element(t_data *data, t_xy xy) +{ + return (data->map[xy.y][xy.x]); +} + int get_new_element(t_data *data, int x, int y) { return(data->map[data->y_player + y][data->x_player + x]); @@ -67,6 +77,7 @@ int end(t_data *data) void set_position_player(t_data *data, t_xy *xy) { data->x_player = xy->x; + data->y_player = xy->y; free(xy); } @@ -102,7 +113,7 @@ int key_hook(int key, t_data *data) char *assets(char c) { - if (c == '0') + if (c == '0' || c == 'P') return ("assets/background.xpm"); else if (c == '1') return ("assets/wall.xpm"); @@ -113,23 +124,36 @@ char *assets(char c) return (NULL); } -void draw_map(t_data *data) +void draw(t_data *data) { int x; int y; + int range; - x = 0; - while (x < (data->w_screen / data->size)) + range = 4; + x = data->x_player - range; + while (x < data->x_player + range) { - y = 0; - while (y < (data->h_screen / data->size)) + while (x < 0) + x++; + y = data->y_player - range; + while (y < data->y_player + range) { - if (x != data->x_player || y != data->y_player) + while (y < 0) + y++; + if (x == data->x_player && y == data->y_player) { + data->mlx_img = mlx_xpm_file_to_image(data->mlx, "assets/player.xpm", &data->size, &data->size); + mlx_put_image_to_window(data->mlx, data->mlx_win, data->mlx_img, data->w_screen / 2, data->h_screen / 2); + } + else if (x >= 0 && y >= 0 && y < data->h_map && data->map[y] != NULL) + { + if (data->map[y][x] == '\n' || data->map[y][x] == '\0') + break; data->mlx_img = mlx_xpm_file_to_image(data->mlx, assets(data->map[y][x]), &data->size, &data->size); if (!data->mlx_img) data->mlx_img = mlx_xpm_file_to_image(data->mlx, assets('0'), &data->size, &data->size); - mlx_put_image_to_window(data->mlx, data->mlx_win, data->mlx_img, x * data->size, y * data->size); + mlx_put_image_to_window(data->mlx, data->mlx_win, data->mlx_img, (data->w_screen / 2) + ((x - data->x_player) * data->size), (data->h_screen / 2) + ((y - data->y_player) * data->size)); } y++; } @@ -141,9 +165,8 @@ int render(t_data *data) { if (data->update == 1) { - draw_map(data); - data->mlx_img = mlx_xpm_file_to_image(data->mlx, "assets/player.xpm", &data->size, &data->size); - mlx_put_image_to_window(data->mlx, data->mlx_win, data->mlx_img, data->x_player * data->size, data->y_player * data->size); + //mlx_clear_window(data->mlx, data->mlx_win); + draw(data); data->update = 0; } return (0); @@ -155,14 +178,14 @@ void init_data(t_data *data) data->size = 128; data->x_player = 0; data->y_player = 0; - data->h_screen = 768; - data->w_screen = 768; data->mlx = mlx_init(); + mlx_get_screen_size(data->mlx, &data->w_screen, &data->h_screen); } void get_map(char *argv[], t_data *data) { char *tmp_map; + //char *tmp_map2; char *map; int i; int fd; @@ -175,16 +198,22 @@ void get_map(char *argv[], t_data *data) tmp_map = NULL; while (i == 0 || tmp_map != NULL) { + if (tmp_map) + free(tmp_map); tmp_map = get_next_line(fd); if (tmp_map && map) - map = ft_strjoin(map, tmp_map); + { + map = ft_strjoin_free(map, tmp_map, 1); + } else if (tmp_map) - map = tmp_map; + map = ft_strdup(tmp_map); i++; } + if (tmp_map) + free(tmp_map); data->map = ft_split(map, '\n'); - data->h_screen = (i - 1) * data->size; - data->w_screen = ft_strlen(*data->map) * data->size; + data->h_map = i - 1; + free(map); } int main(int argc, char *argv[]) diff --git a/so_long.h b/so_long.h index 375850f..1dbce30 100644 --- a/so_long.h +++ b/so_long.h @@ -6,7 +6,7 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/10 17:59:18 by erey-bet #+# #+# */ -/* Updated: 2022/12/12 20:53:26 by erey-bet ### ########.fr */ +/* Updated: 2022/12/14 16:12:41 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,6 +28,8 @@ typedef struct s_data void *mlx_win; void *mlx_img; char **map; + int h_map; + int w_map; int update; int size; int x_player; diff --git a/so_long.o b/so_long.o index 7ec7a89..79d092b 100644 Binary files a/so_long.o and b/so_long.o differ