From 061d583b3f27f56851be2348877246e84df74258 Mon Sep 17 00:00:00 2001 From: Quinten Mennen Date: Tue, 15 Apr 2025 19:51:22 +0200 Subject: [PATCH] we can move and rotate --- inc/player.h | 1 + src/keyhandle.c | 5 ++++- src/player.c | 20 ++++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/inc/player.h b/inc/player.h index e5ac559..712fd84 100644 --- a/inc/player.h +++ b/inc/player.h @@ -16,6 +16,7 @@ # include "cub3d.h" int player_create(t_game **game); +void player_move(keys_t key, t_player *player); void player_render(t_screen *screen, t_player *player); #endif diff --git a/src/keyhandle.c b/src/keyhandle.c index d414c45..bcf6a13 100644 --- a/src/keyhandle.c +++ b/src/keyhandle.c @@ -17,6 +17,9 @@ void keyhandle(mlx_key_data_t keydata, void *param) t_game *game; game = (t_game *)param; - if (keydata.key == MLX_KEY_ESCAPE) + if (keydata.key == MLX_KEY_W || keydata.key == MLX_KEY_S + || keydata.key == MLX_KEY_LEFT || keydata.key == MLX_KEY_RIGHT) + player_move(keydata.key, game->player); + else if (keydata.key == MLX_KEY_ESCAPE) game_terminate(game); } diff --git a/src/player.c b/src/player.c index e365f9d..2fa10f8 100644 --- a/src/player.c +++ b/src/player.c @@ -29,7 +29,27 @@ int player_create(t_game **game) return (SUCCESS); } +void player_move(keys_t key, t_player *player) +{ + if (key == MLX_KEY_W) + { + player->pos.x += cos(player->angle) * player->speed; + player->pos.y += sin(player->angle) * player->speed; + } + else if (key == MLX_KEY_S) + { + player->pos.x -= cos(player->angle) * player->speed; + player->pos.y -= sin(player->angle) * player->speed; + } + else if (key == MLX_KEY_LEFT) + player->angle -= .1f; + else if (key == MLX_KEY_RIGHT) + player->angle += .1f; +} + void player_render(t_screen *screen, t_player *player) { + if (player->pos.x < 0 || player->pos.x >= screen->width || player->pos.y < 0 || player->pos.y >= screen->height) + return ; mlx_put_pixel(screen->img, (int) player->pos.x, (int) player->pos.y, 0xFFFFFFFF); }