parser er in gefrutseld
This commit is contained in:
parent
df46797def
commit
8f9347d2e7
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@ -4,5 +4,6 @@
|
|||||||
"cub3d.h": "c",
|
"cub3d.h": "c",
|
||||||
"screen.h": "c",
|
"screen.h": "c",
|
||||||
"mlx42.h": "c"
|
"mlx42.h": "c"
|
||||||
}
|
},
|
||||||
|
"cmake.ignoreCMakeListsMissing": true
|
||||||
}
|
}
|
||||||
17
inc/map.h
17
inc/map.h
@ -1,12 +1,12 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* ::: :::::::: */
|
/* :::::::: */
|
||||||
/* map.h :+: :+: :+: */
|
/* map.h :+: :+: */
|
||||||
/* +:+ +:+ +:+ */
|
/* +:+ */
|
||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/04/17 19:19:19 by qmennen #+# #+# */
|
/* Created: 2025/04/17 19:19:19 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/04/17 19:23:59 by qmennen ### ########.fr */
|
/* Updated: 2025/04/20 13:51:19 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -15,7 +15,8 @@
|
|||||||
|
|
||||||
# include "cub3d.h"
|
# 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 map_free(t_map *map);
|
||||||
|
void print_map(t_map *map);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/04/19 14:41:55 by whaffman #+# #+# */
|
/* 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_tile(char c);
|
||||||
int parse_map(char **lines, t_map *map);
|
int parse_map(char **lines, t_map *map);
|
||||||
int parse_file(char *buffer, t_map *map);
|
int parse_file(char *buffer, t_map *map);
|
||||||
void print_map(t_map *map);
|
void print_config(t_map *map);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
111
src/main.c
111
src/main.c
@ -6,65 +6,66 @@
|
|||||||
/* 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/19 14:47:19 by whaffman ######## odam.nl */
|
/* Updated: 2025/04/20 13:46:26 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
# include "cub3d.h"
|
# include "cub3d.h"
|
||||||
|
|
||||||
// static int init_game(t_game **game)
|
static int init_game(t_game **game, int argc, char **argv)
|
||||||
// {
|
|
||||||
// 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)
|
|
||||||
{
|
{
|
||||||
t_map map;
|
if (!game_create(game))
|
||||||
char *buffer;
|
return (FAILURE);
|
||||||
|
if (!player_create(game))
|
||||||
if (argc != 2)
|
return (FAILURE);
|
||||||
{
|
if (!map_create(game, argc, argv))
|
||||||
ft_putstr_fd("Usage: ./cub3d <map.cub>\n", 2);
|
return (FAILURE);
|
||||||
return (1);
|
if (!keyboard_create(game))
|
||||||
}
|
return (FAILURE);
|
||||||
buffer = read_map_file(argv[1]);
|
screen_center((*game)->screen);
|
||||||
if (!buffer)
|
mlx_key_hook((*game)->screen->mlx, keyhandle, *game);
|
||||||
{
|
mlx_loop_hook((*game)->screen->mlx, game_loop, *game);
|
||||||
perror("Error reading map file");
|
return (SUCCESS);
|
||||||
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
159
src/map.c
@ -8,72 +8,72 @@
|
|||||||
#define SUCCESS 1
|
#define SUCCESS 1
|
||||||
|
|
||||||
|
|
||||||
t_map *get_temp_map(void)
|
// 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)
|
|
||||||
// {
|
// {
|
||||||
// const int chars[] = {'X', ' ', '.', '#', 'P'};
|
// const t_tile const_map[10][10] =
|
||||||
// int i = 0;
|
|
||||||
// while (i < map->height)
|
|
||||||
// {
|
|
||||||
// int j = 0;
|
|
||||||
// while (j < map->width)
|
|
||||||
// {
|
// {
|
||||||
// printf("%c ", chars[map->grid[i][j] + 2]);
|
// {-1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
|
||||||
// j++;
|
// {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)
|
void free_map(t_map **map)
|
||||||
{
|
{
|
||||||
if (!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;
|
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);
|
print_map(map);
|
||||||
if(!enclosed_map(map))
|
if(!enclosed_map(map))
|
||||||
fprintf(stderr, "NOT GOOD MAP FRIEND\n");
|
fprintf(stderr, "NOT GOOD MAP FRIEND\n");
|
||||||
|
|||||||
27
src/parser.c
27
src/parser.c
@ -6,7 +6,7 @@
|
|||||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/04/18 11:29:58 by whaffman #+# #+# */
|
/* 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("Map:\n");
|
||||||
printf("Width: %d, Height: %d\n", map->width, map->height);
|
printf("Width: %d, Height: %d\n", map->width, map->height);
|
||||||
printf("Textures:\n");
|
printf("Textures:\n");
|
||||||
@ -263,23 +260,5 @@ void print_map(t_map *map)
|
|||||||
printf("Ceiling color: %u\n", map->ceiling_color);
|
printf("Ceiling color: %u\n", map->ceiling_color);
|
||||||
printf("Grid:\n");
|
printf("Grid:\n");
|
||||||
|
|
||||||
i = 0;
|
print_map(map);
|
||||||
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++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,27 +6,27 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/04/15 16:28:10 by qmennen #+# #+# */
|
/* 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 "render.h"
|
||||||
#include "MLX42.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);
|
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 i;
|
||||||
int xp;
|
int xp;
|
||||||
int yp;
|
int yp;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
if (tile == 0)
|
if (tile == 0)
|
||||||
return ;
|
return;
|
||||||
while ((i++) < TILE_SIZE * TILE_SIZE)
|
while ((i++) < TILE_SIZE * TILE_SIZE)
|
||||||
{
|
{
|
||||||
xp = x + (i % 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 i;
|
||||||
int x;
|
int x;
|
||||||
int y;
|
int y;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
while (i < map->width * map->height)
|
while (i < map->width * map->height)
|
||||||
{
|
{
|
||||||
x = i % map->width;
|
x = i % map->width;
|
||||||
y = i / map->height;
|
y = i / map->width;
|
||||||
if (x < 0 || x >= map->width || y < 0 || y >= map->height)
|
if (x < 0 || x >= map->width || y < 0 || y >= map->height)
|
||||||
continue;
|
continue;
|
||||||
render_tile(screen, x * TILE_SIZE, y * TILE_SIZE, map->grid[y][x]);
|
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);
|
player_render(game->screen, game->player);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user