probleme leaks bizarre, reorganiser le code, mettre enemie et assets
This commit is contained in:
parent
5c39daa38c
commit
6b216f73b1
55
so_long.c
Normal file → Executable file
55
so_long.c
Normal file → Executable file
|
@ -20,13 +20,23 @@ void all_free(t_data *data)
|
||||||
|
|
||||||
int quit(t_data *data)
|
int quit(t_data *data)
|
||||||
{
|
{
|
||||||
mlx_destroy_image(data->mlx, data->mlx_img);
|
int i;
|
||||||
|
|
||||||
|
mlx_destroy_image(data->mlx, data->imgs.ply);
|
||||||
|
mlx_destroy_image(data->mlx, data->imgs.bg);
|
||||||
|
mlx_destroy_image(data->mlx, data->imgs.wall);
|
||||||
|
mlx_destroy_image(data->mlx, data->imgs.col);
|
||||||
|
mlx_destroy_image(data->mlx, data->imgs.exit);
|
||||||
|
mlx_destroy_image(data->mlx, data->imgs.ene);
|
||||||
mlx_clear_window(data->mlx, data->mlx_win);
|
mlx_clear_window(data->mlx, data->mlx_win);
|
||||||
mlx_destroy_window(data->mlx, data->mlx_win);
|
mlx_destroy_window(data->mlx, data->mlx_win);
|
||||||
mlx_destroy_display(data->mlx);
|
mlx_destroy_display(data->mlx);
|
||||||
mlx_loop_end(data->mlx);
|
mlx_loop_end(data->mlx);
|
||||||
|
i = 0;
|
||||||
|
while (data->map[i])
|
||||||
|
free(data->map[i++]);
|
||||||
|
free(data->map);
|
||||||
free(data->mlx);
|
free(data->mlx);
|
||||||
//free(data);
|
|
||||||
exit(0);
|
exit(0);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
@ -111,16 +121,16 @@ int key_hook(int key, t_data *data)
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *assets(char c)
|
void *assets(t_data *data, char c)
|
||||||
{
|
{
|
||||||
if (c == '0' || c == 'P')
|
if (c == '0' || c == 'P')
|
||||||
return ("assets/background.xpm");
|
return (data->imgs.bg);
|
||||||
else if (c == '1')
|
else if (c == '1')
|
||||||
return ("assets/wall.xpm");
|
return (data->imgs.wall);
|
||||||
else if (c == 'C')
|
else if (c == 'C')
|
||||||
return ("assets/collectible.xpm");
|
return (data->imgs.col);
|
||||||
else if (c == 'E')
|
else if (c == 'E')
|
||||||
return ("assets/exit.xpm");
|
return (data->imgs.exit);
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,22 +152,11 @@ void draw(t_data *data)
|
||||||
while (y < -1)
|
while (y < -1)
|
||||||
y++;
|
y++;
|
||||||
if (x == data->x_player && y == data->y_player)
|
if (x == data->x_player && y == data->y_player)
|
||||||
{
|
mlx_put_image_to_window(data->mlx, data->mlx_win, data->imgs.ply, data->w_screen / 2, data->h_screen / 2);
|
||||||
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 (y < 0 || x < 0 || y >= data->h_map || data->map[y][x] == '\n' || data->map[y][x] == '\0')
|
else if (y < 0 || x < 0 || y >= data->h_map || data->map[y][x] == '\n' || data->map[y][x] == '\0')
|
||||||
{
|
mlx_put_image_to_window(data->mlx, data->mlx_win, data->imgs.bg, (data->w_screen / 2) + ((x - data->x_player) * data->size), (data->h_screen / 2) + ((y - data->y_player) * data->size));
|
||||||
data->mlx_img = mlx_xpm_file_to_image(data->mlx, "assets/background.xpm", &data->size, &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));
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
mlx_put_image_to_window(data->mlx, data->mlx_win, assets(data, data->map[y][x]), (data->w_screen / 2) + ((x - data->x_player) * data->size), (data->h_screen / 2) + ((y - data->y_player) * data->size));
|
||||||
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, (data->w_screen / 2) + ((x - data->x_player) * data->size), (data->h_screen / 2) + ((y - data->y_player) * data->size));
|
|
||||||
}
|
|
||||||
y++;
|
y++;
|
||||||
}
|
}
|
||||||
x++;
|
x++;
|
||||||
|
@ -183,12 +182,17 @@ void init_data(t_data *data)
|
||||||
data->y_player = 0;
|
data->y_player = 0;
|
||||||
data->mlx = mlx_init();
|
data->mlx = mlx_init();
|
||||||
mlx_get_screen_size(data->mlx, &data->w_screen, &data->h_screen);
|
mlx_get_screen_size(data->mlx, &data->w_screen, &data->h_screen);
|
||||||
|
data->imgs.ply = mlx_xpm_file_to_image(data->mlx, "assets/player.xpm", &data->size, &data->size);
|
||||||
|
data->imgs.bg = mlx_xpm_file_to_image(data->mlx, "assets/background.xpm", &data->size, &data->size);
|
||||||
|
data->imgs.wall = mlx_xpm_file_to_image(data->mlx, "assets/wall.xpm", &data->size, &data->size);
|
||||||
|
data->imgs.col = mlx_xpm_file_to_image(data->mlx, "assets/collectible.xpm", &data->size, &data->size);
|
||||||
|
data->imgs.exit = mlx_xpm_file_to_image(data->mlx, "assets/exit.xpm", &data->size, &data->size);
|
||||||
|
data->imgs.ene = mlx_xpm_file_to_image(data->mlx, "assets/enemy.xpm", &data->size, &data->size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void get_map(char *argv[], t_data *data)
|
void get_map(char *argv[], t_data *data)
|
||||||
{
|
{
|
||||||
char *tmp_map;
|
char *tmp_map;
|
||||||
//char *tmp_map2;
|
|
||||||
char *map;
|
char *map;
|
||||||
int i;
|
int i;
|
||||||
int fd;
|
int fd;
|
||||||
|
@ -201,19 +205,14 @@ void get_map(char *argv[], t_data *data)
|
||||||
tmp_map = NULL;
|
tmp_map = NULL;
|
||||||
while (i == 0 || tmp_map != NULL)
|
while (i == 0 || tmp_map != NULL)
|
||||||
{
|
{
|
||||||
if (tmp_map)
|
|
||||||
free(tmp_map);
|
|
||||||
tmp_map = get_next_line(fd);
|
tmp_map = get_next_line(fd);
|
||||||
if (tmp_map && map)
|
if (tmp_map && map)
|
||||||
{
|
|
||||||
map = ft_strjoin_free(map, tmp_map, 1);
|
map = ft_strjoin_free(map, tmp_map, 1);
|
||||||
}
|
|
||||||
else if (tmp_map)
|
else if (tmp_map)
|
||||||
map = ft_strdup(tmp_map);
|
map = ft_strdup(tmp_map);
|
||||||
|
free(tmp_map);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
if (tmp_map)
|
|
||||||
free(tmp_map);
|
|
||||||
data->map = ft_split(map, '\n');
|
data->map = ft_split(map, '\n');
|
||||||
data->h_map = i - 1;
|
data->h_map = i - 1;
|
||||||
free(map);
|
free(map);
|
||||||
|
|
Loading…
Reference in a new issue