From 403cc84d9b80c18f0ecb1d8e86935acd242f2dcb Mon Sep 17 00:00:00 2001 From: Etienne Rey-bethbeder Date: Wed, 14 Dec 2022 20:06:15 +0100 Subject: [PATCH] =?UTF-8?q?Avencement,=20scrolling=20ajout=C3=A9,=20faut?= =?UTF-8?q?=20l'opti?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .so_long.h.swo | Bin 12288 -> 0 bytes assets/background_64.xpm | 68 ++++++++++++++++++++++++++++++ assets/collectible_64.xpm | 85 +++++++++++++++++++++++++++++++++++++ assets/enemy_64.xpm | 86 ++++++++++++++++++++++++++++++++++++++ assets/exit_64.xpm | 75 +++++++++++++++++++++++++++++++++ assets/player_64.xpm | 83 ++++++++++++++++++++++++++++++++++++ assets/wall_64.xpm | 68 ++++++++++++++++++++++++++++++ libft/Makefile | 4 +- libft/ft_strjoin_free.c | 33 +++++++++++++++ libft/ft_strjoin_free.o | Bin 0 -> 2048 bytes libft/libft.a | Bin 66314 -> 68462 bytes libft/libft.h | 3 +- map_test2.txt | 6 +++ so_long | Bin 66792 -> 67824 bytes so_long.c | 73 ++++++++++++++++++++++---------- so_long.h | 4 +- so_long.o | Bin 12424 -> 13872 bytes 17 files changed, 562 insertions(+), 26 deletions(-) delete mode 100644 .so_long.h.swo create mode 100644 assets/background_64.xpm create mode 100644 assets/collectible_64.xpm create mode 100644 assets/enemy_64.xpm create mode 100644 assets/exit_64.xpm create mode 100644 assets/player_64.xpm create mode 100644 assets/wall_64.xpm create mode 100644 libft/ft_strjoin_free.c create mode 100644 libft/ft_strjoin_free.o create mode 100644 map_test2.txt diff --git a/.so_long.h.swo b/.so_long.h.swo deleted file mode 100644 index 94fdf3c8a23428b12f040225834fd82b2d4afa2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2y>HV%9EPtjrL=%RVn7T>Js=Wl$7u`2jmk#{3IaNyR-I}&@g=e9IFaqNHV7E_ zSWzeb1Ylxg;A4RaF(R=bCI$v37?>D%o!E&RMW`xWihkEVxjWza_1)uSh~iRy>GCx` zEvpRWAY(5cJ}&>-yD|J#KF5SB!ts*uqoKbQ^@1u-77VA_XxXAJWlG{fw=Gqu~80V*xk;K8-N;0Ne*I(7_70 z0#1S>UfDDiUGVtFTkc4Ae6~=C7d_4$fSjKYvOi~9k>=yIGrZ7c?d%oK$ z``p8{&UDl8jrfGjy6%--A)KUN>+6Sl(>6lkCgVY0-?MItWUSRha?~r=3^$X_){Q1Q zYYofHWb1aITlMOu{<;-iwmUv>&CyzM4<&9nWxHhxUaXWI-hFeBHJj zp=|2OwXyU}+bUIjrTw~jr0Dr34)+DGiV)LyI-zbk7A6McxE3Db#m4%AmQ__*j&g7o z{9{G@#)5uz;rb%y|g4rXydhA@LY5}k_67V0&kaeV4kaIw5hY2Iz2FuOSvd9sp2@ky)EYu z7XKj#t!`W|@M5U-wpFYf?waMCpDbW2v#HtLW;-OOB}u8wWXs*DTWv&Xy+o`tPEP{k wC&%U5Rs%WLa$09{+~`zE;MQ|eGc_%VL@O#7`=`KEcDLCH+_4V|K6DEE1L8zqUjP6A 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 0000000000000000000000000000000000000000..101a0dae41a2ae4221b1591538207651b009e216 GIT binary patch literal 2048 zcmbu9&1(};5Wr`%wb7ci^#c?tC7?(JyCl*>+JmGGn=X=Cu?>h);%41iH6JC}Kr6Hg z0b$9dM~@yn^e+%kQmCLpk=)E5P$8lh@g_o@*?lj0-R@p=%FE3BX6C)O^WN(-HJb@Z z5^#~=I`lkF0e1R&cFHkR5QPZ*8XEnb)9kMcTH{Ajvp3qBU2oaBJ*~0P1}luJ1@(cq zRPpT<{%B1VQ$BPE*t_VpxF@w6JCd#LH`RUZF>iX(SRpzJ(uo3Hb#U z`$AeB9DWf>NBh-=9QuSwEEc4wPkr$7z%MTQo+N;be|{o6UvV@dL;q2TM22tx_usYb zbmwr%8FWtz`*eDM>>>{8r&lHs`0;cAp9|o30{CbEhh-~Yv#O6PkIMPws%a{Qmq30t zJ3lj>&Ch2t3+iHiae5}J=2=$JER$vE#bSk57LC<)9yW9f7e-0C$~lRXX#Y8IB@@8! z3p^s^Hw7LQ_-la=3jB@0hXnpHfX5iedro(~CrWL-Wa$M^uv@NP;a1fw>WXEqS)e@7 zEgh6XtpuB=uot7g?&2gRAeT)`92OJ;A)|FB|M zOK-?~!&Ase_)`zy@8DWiyXQ`=xeM#hPEiYf1DN2pj2=D z3ad}?M5evqOvce^9fZ+E4= z_Um?QX(pN#04f3DHz1n;RM&tVCxAkZmrMc`H-SBkK+QN%`y6oe0WJ@4ECHP2x-$ac zQ2`g~fz|+Uxe2)134}(0TU_7s4(OW&679f{5qNwQ7>n%%UUA{H1DLe{?;io5>VPk6 z!14;PnhX5;2&@~yB$lV2hnT7*=)DqbZ*996@V2!3sY|dhD?Jm+)LT%0Ra>qMGh59_fzUlw|+ZUXpr8R32}s%<+O27ODjio%qdoy zMIA*(b*z|9Cd&%aPWY>Q_|Kd3bvvm)mM7(~j|P&(QvQ&QMq*k@EGlU{rew|ZJ*n0A zWS6D+e4c+cGVzc~`n47O@5D&6+jwrW(-{~dPA^P9**ux!1$3$2An%oA$YJt6s1>w~ zejF;G1MxiiT5s6enw(JRBEG*JKm 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 d96326cd54391c3cdfc2d68ab46a2d839774253f..539ce5c8d929e90052a08c26817dee9e0f6a8e3d 100755 GIT binary patch delta 15461 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 U{?06q@q1D?$|*AQ`)Tn10<2yzX8-^I delta 13193 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 7ec7a89b34389046abcd328c208f1aece8749a8f..79d092bfe66bb99f16ecd03da0449446ee4b179d 100644 GIT binary patch literal 13872 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