diff --git a/.nfs000000000a9b04da0000001b b/.nfs000000000a9b04da0000001b new file mode 100755 index 0000000..fddfc81 Binary files /dev/null and b/.nfs000000000a9b04da0000001b differ diff --git a/Makefile b/Makefile index 8510737..60850ed 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,10 @@ -SRCS_GAME = main.c game/game.c +SRCS_GAME = main.c game/game.c game/init.c game/manage.c \ +game/manage_keys.c game/raycasting.c SRCS_PARSING = OBJS = ${SRCS_GAME:.c=.o} ${SRCS_PARSING:.c=.o} CC = clang LIBS = libftx/libftx.a MLX42/build/libmlx42.a -ldl -lglfw -lm -CFLAGS = -g -Wall -Wextra -Werror -Wno-conversion -Ofast +CFLAGS = -g -Wall -Wextra -Werror NAME = cub3D all: ${NAME} diff --git a/cube3D.h b/cube3D.h index e3fa20c..f55884f 100644 --- a/cube3D.h +++ b/cube3D.h @@ -6,19 +6,21 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/26 12:34:04 by erey-bet #+# #+# */ -/* Updated: 2023/04/26 15:20:47 by erey-bet ### ########.fr */ +/* Updated: 2023/04/27 14:41:37 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef CUBE3D_H # define CUBE3D_H +# include "libftx/libftx.h" # include # include "MLX42/include/MLX42/MLX42.h" # include # include # include # include +# include // img: 0=Nord, 1=WEST, 2=SUD, 3=EAST; @@ -30,8 +32,11 @@ typedef struct s_map void *img[4]; long color_bot; long color_top; + double ply_x; + double ply_y; } t_map; +/*INIT*/ t_map *map_parsing(char *path); int start_game(t_map *map); diff --git a/game/game.c b/game/game.c index 3eb3e19..8a7a1f5 100644 --- a/game/game.c +++ b/game/game.c @@ -6,22 +6,23 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/26 12:59:53 by erey-bet #+# #+# */ -/* Updated: 2023/04/26 15:44:55 by erey-bet ### ########.fr */ +/* Updated: 2023/04/27 14:52:17 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../cube3D.h" +#include "game.h" int start_game(t_map *map) { t_game *game; - (void)map; - game->mlx = mlx_init(1920, 1080, "jan lili", true) - if (mlx) + game = init(map); + if (!game) + return (1); + if (!game->mlx) return (1); game->window = mlx_new_image(game->mlx, 128, 128); - if (game->image) + if (!game->window) { mlx_close_window(game->mlx); return(1); @@ -32,7 +33,7 @@ int start_game(t_map *map) return(1); } - mlx_loop_hook(game->mlx, manage, game) + mlx_key_hook(game->mlx, manage, game); mlx_loop(game->mlx); mlx_terminate(game->mlx); diff --git a/game/game.h b/game/game.h index d51d761..f56db8b 100644 --- a/game/game.h +++ b/game/game.h @@ -6,13 +6,15 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/26 15:29:34 by erey-bet #+# #+# */ -/* Updated: 2023/04/26 15:38:47 by erey-bet ### ########.fr */ +/* Updated: 2023/04/27 14:52:04 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef GAME_H # define GAME_H +# include "../cube3D.h" + typedef struct s_player { double pos_x; @@ -22,8 +24,21 @@ typedef struct s_player typedef struct s_game { mlx_t *mlx; - mlx_image_t *windows; + mlx_image_t *window; t_ply *ply; + t_map *map; } t_game; +/* INIT */ +t_game *init(t_map *map); + +/* MANAGE */ +void manage(mlx_key_data_t keydata, void *param); + +/* KEYS */ +int manage_keys(mlx_key_data_t keydata, t_game *game); + +/* RAYCASTING */ +int raycasting(t_game *game); + #endif diff --git a/game/init.c b/game/init.c new file mode 100644 index 0000000..4cf0a0f --- /dev/null +++ b/game/init.c @@ -0,0 +1,54 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* init.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/04/27 14:50:22 by erey-bet #+# #+# */ +/* Updated: 2023/04/27 15:08:25 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "game.h" + +int check_free(t_game *game) +{ + if (!game->mlx || !game->ply) + { + if (game->mlx) + free(game->mlx); + if (game->ply) + free(game->ply); + free(game); + return (1); + } + return (0); +} + +t_ply *init_ply(t_map *map) +{ + t_ply *ply; + + ply = malloc(sizeof(t_ply)); + if (!ply) + return (NULL); + ply->pos_x = map->ply_x; + ply->pos_y = map->ply_y; + return (ply); +} + +t_game *init(t_map *map) +{ + t_game *game; + + game = malloc(sizeof(game)); + if (!game) + return (NULL); + game->mlx = mlx_init(1920, 1080, "jan lili", true); + game->map = map; + game->ply = init_ply(map); + if (check_free(game)) + return (NULL); + return (game); +} diff --git a/game/manage.c b/game/manage.c new file mode 100644 index 0000000..8779232 --- /dev/null +++ b/game/manage.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* manage.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/04/27 12:52:14 by erey-bet #+# #+# */ +/* Updated: 2023/04/27 14:31:50 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "game.h" + +void manage(mlx_key_data_t keydata, void *param) +{ + t_game *game; + + game = param; + if (manage_keys(keydata, game)) + raycasting(game); +} diff --git a/game/manage_keys.c b/game/manage_keys.c new file mode 100644 index 0000000..ca7de19 --- /dev/null +++ b/game/manage_keys.c @@ -0,0 +1,39 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* manage_keys.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/04/27 14:14:51 by erey-bet #+# #+# */ +/* Updated: 2023/04/27 14:35:39 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "game.h" + +int movement(double *to_add, double add) +{ + *to_add += add; + return (1); +} + +int manage_keys(mlx_key_data_t keys, t_game *game) +{ + int is_moving; + + is_moving = 0; + if (keys.key == MLX_KEY_ESCAPE) + mlx_close_window(game->mlx); + else if (keys.key == MLX_KEY_W) + is_moving = movement(&game->ply->pos_y, -0.1); + else if (keys.key == MLX_KEY_S) + is_moving = movement(&game->ply->pos_y, 0.1); + else if (keys.key == MLX_KEY_D) + is_moving = movement(&game->ply->pos_x, 0.1); + else if (keys.key == MLX_KEY_A) + is_moving = movement(&game->ply->pos_x, -0.1); + if (is_moving) + return (1); + return (0); +} diff --git a/game/raycasting.c b/game/raycasting.c new file mode 100644 index 0000000..ae354f7 --- /dev/null +++ b/game/raycasting.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* raycasting.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/04/27 14:30:29 by erey-bet #+# #+# */ +/* Updated: 2023/04/27 14:36:06 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "game.h" + +int raycasting(t_game *game) +{ + (void)game; + write(1, "raycasting...\n", 14); + return (0); +} diff --git a/main.c b/main.c index cbd44ce..9b3a504 100644 --- a/main.c +++ b/main.c @@ -6,7 +6,7 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/26 12:44:55 by erey-bet #+# #+# */ -/* Updated: 2023/04/26 15:20:32 by erey-bet ### ########.fr */ +/* Updated: 2023/04/27 14:43:10 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,6 +36,8 @@ int main(int argc, char **argv) map->map[4] = "11111"; map->size_x = 5; map->size_y = 5; + map->ply_x = 3; + map->ply_y = 3; if (start_game(map)) { return (3);