parser er in gefrutseld

This commit is contained in:
whaffman 2025-04-20 14:02:23 +02:00
parent df46797def
commit 8f9347d2e7
7 changed files with 182 additions and 166 deletions

View File

@ -4,5 +4,6 @@
"cub3d.h": "c",
"screen.h": "c",
"mlx42.h": "c"
}
},
"cmake.ignoreCMakeListsMissing": true
}

View File

@ -1,12 +1,12 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* 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 */
/* :::::::: */
/* map.h :+: :+: */
/* +:+ */
/* By: qmennen <qmennen@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/17 19:19:19 by qmennen #+# #+# */
/* Updated: 2025/04/20 13:51:19 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
@ -15,7 +15,8 @@
# include "cub3d.h"
int map_create(t_game **game);
int map_create(t_game **game, int argc, char **argv);
void map_free(t_map *map);
void print_map(t_map *map);
#endif

View File

@ -6,7 +6,7 @@
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/19 14:41:55 by whaffman #+# #+# */
/* Updated: 2025/04/19 14:46:21 by whaffman ######## odam.nl */
/* Updated: 2025/04/20 13:50:42 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
@ -24,6 +24,6 @@ int map_width(char **lines);
int parse_tile(char c);
int parse_map(char **lines, t_map *map);
int parse_file(char *buffer, t_map *map);
void print_map(t_map *map);
void print_config(t_map *map);
#endif

View File

@ -6,65 +6,66 @@
/* By: qmennen <qmennen@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/15 16:01:29 by qmennen #+# #+# */
/* Updated: 2025/04/19 14:47:19 by whaffman ######## odam.nl */
/* Updated: 2025/04/20 13:46:26 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
# include "cub3d.h"
// static int init_game(t_game **game)
// {
// if (!game_create(game))
// return (FAILURE);
// if (!player_create(game))
// return (FAILURE);
// if (!map_create(game))
// return (FAILURE);
// if (!keyboard_create(game))
// return (FAILURE);
// screen_center((*game)->screen);
// mlx_key_hook((*game)->screen->mlx, keyhandle, *game);
// mlx_loop_hook((*game)->screen->mlx, game_loop, *game);
// return (SUCCESS);
// }
// int main(void)
// {
// t_game *game;
// errno = 0;
// game = NULL;
// init_game(&game);
// perror("after init");
// mlx_loop(game->screen->mlx);
// game_terminate(game);
// return (EXIT_SUCCESS);
// }
int main(int argc, char **argv)
static int init_game(t_game **game, int argc, char **argv)
{
t_map map;
char *buffer;
if (!game_create(game))
return (FAILURE);
if (!player_create(game))
return (FAILURE);
if (!map_create(game, argc, argv))
return (FAILURE);
if (!keyboard_create(game))
return (FAILURE);
screen_center((*game)->screen);
mlx_key_hook((*game)->screen->mlx, keyhandle, *game);
mlx_loop_hook((*game)->screen->mlx, game_loop, *game);
return (SUCCESS);
}
if (argc != 2)
{
ft_putstr_fd("Usage: ./cub3d <map.cub>\n", 2);
return (1);
}
buffer = read_map_file(argv[1]);
if (!buffer)
{
perror("Error reading map file");
return (1);
}
if (parse_file(buffer, &map) == FAILURE)
{
ft_putstr_fd("Error parsing map file\n", 2);
free(buffer);
return (1);
}
print_map(&map);
free(buffer);
return (0);
}
int main(int argc, char **argv)
{
t_game *game;
errno = 0;
game = NULL;
init_game(&game, argc, argv);
perror("after init");
mlx_loop(game->screen->mlx);
game_terminate(game);
return (EXIT_SUCCESS);
}
// int main(int argc, char **argv)
// {
// t_map map;
// char *buffer;
// if (argc != 2)
// {
// ft_putstr_fd("Usage: ./cub3d <map.cub>\n", 2);
// return (1);
// }
// buffer = read_map_file(argv[1]);
// if (!buffer)
// {
// perror("Error reading map file");
// return (1);
// }
// if (parse_file(buffer, &map) == FAILURE)
// {
// ft_putstr_fd("Error parsing map file\n", 2);
// free(buffer);
// return (1);
// }
// print_map(&map);
// free(buffer);
// return (0);
// }

159
src/map.c
View File

@ -8,72 +8,72 @@
#define SUCCESS 1
t_map *get_temp_map(void)
{
const t_tile const_map[10][10] =
{
{-1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 1, 1, 1},
{1, 0, 0, 2, 0, 0, 0, 1, -1, 1},
{1, 1, 1, 1, 0, 1, 0, 1, -1, -1 },
{1, 1, -1, 1, 0, 1, 1, 1, -1, 1},
{1, 1, 1, 1, 0, 0, 0, 1, 1, 1},
{1, 0, 0, 0, 1, 0, 0, 1, 0, 1},
{1, 0, 0, 0, 1, 0, 0, 1, 0, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
};
t_tile **grid = malloc(10 * sizeof(int *));
if (!grid)
return NULL;
for (int i = 0; i < 10; i++)
{
grid[i] = malloc(10 * sizeof(int));
if (!grid[i])
{
for (int j = 0; j < i; j++)
free(grid[j]);
free(grid);
return NULL;
}
for (int j = 0; j < 10; j++)
{
grid[i][j] = const_map[i][j];
}
}
t_map *map = malloc(sizeof(t_map));
if (!map)
{
for (int i = 0; i < 10; i++)
free(grid[i]);
free(grid);
return NULL;
}
map->width = 10;
map->height = 10;
map->grid = grid;
return map;
}
// void print_map(t_map *map)
// t_map *get_temp_map(void)
// {
// const int chars[] = {'X', ' ', '.', '#', 'P'};
// int i = 0;
// while (i < map->height)
// {
// int j = 0;
// while (j < map->width)
// const t_tile const_map[10][10] =
// {
// printf("%c ", chars[map->grid[i][j] + 2]);
// j++;
// {-1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
// {1, 1, 0, 0, 0, 0, 0, 0, 0, 1},
// {1, 0, 0, 0, 0, 0, 0, 1, 1, 1},
// {1, 0, 0, 2, 0, 0, 0, 1, -1, 1},
// {1, 1, 1, 1, 0, 1, 0, 1, -1, -1 },
// {1, 1, -1, 1, 0, 1, 1, 1, -1, 1},
// {1, 1, 1, 1, 0, 0, 0, 1, 1, 1},
// {1, 0, 0, 0, 1, 0, 0, 1, 0, 1},
// {1, 0, 0, 0, 1, 0, 0, 1, 0, 1},
// {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
// };
// t_tile **grid = malloc(10 * sizeof(int *));
// if (!grid)
// return NULL;
// for (int i = 0; i < 10; i++)
// {
// grid[i] = malloc(10 * sizeof(int));
// if (!grid[i])
// {
// for (int j = 0; j < i; j++)
// free(grid[j]);
// free(grid);
// return NULL;
// }
// for (int j = 0; j < 10; j++)
// {
// grid[i][j] = const_map[i][j];
// }
// printf("\n");
// i++;
// }
// t_map *map = malloc(sizeof(t_map));
// if (!map)
// {
// for (int i = 0; i < 10; i++)
// free(grid[i]);
// free(grid);
// return NULL;
// }
// map->width = 10;
// map->height = 10;
// map->grid = grid;
// return map;
// }
void print_map(t_map *map)
{
const int chars[] = {'X', ' ', '.', '#', 'P'};
int i = 0;
while (i < map->height)
{
int j = 0;
while (j < map->width)
{
printf("%c ", chars[map->grid[i][j] + 2]);
j++;
}
printf("\n");
i++;
}
}
void free_map(t_map **map)
{
if (!map || !*map)
@ -168,11 +168,46 @@ int enclosed_map(t_map *map)
// }
int map_create(t_game **game)
static int parse_args(int argc, char **argv, t_map *map)
{
char *buffer;
if (argc != 2)
{
ft_putstr_fd("Usage: ./cub3d <map.cub>\n", 2);
return (FAILURE);
}
buffer = read_map_file(argv[1]);
if (!buffer)
{
perror("Error reading map file");
return (FAILURE);
}
if (parse_file(buffer, map) == FAILURE)
{
ft_putstr_fd("Error parsing map file\n", 2);
free(buffer);
return (FAILURE);
}
print_map(map);
free(buffer);
return (SUCCESS);
}
int map_create(t_game **game, int argc, char **argv)
{
t_map *map;
map = get_temp_map();
if (!game || !*game)
return (FAILURE);
map = malloc(sizeof(t_map));
if (!map)
{
perror("Error allocating memory for map");
return (FAILURE);
}
parse_args(argc, argv, map);
print_map(map);
if(!enclosed_map(map))
fprintf(stderr, "NOT GOOD MAP FRIEND\n");

View File

@ -6,7 +6,7 @@
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/18 11:29:58 by whaffman #+# #+# */
/* Updated: 2025/04/19 15:50:18 by whaffman ######## odam.nl */
/* Updated: 2025/04/20 13:51:37 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
@ -247,11 +247,8 @@ int parse_file(char *buffer, t_map *map)
}
void print_map(t_map *map)
void print_config(t_map *map)
{
int i;
int j;
printf("Map:\n");
printf("Width: %d, Height: %d\n", map->width, map->height);
printf("Textures:\n");
@ -263,23 +260,5 @@ void print_map(t_map *map)
printf("Ceiling color: %u\n", map->ceiling_color);
printf("Grid:\n");
i = 0;
while (i < map->height)
{
j = 0;
while (j < map->width)
{
if (map->grid[i][j] == TILE_WALL)
ft_putchar_fd('1', 1);
else if (map->grid[i][j] == TILE_EMPTY)
ft_putchar_fd('0', 1);
else if (map->grid[i][j] == TILE_PLAYER)
ft_putchar_fd('P', 1);
else
ft_putchar_fd(' ', 1);
j++;
}
ft_putchar_fd('\n', 1);
i++;
}
print_map(map);
}

View File

@ -6,27 +6,27 @@
/* By: qmennen <qmennen@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/15 16:28:10 by qmennen #+# #+# */
/* Updated: 2025/04/18 11:21:21 by whaffman ######## odam.nl */
/* Updated: 2025/04/20 14:00:47 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#include "render.h"
#include "MLX42.h"
int render_check_bounds(t_screen *screen, t_vec2 *point)
int render_check_bounds(t_screen *screen, t_vec2 *point)
{
return (point->x >= 0 && point->x < screen->width && point->y > 0 && point->y < screen->height);
}
void render_tile(t_screen *screen, int x, int y, t_tile tile)
void render_tile(t_screen *screen, int x, int y, t_tile tile)
{
int i;
int xp;
int yp;
int i;
int xp;
int yp;
i = 0;
if (tile == 0)
return ;
return;
while ((i++) < TILE_SIZE * TILE_SIZE)
{
xp = x + (i % TILE_SIZE);
@ -38,17 +38,16 @@ void render_tile(t_screen *screen, int x, int y, t_tile tile)
}
}
void render_map(t_screen *screen, t_map *map)
void render_map(t_screen *screen, t_map *map)
{
int i;
int x;
int y;
int i;
int x;
int y;
i = 0;
while (i < map->width * map->height)
{
x = i % map->width;
y = i / map->height;
y = i / map->width;
if (x < 0 || x >= map->width || y < 0 || y >= map->height)
continue;
render_tile(screen, x * TILE_SIZE, y * TILE_SIZE, map->grid[y][x]);
@ -56,7 +55,7 @@ void render_map(t_screen *screen, t_map *map)
}
}
void render_entities(t_game *game)
void render_entities(t_game *game)
{
player_render(game->screen, game->player);
}