diff --git a/.gitignore b/.gitignore index c6127b3..9b2387a 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,8 @@ modules.order Module.symvers Mkfile.old dkms.conf + +# Files +Libft +Minilibx +.vscode diff --git a/algo.c b/algo.c index 569e103..4c40eb5 100644 --- a/algo.c +++ b/algo.c @@ -6,7 +6,7 @@ /* By: greg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/10/01 16:24:58 by grobledo #+# #+# */ -/* Updated: 2024/10/10 18:22:08 by greg ### ########.fr */ +/* Updated: 2024/10/11 05:16:06 by greg ### ########.fr */ /* */ /* ************************************************************************** */ @@ -61,7 +61,8 @@ static int render(t_ray *ray) int x; double width = 640; double height = 480; - int mapX, mapY, hit, side; + int hit; + int side; int *img_data = (int *)mlx_get_data_addr(ray->img_ptr, &(int){32}, &(int){width * 4}, &(int){0}); // clear image data @@ -75,8 +76,8 @@ static int render(t_ray *ray) ray->raydirX = ray->dirX + ray->planeX * ray->cameraX; ray->raydirY = ray->dirY + ray->planeY * ray->cameraX; - mapX = (int)ray->posX; - mapY = (int)ray->posY; + ray->mapX = (int)ray->posX; + ray->mapY = (int)ray->posY; ray->deltadistX = (ray->raydirX == 0) ? 1e30 : fabs(1 / ray->raydirX); ray->deltadistY = (ray->raydirY == 0) ? 1e30 : fabs(1 / ray->raydirY); @@ -85,22 +86,22 @@ static int render(t_ray *ray) if (ray->raydirX < 0) { ray->stepX = -1; - ray->sidedistX = (ray->posX - mapX) * ray->deltadistX; + ray->sidedistX = (ray->posX - ray->mapX) * ray->deltadistX; } else { ray->stepX = 1; - ray->sidedistX = (mapX + 1.0 - ray->posX) * ray->deltadistX; + ray->sidedistX = (ray->mapX + 1.0 - ray->posX) * ray->deltadistX; } if (ray->raydirY < 0) { ray->stepY = -1; - ray->sidedistY = (ray->posY - mapY) * ray->deltadistY; + ray->sidedistY = (ray->posY - ray->mapY) * ray->deltadistY; } else { ray->stepY = 1; - ray->sidedistY = (mapY + 1.0 - ray->posY) * ray->deltadistY; + ray->sidedistY = (ray->mapY + 1.0 - ray->posY) * ray->deltadistY; } hit = 0; @@ -110,17 +111,17 @@ static int render(t_ray *ray) if(ray->sidedistX < ray->sidedistY) { ray->sidedistX += ray->deltadistX; - mapX += ray->stepX; + ray->mapX += ray->stepX; side = 0; } else { ray->sidedistY += ray->deltadistY; - mapY += ray->stepY; + ray->mapY += ray->stepY; side = 1; } //Check if ray has hit a wall - if(worldMap[mapX][mapY] == 1) + if(worldMap[ray->mapX][ray->mapY] == 1) hit = 1; } if(side == 0) @@ -139,12 +140,25 @@ static int render(t_ray *ray) drawEnd = height - 1; // draw vertical line - int y = drawStart; + int y = 0; + while (y <= drawStart) + { + img_data[y * (int)width + x] = 0x29f8ff;; + y++; + } + y = drawStart; while (y <= drawEnd) { img_data[y * (int)width + x] = 0xFF0000; y++; } + y++; + while (y <= height) + { + img_data[y * (int)width + x] = 0xFF985C; + y++; + } + x++; } @@ -158,14 +172,18 @@ static int keypress(int keycode, t_ray *ray) //move forward if no wall in front of you if (keycode == 119) { - ray->posX += ray->dirX * ray->movespeed; - ray->posY += ray->dirY * ray->movespeed; + if (worldMap[(int)((ray->posX + ray->dirX * ray->movespeed))][(int)(ray->posY)] != 1) + ray->posX += ray->dirX * ray->movespeed; + if (worldMap[(int)(ray->posX)][(int)(ray->posY + ray->dirY * ray->movespeed)] != 1) + ray->posY += ray->dirY * ray->movespeed; } //move backwards if no wall behind you if (keycode == 115) { - ray->posX -= ray->dirX * ray->movespeed; - ray->posY -= ray->dirY * ray->movespeed; + if (worldMap[(int)(ray->posX - ray->dirX * ray->movespeed)][(int)(ray->posY)] != 1) + ray->posX -= ray->dirX * ray->movespeed; + if (worldMap[(int)(ray->posX)][(int)(ray->posY - ray->dirY * ray->movespeed)] != 1) + ray->posY -= ray->dirY * ray->movespeed; } //rotate to the right if (keycode == 100) @@ -189,6 +207,9 @@ static int keypress(int keycode, t_ray *ray) ray->planeX = ray->planeX * cos(ray->rotspeed) - ray->planeY * sin(ray->rotspeed); ray->planeY = ray->oldPlaneX * sin(ray->rotspeed) + ray->planeY * cos(ray->rotspeed); } + + if (keycode == 65307) + exit(0); // render the updated frame after key press render(ray); return (0); diff --git a/algo.h b/algo.h index bae8383..3b5585c 100644 --- a/algo.h +++ b/algo.h @@ -6,7 +6,7 @@ /* By: greg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/30 15:45:59 by grobledo #+# #+# */ -/* Updated: 2024/10/10 17:53:01 by greg ### ########.fr */ +/* Updated: 2024/10/11 04:32:39 by greg ### ########.fr */ /* */ /* ************************************************************************** */ @@ -56,6 +56,8 @@ typedef struct s_ray void *win_ptr; void *img_ptr; int *img_data; + int mapX; + int mapY; } t_ray; #endif diff --git a/cub3d b/cub3d deleted file mode 100755 index e95c3fc..0000000 Binary files a/cub3d and /dev/null differ