free and create map

This commit is contained in:
Quinten Mennen 2025-04-17 19:25:40 +02:00
parent 2ebf2a6e12
commit 5bceacaba8
8 changed files with 113 additions and 8 deletions

View File

@ -6,7 +6,7 @@
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */ /* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2025/04/15 12:22:29 by qmennen #+# #+# */ /* Created: 2025/04/15 12:22:29 by qmennen #+# #+# */
/* Updated: 2025/04/17 17:59:23 by qmennen ### ########.fr */ /* Updated: 2025/04/17 19:20:17 by qmennen ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -18,6 +18,7 @@
# include <allowed.h> # include <allowed.h>
# include "types.h" # include "types.h"
# include "errors.h" # include "errors.h"
# include "map.h"
# include "game.h" # include "game.h"
# include "screen.h" # include "screen.h"
# include "keyhandle.h" # include "keyhandle.h"
@ -42,4 +43,6 @@
# define CYAN "\033[0;36m" # define CYAN "\033[0;36m"
# define WHITE "\033[0;37m" # define WHITE "\033[0;37m"
t_tile **get_temp_map();
#endif #endif

21
inc/map.h Normal file
View File

@ -0,0 +1,21 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* map.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/04/17 19:19:19 by qmennen #+# #+# */
/* Updated: 2025/04/17 19:23:59 by qmennen ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef MAP_H
# define MAP_H
# include "cub3d.h"
int map_create(t_game **game);
void map_free(t_map *map);
#endif

View File

@ -19,5 +19,6 @@ void render_line(t_screen *screen, t_vec2 start, t_vec2 end, unsigned int color)
void render_circle(t_screen *screen, t_vec2 point, int radius, unsigned int color); void render_circle(t_screen *screen, t_vec2 point, int radius, unsigned int color);
void render_clear(t_screen *screen); void render_clear(t_screen *screen);
void render_entities(t_game *game); void render_entities(t_game *game);
void render_map(t_screen *screen, t_map *map);
#endif #endif

View File

@ -6,7 +6,7 @@
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */ /* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2025/04/15 15:46:08 by qmennen #+# #+# */ /* Created: 2025/04/15 15:46:08 by qmennen #+# #+# */
/* Updated: 2025/04/15 19:18:17 by qmennen ### ########.fr */ /* Updated: 2025/04/17 19:24:14 by qmennen ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -35,6 +35,7 @@ void game_loop(void *param)
game = (t_game *)param; game = (t_game *)param;
render_clear(game->screen); render_clear(game->screen);
render_entities(game); render_entities(game);
render_map(game->screen, game->map);
} }
void game_terminate(t_game *game) void game_terminate(t_game *game)
@ -49,7 +50,7 @@ void game_terminate(t_game *game)
if (game->player) if (game->player)
free(game->player); free(game->player);
if (game->map) if (game->map)
free(game->map); map_free(game->map);
free(game); free(game);
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
} }

View File

@ -6,7 +6,7 @@
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */ /* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2025/04/15 16:01:29 by qmennen #+# #+# */ /* Created: 2025/04/15 16:01:29 by qmennen #+# #+# */
/* Updated: 2025/04/15 19:19:00 by qmennen ### ########.fr */ /* Updated: 2025/04/17 19:20:05 by qmennen ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -18,6 +18,8 @@ static int init_game(t_game **game)
return (FAILURE); return (FAILURE);
if (!player_create(game)) if (!player_create(game))
return (FAILURE); return (FAILURE);
if (!map_create(game))
return (FAILURE);
screen_center((*game)->screen); screen_center((*game)->screen);
mlx_key_hook((*game)->screen->mlx, keyhandle, *game); mlx_key_hook((*game)->screen->mlx, keyhandle, *game);
mlx_loop_hook((*game)->screen->mlx, game_loop, *game); mlx_loop_hook((*game)->screen->mlx, game_loop, *game);

View File

@ -40,3 +40,38 @@ t_tile **get_temp_map()
return temp_map; return temp_map;
} }
int map_create(t_game **game)
{
t_map *map;
map = malloc(sizeof(t_map));
if (!map)
return (FAILURE);
/**
*
* TEMP MAP
*
*/
map->width = 10;
map->height = 10;
map->grid = get_temp_map();
(*game)->map = map;
return (SUCCESS);
}
void map_free(t_map *map)
{
int i;
int j;
i = 0;
while (i < map->height)
{
j = 0;
free(map->grid[i]);
i++;
}
free(map->grid);
free(map);
}

View File

@ -6,7 +6,7 @@
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */ /* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2025/04/15 18:53:19 by qmennen #+# #+# */ /* Created: 2025/04/15 18:53:19 by qmennen #+# #+# */
/* Updated: 2025/04/17 18:10:17 by qmennen ### ########.fr */ /* Updated: 2025/04/17 19:20:56 by qmennen ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -24,7 +24,7 @@ int player_create(t_game **game)
player->pos.x = 20.f; player->pos.x = 20.f;
player->pos.y = 20.f; player->pos.y = 20.f;
player->angle = 0.f; player->angle = 0.f;
player->speed = 10.f; player->speed = 6.f;
player->fov = 90.f; player->fov = 90.f;
(*game)->player = player; (*game)->player = player;
return (SUCCESS); return (SUCCESS);
@ -51,9 +51,10 @@ void player_move(keys_t key, t_player *player)
void player_render(t_screen *screen, t_player *player) void player_render(t_screen *screen, t_player *player)
{ {
t_vec2 direction; t_vec2 direction;
if (player->pos.x < 0 || player->pos.x >= screen->width || player->pos.y < 0 || player->pos.y >= screen->height) if (player->pos.x < 0 || player->pos.x >= screen->width || player->pos.y < 0 || player->pos.y >= screen->height)
return ; return ;
render_circle(screen, player->pos, 10, 0x3294a8ff); render_circle(screen, player->pos, 4, 0x3294a8ff);
direction.x = player->pos.x + cos(player->angle) * 30; direction.x = player->pos.x + cos(player->angle) * 30;
direction.y = player->pos.y + sin(player->angle) * 30; direction.y = player->pos.y + sin(player->angle) * 30;
render_line(screen, player->pos, direction, 0xa83232ff); render_line(screen, player->pos, direction, 0xa83232ff);

View File

@ -11,6 +11,7 @@
/* ************************************************************************** */ /* ************************************************************************** */
#include "render.h" #include "render.h"
#include "MLX42.h"
void render_clear(t_screen *screen) void render_clear(t_screen *screen)
{ {
@ -63,6 +64,46 @@ void render_line(t_screen *screen, t_vec2 start, t_vec2 end, unsigned int color)
} }
} }
void render_tile(t_screen *screen, int x, int y, t_tile tile)
{
int i;
int xp;
int yp;
i = 0;
if (tile == 0)
return ;
while ((i++) < 16 * 16)
{
xp = x + (i % 16);
yp = y + (i / 16);
if (xp < 0 || xp >= screen->width || yp < 0 || yp >= screen->height)
continue;
if (tile == TILE_WALL)
{
mlx_put_pixel(screen->img, xp, yp, 0xA88132ff);
}
}
}
void render_map(t_screen *screen, t_map *map)
{
int i;
int x;
int y;
i = 0;
while (i < map->width * map->height)
{
x = i % map->width;
y = i / map->height;
if (x < 0 || x >= map->width || y < 0 || y >= map->height)
continue;
render_tile(screen, x * 16, y * 16, map->grid[x][y]);
i++;
}
}
void render_entities(t_game *game) void render_entities(t_game *game)
{ {
player_render(game->screen, game->player); player_render(game->screen, game->player);