From da452769c28bc5cb75c22860e3b85c390f57a6cb Mon Sep 17 00:00:00 2001 From: Etienne Rey-bethbeder Date: Tue, 2 May 2023 15:39:16 +0200 Subject: [PATCH] _ --- .nfs000000000a9b04da0000001b | Bin 173416 -> 0 bytes game/game.c | 25 ++++++++--------- game/game.h | 17 +++++++++++- game/init.c | 51 ++++++++++++----------------------- game/manage_keys.c | 30 +++++++++++++-------- game/raycasting.c | 21 ++++++++++++++- 6 files changed, 83 insertions(+), 61 deletions(-) delete mode 100755 .nfs000000000a9b04da0000001b diff --git a/.nfs000000000a9b04da0000001b b/.nfs000000000a9b04da0000001b deleted file mode 100755 index fddfc816f1d24618d05cb0f4a654a7cddef8ecab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173416 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 L|15Q&kA?pSF@384 diff --git a/game/game.c b/game/game.c index 8a7a1f5..1117d6c 100644 --- a/game/game.c +++ b/game/game.c @@ -6,7 +6,7 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/26 12:59:53 by erey-bet #+# #+# */ -/* Updated: 2023/04/27 14:52:17 by erey-bet ### ########.fr */ +/* Updated: 2023/04/28 16:23:57 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,28 +14,25 @@ int start_game(t_map *map) { - t_game *game; + t_game game; - game = init(map); - if (!game) + if (init(map, &game)) return (1); - if (!game->mlx) - return (1); - game->window = mlx_new_image(game->mlx, 128, 128); - if (!game->window) + game.window = mlx_new_image(game.mlx, WIDTH, HEIGHT); + if (!game.window) { - mlx_close_window(game->mlx); + mlx_close_window(game.mlx); return(1); } - if (mlx_image_to_window(game->mlx, game->window, 0, 0) == -1) + if (mlx_image_to_window(game.mlx, game.window, 0, 0) == -1) { - mlx_close_window(game->mlx); + mlx_close_window(game.mlx); return(1); } - mlx_key_hook(game->mlx, manage, game); - mlx_loop(game->mlx); - mlx_terminate(game->mlx); + mlx_key_hook(game.mlx, manage, &game); + mlx_loop(game.mlx); + mlx_terminate(game.mlx); return (0); } diff --git a/game/game.h b/game/game.h index f56db8b..841cb55 100644 --- a/game/game.h +++ b/game/game.h @@ -6,7 +6,7 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/26 15:29:34 by erey-bet #+# #+# */ -/* Updated: 2023/04/27 14:52:04 by erey-bet ### ########.fr */ +/* Updated: 2023/05/02 15:32:43 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,19 +14,34 @@ # define GAME_H # include "../cube3D.h" +# include + +# define WIDTH 1920 +# define HEIGHT 1080 typedef struct s_player { double pos_x; double pos_y; + double dir_x; + double dir_y; + double pla_x; + double pla_y; } t_ply; +typedef struct s_raycast +{ + double x; + double y; +} t_ray; + typedef struct s_game { mlx_t *mlx; mlx_image_t *window; t_ply *ply; t_map *map; + t_ray *ray; } t_game; /* INIT */ diff --git a/game/init.c b/game/init.c index 4cf0a0f..f343418 100644 --- a/game/init.c +++ b/game/init.c @@ -6,49 +6,32 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/27 14:50:22 by erey-bet #+# #+# */ -/* Updated: 2023/04/27 15:08:25 by erey-bet ### ########.fr */ +/* Updated: 2023/05/02 15:18:05 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ #include "game.h" -int check_free(t_game *game) +void init_ply(t_map *map, t_ply *ply) { - 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) +void init_ray(t_ray *ray) { - 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); + ray->x = 0; + ray->y = 0; +} + +void init(t_map *map, t_game &game) +{ + t_ply ply; + t_ray ray; + + game.mlx = mlx_init(WIDTH, HEIGHT, "jan lili", true); + if (!game.mlx) + return (NULL); + game.map = map; + init_ply(map, &ply); } diff --git a/game/manage_keys.c b/game/manage_keys.c index ca7de19..d58fcd7 100644 --- a/game/manage_keys.c +++ b/game/manage_keys.c @@ -6,15 +6,22 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/27 14:14:51 by erey-bet #+# #+# */ -/* Updated: 2023/04/27 14:35:39 by erey-bet ### ########.fr */ +/* Updated: 2023/04/28 12:50:21 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ #include "game.h" -int movement(double *to_add, double add) +int movement(t_ply *ply, int key) { - *to_add += add; + else if (key == MLX_KEY_W) + ply->pos_y -= 0.1; + else if (key == MLX_KEY_S) + ply->pos_y += 0.1; + else if (key == MLX_KEY_D) + ply->pos_x += 0.1; + else if (key == MLX_KEY_A) + ply->pos_x -= 0.1; return (1); } @@ -25,14 +32,15 @@ int manage_keys(mlx_key_data_t keys, t_game *game) 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); + else if (keys.key == MLX_KEY_W + || keys.key == MLX_KEY_S + || keys.key == MLX_KEY_D + || keys.key == MLX_KEY_A) + is_moving = movement(game->ply, keys.key); + /*else if (key.key == MLX_KEY_RIGHT) + game->ply->direc += 0.1; + else if (key.key == MLX_KEY_LEFT) + game->ply->direc -= 0.1;*/ if (is_moving) return (1); return (0); diff --git a/game/raycasting.c b/game/raycasting.c index ae354f7..b46b795 100644 --- a/game/raycasting.c +++ b/game/raycasting.c @@ -6,15 +6,34 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/27 14:30:29 by erey-bet #+# #+# */ -/* Updated: 2023/04/27 14:36:06 by erey-bet ### ########.fr */ +/* Updated: 2023/05/02 13:12:15 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ #include "game.h" +int ray(t_game *game) +{ + t_ply *p; + t_ray *ray; + double camera; + int i; + + i = 0; + p = game->ply; + ray = game->ray; + while (i <= WIDTH) + { + camera = 2 * i / (double)WIDTH - 1; //x-coordinate in camera space + ray->x = p->dir_x + p->pla_x * camera; + ray->y = p->dir_y + p->pla_y * camera; + } +} + int raycasting(t_game *game) { (void)game; + ray(game) write(1, "raycasting...\n", 14); return (0); }