「🔨」 fix(Raycasting): Working as expected
This commit is contained in:
@ -6,7 +6,7 @@
|
|||||||
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/10/04 14:06:39 by adjoly #+# #+# */
|
/* 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 FOV 70
|
||||||
|
|
||||||
# define CHUNK_SIZE 64
|
# define CHUNK_SIZE 64
|
||||||
|
# define TEXTURE_SIZE 128
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
23
includes/utils.h
Normal file
23
includes/utils.h
Normal 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
BIN
leflo.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 6.4 KiB |
9
map.cub
9
map.cub
@ -1,10 +1,10 @@
|
|||||||
NO ./no_texture.png
|
NO ./leflo.png
|
||||||
|
|
||||||
|
|
||||||
SO ./so_texture.png
|
SO ./leflo.png
|
||||||
|
|
||||||
WE ./we_texture.png
|
WE ./leflo.png
|
||||||
EA ./ea_texture.png
|
EA ./leflo.png
|
||||||
C 255,100,200
|
C 255,100,200
|
||||||
F 50,0,250
|
F 50,0,250
|
||||||
|
|
||||||
@ -13,7 +13,6 @@ F 50,0,250
|
|||||||
111111
|
111111
|
||||||
11111111111111
|
11111111111111
|
||||||
111111111111
|
111111111111
|
||||||
0 11101
|
|
||||||
1111111111111111
|
1111111111111111
|
||||||
111111111111111
|
111111111111111
|
||||||
111111111111111111111111
|
111111111111111111111111
|
||||||
|
33
src/cub3d.c
33
src/cub3d.c
@ -6,16 +6,19 @@
|
|||||||
/* By: madumerg <madumerg@42angouleme.fr> +#+ +:+ +#+ */
|
/* By: madumerg <madumerg@42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/09/04 16:58:27 by madumerg #+# #+# */
|
/* 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 "cub3d.h"
|
||||||
#include "game/game.h"
|
#include "game/game.h"
|
||||||
#include "game/settings.h"
|
#include "game/settings.h"
|
||||||
|
#include "game/vectwo.h"
|
||||||
#include "libft.h"
|
#include "libft.h"
|
||||||
#include "mlx.h"
|
#include "mlx.h"
|
||||||
|
#include "parsing.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
int loop(void *param)
|
int loop(void *param)
|
||||||
{
|
{
|
||||||
@ -34,27 +37,29 @@ int main(int ac, char **av)
|
|||||||
t_render render;
|
t_render render;
|
||||||
t_map world;
|
t_map world;
|
||||||
t_player player;
|
t_player player;
|
||||||
|
t_pars parsing;
|
||||||
|
|
||||||
render.player = &player;
|
parsing = init_pars();
|
||||||
render.world = &world;
|
if (basics_check(ac, av, &parsing))
|
||||||
world.celling = 0xffffa07a;
|
return (EXIT_FAILURE);
|
||||||
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;
|
|
||||||
render.mlx = mlx_init();
|
render.mlx = mlx_init();
|
||||||
render.win = mlx_new_window(render.mlx, WINDOW_W, WINDOW_H, "WTF");
|
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);
|
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_on_event(render.mlx, render.win, MLX_KEYDOWN, key_hook, &render);
|
||||||
mlx_loop_hook(render.mlx, loop, &render);
|
mlx_loop_hook(render.mlx, loop, &render);
|
||||||
mlx_loop(render.mlx);
|
mlx_loop(render.mlx);
|
||||||
mlx_destroy_image(render.mlx, render.img);
|
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_window(render.mlx, render.win);
|
||||||
mlx_destroy_display(render.mlx);
|
mlx_destroy_display(render.mlx);
|
||||||
return (0);
|
free_pars(&parsing);
|
||||||
|
return (EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
21
src/other.c
21
src/other.c
@ -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++;
|
|
||||||
}
|
|
||||||
}
|
|
@ -6,7 +6,7 @@
|
|||||||
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/10/07 16:55:09 by adjoly #+# #+# */
|
/* 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)
|
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.x = (ray->pos.x / 64);
|
||||||
dda->map.y = (ray->pos.y / 64);
|
dda->map.y = (ray->pos.y / 64);
|
||||||
if (dda->map.x >= 0 && dda->map.x < map->size.x && dda->map.y >= 0 && \
|
if (dda->map.x >= 0 && dda->map.x < map->size.x && dda->map.y >= 0 && \
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/10/28 15:48:39 by adjoly #+# #+# */
|
/* 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,9 +66,10 @@ void print_line(t_render *render, t_ray *ray, int x)
|
|||||||
if (line_start < 0)
|
if (line_start < 0)
|
||||||
line_start = 0;
|
line_start = 0;
|
||||||
if (line_stop > WINDOW_H)
|
if (line_stop > WINDOW_H)
|
||||||
line_stop = WINDOW_H - 1;
|
line_stop = WINDOW_H;
|
||||||
while (line_start < line_stop)
|
while (line_start < line_stop)
|
||||||
{
|
{
|
||||||
|
if (x < WINDOW_W && x >= 0)
|
||||||
mlx_set_image_pixel(render->mlx, render->img, x, line_start, WHITE);
|
mlx_set_image_pixel(render->mlx, render->img, x, line_start, WHITE);
|
||||||
line_start++;
|
line_start++;
|
||||||
}
|
}
|
||||||
|
55
src/utils/convert_parsing.c
Normal file
55
src/utils/convert_parsing.c
Normal 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);
|
||||||
|
}
|
Reference in New Issue
Block a user