diff --git a/.nfs000000000a9b04da0000001b b/.nfs000000000a9b04da0000001b deleted file mode 100755 index fddfc81..0000000 Binary files a/.nfs000000000a9b04da0000001b and /dev/null differ 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); }