free and create map
This commit is contained in:
parent
2ebf2a6e12
commit
5bceacaba8
@ -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
21
inc/map.h
Normal 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
|
||||||
@ -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
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
37
src/map.c
37
src/map.c
@ -39,4 +39,39 @@ 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);
|
||||||
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
41
src/render.c
41
src/render.c
@ -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);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user