1
0

🔨」 fix(Raycasting): Working as expected

This commit is contained in:
2024-11-06 14:00:06 +01:00
parent d99bc18bd0
commit bd7c64825a
9 changed files with 110 additions and 46 deletions

View File

@ -6,7 +6,7 @@
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/10/04 14:06:39 by adjoly #+# #+# */
/* Updated: 2024/11/02 15:55:02 by adjoly ### ########.fr */
/* Updated: 2024/11/06 13:19:25 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
@ -29,5 +29,6 @@
# define FOV 70
# define CHUNK_SIZE 64
# define TEXTURE_SIZE 128
#endif

23
includes/utils.h Normal file
View File

@ -0,0 +1,23 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* utils.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/11/06 13:03:02 by adjoly #+# #+# */
/* Updated: 2024/11/06 13:21:21 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef UTILS_H
# define UTILS_H
# include "parsing.h"
# include "game/game.h"
t_player init_player(t_pars parsing);
t_map init_world(t_pars parsing);
void init_texture(t_render *render, t_pars parsing);
#endif

BIN
leflo.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@ -1,10 +1,10 @@
NO ./no_texture.png
NO ./leflo.png
SO ./so_texture.png
SO ./leflo.png
WE ./we_texture.png
EA ./ea_texture.png
WE ./leflo.png
EA ./leflo.png
C 255,100,200
F 50,0,250
@ -13,7 +13,6 @@ F 50,0,250
111111
11111111111111
111111111111
0 11101
1111111111111111
111111111111111
111111111111111111111111

View File

@ -6,16 +6,19 @@
/* By: madumerg <madumerg@42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/09/04 16:58:27 by madumerg #+# #+# */
/* Updated: 2024/11/06 12:53:52 by adjoly ### ########.fr */
/* Updated: 2024/11/06 13:43:14 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
#include "cub3d.h"
#include "game/game.h"
#include "game/settings.h"
#include "game/vectwo.h"
#include "libft.h"
#include "mlx.h"
#include "parsing.h"
#include <stdlib.h>
#include "utils.h"
int loop(void *param)
{
@ -34,27 +37,29 @@ int main(int ac, char **av)
t_render render;
t_map world;
t_player player;
t_pars parsing;
render.player = &player;
render.world = &world;
world.celling = 0xffffa07a;
world.floor = 0xffadd8e6;
world.arr = ft_split("11111 10001 10001 10001 11111", ' ');
world.size.x = 5;
world.size.y = 5;
player.coord.x = 2 * CHUNK_SIZE;
player.coord.y = 3 * CHUNK_SIZE;
player.direction = 0;
parsing = init_pars();
if (basics_check(ac, av, &parsing))
return (EXIT_FAILURE);
render.mlx = mlx_init();
render.win = mlx_new_window(render.mlx, WINDOW_W, WINDOW_H, "WTF");
player = init_player(parsing);
world = init_world(parsing);
render.player = &player;
render.world = &world;
init_texture(&render, parsing);
render.img = mlx_new_image(render.mlx, WINDOW_W, WINDOW_H);
(void)ac;
(void)av;
mlx_on_event(render.mlx, render.win, MLX_KEYDOWN, key_hook, &render);
mlx_loop_hook(render.mlx, loop, &render);
mlx_loop(render.mlx);
mlx_destroy_image(render.mlx, render.img);
mlx_destroy_image(render.mlx, render.texture[0]);
mlx_destroy_image(render.mlx, render.texture[1]);
mlx_destroy_image(render.mlx, render.texture[2]);
mlx_destroy_image(render.mlx, render.texture[3]);
mlx_destroy_window(render.mlx, render.win);
mlx_destroy_display(render.mlx);
return (0);
free_pars(&parsing);
return (EXIT_SUCCESS);
}

View File

@ -1,21 +0,0 @@
void f_c_color(void *mlx, void *win, t_pars *pars)
{
int x;
int y;
x = 0;
y = 0;
while (y <= (400 / 2)) //changer 400 par le define
{
x = 0;
while (x <= 800) //changer 800 par le define
{
mlx_pixel_put(mlx, win, x, y, pars->c_color);
mlx_pixel_put(mlx, win, x, 400 - y, pars->f_color); // changer 400 par le define
x++;
}
y++;
}
}

View File

@ -6,7 +6,7 @@
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/10/07 16:55:09 by adjoly #+# #+# */
/* Updated: 2024/11/06 12:34:58 by adjoly ### ########.fr */
/* Updated: 2024/11/06 13:21:38 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
@ -68,7 +68,8 @@ void setup_dda_hor(t_player *play, t_ray *ray, t_dda *dda)
void dda_loop(t_dda *dda, t_ray *ray, t_map *map, t_player *play)
{
while (dda->s && dda->i) {
while (dda->s && dda->i)
{
dda->map.x = (ray->pos.x / 64);
dda->map.y = (ray->pos.y / 64);
if (dda->map.x >= 0 && dda->map.x < map->size.x && dda->map.y >= 0 && \

View File

@ -6,7 +6,7 @@
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/10/28 15:48:39 by adjoly #+# #+# */
/* Updated: 2024/11/06 11:59:23 by madumerg ### ########.fr */
/* Updated: 2024/11/06 13:57:29 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
@ -66,10 +66,11 @@ void print_line(t_render *render, t_ray *ray, int x)
if (line_start < 0)
line_start = 0;
if (line_stop > WINDOW_H)
line_stop = WINDOW_H - 1;
line_stop = WINDOW_H;
while (line_start < line_stop)
{
mlx_set_image_pixel(render->mlx, render->img, x, line_start, WHITE);
if (x < WINDOW_W && x >= 0)
mlx_set_image_pixel(render->mlx, render->img, x, line_start, WHITE);
line_start++;
}
}

View File

@ -0,0 +1,55 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* convert_parsing.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/11/06 13:01:03 by adjoly #+# #+# */
/* Updated: 2024/11/06 13:44:16 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
#include "game/settings.h"
#include "mlx.h"
#include "parsing.h"
#include "game/game.h"
t_player init_player(t_pars parsing)
{
t_player player;
player.coord.x = parsing.coor.x * CHUNK_SIZE + (CHUNK_SIZE / 2);
player.coord.y = parsing.coor.y * CHUNK_SIZE + (CHUNK_SIZE / 2);
if (parsing.l_player == 'N')
player.direction = M_PI / 2;
else if (parsing.l_player == 'S')
player.direction = -(M_PI / 2);
else if (parsing.l_player == 'W')
player.direction = M_PI;
else if (parsing.l_player == 'E')
player.direction = 0;
return (player);
}
t_map init_world(t_pars parsing)
{
t_map map;
map.arr = parsing.map;
map.size.x = ft_strlen(parsing.map[0]);
map.size.y = ft_count_line_map(parsing.map, 0);
map.floor = parsing.f_color;
map.celling = parsing.c_color;
return (map);
}
void init_texture(t_render *render, t_pars parsing)
{
int i;
render->texture[0] = mlx_png_file_to_image(render->mlx, parsing.no_png, &i, &i);
render->texture[1] = mlx_png_file_to_image(render->mlx, parsing.we_png, &i, &i);
render->texture[2] = mlx_png_file_to_image(render->mlx, parsing.so_png, &i, &i);
render->texture[3] = mlx_png_file_to_image(render->mlx, parsing.ea_png, &i, &i);
}