diff --git a/main.c b/main.c index b841084..60f5db3 100644 --- a/main.c +++ b/main.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/02/13 16:42:55 by apommier #+# #+# */ -/* Updated: 2022/02/13 22:02:38 by apommier ### ########.fr */ +/* Updated: 2022/02/13 22:26:17 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,15 +20,6 @@ #include #include -typedef struct s_data { - void *mlx; - void *mlx_win; - char **map_tab; - int item; - int move; - int bear; -} t_data; - size_t ft_strlen_double(char **s) { size_t i; @@ -57,21 +48,25 @@ void quit_game(t_data *img) exit(1); } -int *choose_bear(t_data *img) +int *choose_bear(t_data *img) { - int *buffer; - int img_width; - int img_height; - + int *buffer; + int img_width; + int img_height; + buffer = 0; if (img->bear == 119) - buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/back_bear.xpm", &img_width, &img_height); + buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/back_bear.xpm", + &img_width, &img_height); else if (img->bear == 97) - buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/left_bear.xpm", &img_width, &img_height); + buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/left_bear.xpm", + &img_width, &img_height); else if (img->bear == 100) - buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/right_bear.xpm", &img_width, &img_height); + buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/right_bear.xpm", + &img_width, &img_height); else - buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/front_bear.xpm", &img_width, &img_height); + buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/front_bear.xpm", + &img_width, &img_height); if (buffer == 0) return (0); return (buffer); @@ -79,25 +74,29 @@ int *choose_bear(t_data *img) void print_case(char type, t_data *img, int y, int x) { - int *buffer; - int img_width; - int img_height; + int *buffer; + int img_width; + int img_height; if (type == '1') - buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/snow_tree.xpm", &img_width, &img_height); + buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/snow_tree.xpm", + &img_width, &img_height); else if (type == 'P') buffer = choose_bear(img); else if (type == 'C') - buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/honey.xpm", &img_width, &img_height); + buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/honey.xpm", + &img_width, &img_height); else if (type == 'E') - buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/exit.XPM", &img_width, &img_height); + buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/exit.XPM", + &img_width, &img_height); else - buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/back.xpm", &img_width, &img_height); + buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/back.xpm", + &img_width, &img_height); mlx_put_image_to_window(img->mlx, img->mlx_win, buffer, x * 32, y * 32); mlx_destroy_image(img->mlx, buffer); } -void print_map(char **map, t_data *img) +void print_map(char **map, t_data *img) { int i; int j; @@ -109,7 +108,7 @@ void print_map(char **map, t_data *img) { i = 0; while (map[j][i]) - { + { print_case(map[j][i], img, j, i); if (map[j][i] == 'C') img->item++; @@ -128,7 +127,7 @@ void change_map(t_data *img, int y, int x, char *change) img->move++; ft_putnbr_fd(img->move, 1); ft_putchar_fd('\n', 1); - img->map_tab[y][x] = '0'; + img->map_tab[y][x] = '0'; *change = 'P'; } else if (*change == 'E') @@ -145,8 +144,8 @@ void change_map(t_data *img, int y, int x, char *change) int is_good(char **map, int type, t_data *img) { - int j; - int i; + int j; + int i; i = 0; j = 0; @@ -181,14 +180,36 @@ int key_press(int code, t_data *img) return (1); } +char **set_map(char **argv) +{ + char **map; + char *map_line; + char *del; + char *swap; + int fd; + + fd = open(argv[1], O_RDONLY); + swap = get_next_line(fd); + while (swap) + { + del = map; + map = ft_strjoin(map, swap); + free(swap); + swap = get_next_line(fd); + free(del); + } + return (map); +} + int main(int argc, char **argv) { t_data img; - char *map = 0; - int fd = 0; - char *swap = 0; + char *map; + int fd; + char *swap; char *del; + map = 0; (void)argc; img.bear = 0; img.move = 0; @@ -206,9 +227,9 @@ int main(int argc, char **argv) check_map(img.map_tab); img.mlx = mlx_init(); img.mlx_win = mlx_new_window(img.mlx, ft_strlen(img.map_tab[0]) * 32, - ft_strlen_double(img.map_tab) * 32, "Hungry Bear"); + ft_strlen_double(img.map_tab) * 32, "Hungry Bear"); print_map(img.map_tab, &img); free(map); - mlx_hook(img.mlx_win, 2, 1L<<0, &key_press, &img); + mlx_hook(img.mlx_win, 2, 1L << 0, &key_press, &img); mlx_loop(img.mlx); } diff --git a/parsing.c b/parsing.c index a33e3bf..07e219a 100644 --- a/parsing.c +++ b/parsing.c @@ -3,20 +3,17 @@ /* ::: :::::::: */ /* parsing.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: apommier +#+ +:+ +#+ */ +/* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: map0map/0map/13 16:map1:43 by apommier #+# #+# */ -/* Updated: map0map/0map/13 map1:map4:44 by apommier ### ########.fr */ +/* Created: 2022/02/13 22:26:34 by apommier #+# #+# */ +/* Updated: 2022/02/13 22:28:18 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ - #include "so_long.h" #include "./libft/libft.h" -#include - -int is_player(char **map) +int is_player(char **map) { int i; int j; @@ -40,7 +37,7 @@ int is_player(char **map) return (0); } -int is_exit(char **map) +int is_exit(char **map) { int i; int j; @@ -62,10 +59,9 @@ int is_exit(char **map) if (exit > 0) return (1); return (0); - } -int is_item(char **map) +int is_item(char **map) { int i; int j; @@ -87,11 +83,11 @@ int is_item(char **map) return (item); } -int is_rectangle(char **map) +int is_rectangle(char **map) { int i; int j; - + i = 0; j = 0; while (map[j]) @@ -99,8 +95,9 @@ int is_rectangle(char **map) i = 1; while (map[j][i]) { - if (map[j][i] != '0' && map[j][i] != '1' && map[j][i] != 'P' && map[j][i] != 'E' && map[j][i] != 'C') - return (0); + if (map[j][i] != '0' && map[j][i] != '1' && map[j][i] != 'P' + && map[j][i] != 'E' && map[j][i] != 'C') + return (0); i++; } j++; @@ -142,7 +139,7 @@ int is_close(char **map) return (1); } -void ft_error(char *error_msg, char **map) +void ft_error(char *error_msg, char **map) { int i; @@ -153,7 +150,7 @@ void ft_error(char *error_msg, char **map) exit(1); } -int check_map(char **map) +int check_map(char **map) { if (!is_player(map)) ft_error("You need just one player\n", map); @@ -166,4 +163,4 @@ int check_map(char **map) if (!is_rectangle(map)) ft_error("The map isn't a rectangle\n", map); return (1); -} \ No newline at end of file +} diff --git a/so_long.h b/so_long.h index ddd90f9..f545c0b 100644 --- a/so_long.h +++ b/so_long.h @@ -6,8 +6,22 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/02/13 16:30:59 by apommier #+# #+# */ -/* Updated: 2022/02/13 19:14:29 by apommier ### ########.fr */ +/* Updated: 2022/02/13 22:12:14 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ -int check_map(char **map); \ No newline at end of file +#ifndef SO_LONG_H +# define SO_LONG_H + +typedef struct s_data { + void *mlx; + void *mlx_win; + char **map_tab; + int item; + int move; + int bear; +} t_data; + +int check_map(char **map); + +#endif \ No newline at end of file