so_long/so_long.c
2022-12-11 18:48:37 +01:00

101 lines
2.7 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* so_long.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: erey-bet <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/12/09 14:18:18 by erey-bet #+# #+# */
/* Updated: 2022/12/11 18:48:15 by erey-bet ### ########.fr */
/* */
/* ************************************************************************** */
#include "so_long.h"
#include <stdio.h>
void free_img(t_data *data)
{
mlx_destroy_image(data->mlx, data->mlx_img);
free(data->mlx_img);
}
int quit(t_data *data)
{
if (data->mlx_img != NULL)
free_img(data);
free(data->mlx_win);
free(data->mlx);
exit(0);
return (0);
}
int key_hook(int key, t_data *data)
{
if (key == K_ESC)
quit(data);
else if (key == K_LEFT)
data->x_player -= 128;
else if (key == K_RIGHT)
data->x_player += 128;
else if (key == K_UP)
data->y_player -= 128;
else if (key == K_DOWN)
data->y_player += 128;
data->update = 1;
return (0);
}
int render(t_data *data)
{
int x;
int y;
if (data->update == 1)
{
x = -1;
while (++x < (data->w_screen / 128))
{
y = -1;
while (++y < (data->h_screen / 128))
{
if (x * 128 != data->x_player || y * 128 != data->y_player)
{
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, x * 128, y *128);
}
}
}
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->y_player);
data->update = 0;
}
return (0);
}
void init_data(t_data *data)
{
data->update = 1;
data->size = 128;
data->x_player = 0;
data->y_player = 0;
data->h_screen = 768;
data->w_screen = 768;
data->mlx = mlx_init();
data->mlx_win = mlx_new_window(data->mlx, data->w_screen, data->h_screen, "lili meli");
}
int main(int argc, char *argv[])
{
t_data data;
(void)argc;
(void)argv;
map = get_map(argc, argv);
init_data(&data);
mlx_hook(data.mlx_win, 17, 0, quit, &data);
mlx_key_hook(data.mlx_win, key_hook, &data);
mlx_loop_hook(data.mlx, render, &data);
mlx_loop(data.mlx);
return (0);
}