start ray casting
This commit is contained in:
parent
e9262b7fdd
commit
be27eab42c
5
Makefile
5
Makefile
@ -6,17 +6,18 @@
|
|||||||
# By: apommier <apommier@student.42.fr> +#+ +:+ +#+ #
|
# By: apommier <apommier@student.42.fr> +#+ +:+ +#+ #
|
||||||
# +#+#+#+#+#+ +#+ #
|
# +#+#+#+#+#+ +#+ #
|
||||||
# Created: 2022/02/13 16:27:49 by apommier #+# #+# #
|
# Created: 2022/02/13 16:27:49 by apommier #+# #+# #
|
||||||
# Updated: 2022/05/03 16:19:32 by apommier ### ########.fr #
|
# Updated: 2022/05/04 18:08:34 by apommier ### ########.fr #
|
||||||
# #
|
# #
|
||||||
# **************************************************************************** #
|
# **************************************************************************** #
|
||||||
|
|
||||||
NAME = Cub3D
|
NAME = Cub3D
|
||||||
SRCS = srcs/main.c\
|
SRCS = srcs/main.c\
|
||||||
|
srcs/cast_ray.c\
|
||||||
srcs/utils.c
|
srcs/utils.c
|
||||||
OBJS = ${SRCS:.c=.o}
|
OBJS = ${SRCS:.c=.o}
|
||||||
CC = gcc
|
CC = gcc
|
||||||
LIB = -L ./mlx -lmlx -lXext -lX11 -lm
|
LIB = -L ./mlx -lmlx -lXext -lX11 -lm
|
||||||
CFLAGS = -Wall -Wextra
|
CFLAGS = -Wall -Wextra -g
|
||||||
RM = rm -rf
|
RM = rm -rf
|
||||||
LIBFT = ./libft
|
LIBFT = ./libft
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/02/13 16:30:59 by apommier #+# #+# */
|
/* Created: 2022/02/13 16:30:59 by apommier #+# #+# */
|
||||||
/* Updated: 2022/05/03 16:48:27 by apommier ### ########.fr */
|
/* Updated: 2022/05/04 17:34:25 by apommier ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -23,12 +23,16 @@
|
|||||||
# include <stdio.h>
|
# include <stdio.h>
|
||||||
# include <math.h>
|
# include <math.h>
|
||||||
|
|
||||||
# define PI 3.14159265359
|
# define PI 3.1415926535
|
||||||
|
|
||||||
typedef struct map_information{
|
typedef struct map_information{
|
||||||
char **map;
|
char **map;
|
||||||
int floor;
|
int floor;
|
||||||
int sky;
|
int sky;
|
||||||
|
char *simple_map;
|
||||||
|
int size;
|
||||||
|
int x;
|
||||||
|
int y;
|
||||||
} map_info;
|
} map_info;
|
||||||
|
|
||||||
typedef struct player_position
|
typedef struct player_position
|
||||||
@ -43,15 +47,19 @@ typedef struct player_position
|
|||||||
typedef struct s_data {
|
typedef struct s_data {
|
||||||
void *mlx;
|
void *mlx;
|
||||||
void *mlx_win;
|
void *mlx_win;
|
||||||
char **map;
|
char **double_map;
|
||||||
|
map_info map;
|
||||||
player player;
|
player player;
|
||||||
} t_data;
|
} t_data;
|
||||||
|
|
||||||
|
int reset_angle(int angle);
|
||||||
|
float deg_to_rad(int angle);
|
||||||
|
void draw_ray(t_data *img);
|
||||||
void print_ray(t_data *img);
|
void print_ray(t_data *img);
|
||||||
int key_press(int code, t_data *img);
|
int key_press(int code, t_data *img);
|
||||||
int quit_game(t_data *img);
|
int quit_game(t_data *img);
|
||||||
void ft_error(char *error_msg);
|
void ft_error(char *error_msg);
|
||||||
void print_player(player player, t_data *img);
|
void print_player(player player, t_data *img);
|
||||||
void print_map(char **map, t_data *img);
|
void print_map(map_info map, t_data *img);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
16
map/map
16
map/map
@ -1,8 +1,8 @@
|
|||||||
111111111
|
11111111
|
||||||
101000001
|
10100001
|
||||||
101000001
|
10100001
|
||||||
100000001
|
10000001
|
||||||
100000001
|
10000001
|
||||||
101001001
|
10100101
|
||||||
100001001
|
10000101
|
||||||
111111111
|
11111111
|
||||||
@ -1,3 +0,0 @@
|
|||||||
[ZoneTransfer]
|
|
||||||
ZoneId=3
|
|
||||||
HostUrl=https://www.photopea.com/
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
[ZoneTransfer]
|
|
||||||
ZoneId=3
|
|
||||||
ReferrerUrl=https://convertio.co/
|
|
||||||
HostUrl=https://s122.convertio.me/p/okLgAQyWaXH3BPAVt8iwfw/56be0757b02ebc3b426877866a2d5391/Nouveau-projet-_1_.xpm
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
[ZoneTransfer]
|
|
||||||
ZoneId=3
|
|
||||||
ReferrerUrl=https://convertio.co/
|
|
||||||
HostUrl=https://s167.convertio.me/p/yeHxKzYHMsgzX63ZlmVYcg/c44fd54ef093950da76fa0aecf3d2964/Nouveau-projet-_2_.xpm
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
[ZoneTransfer]
|
|
||||||
ZoneId=3
|
|
||||||
ReferrerUrl=https://convertio.co/
|
|
||||||
HostUrl=https://s112.convertio.me/p/r871wFIJih4QPAabVzANrg/56be0757b02ebc3b426877866a2d5391/Nouveau-projet.xpm
|
|
||||||
106
sprite/back.xpm
106
sprite/back.xpm
@ -1,39 +1,75 @@
|
|||||||
/* XPM */
|
/* XPM */
|
||||||
static char *bb1113caba2a4396da9abfa5b6bd9e69XybgBMHJ8j6bcKH6[] = {
|
static char *a1ddad0c418f4a35e76242f25979a7e2fCUuqr6bneEEiT2H[] = {
|
||||||
/* columns rows colors chars-per-pixel */
|
/* columns rows colors chars-per-pixel */
|
||||||
"32 32 1 1 ",
|
"64 64 5 1 ",
|
||||||
" c white",
|
" c #808080",
|
||||||
|
". c #F9F9F9",
|
||||||
|
"X c #FDFDFD",
|
||||||
|
"o c #FEFEFE",
|
||||||
|
"O c white",
|
||||||
/* pixels */
|
/* pixels */
|
||||||
" ",
|
" ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOO.OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" ",
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
" "
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ",
|
||||||
|
" "
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,41 +0,0 @@
|
|||||||
/* XPM */
|
|
||||||
static char *_49dd254199246a1977f20555a1f9063nPJ1VTqEOaIleAR1[] = {
|
|
||||||
/* columns rows colors chars-per-pixel */
|
|
||||||
"32 32 3 1 ",
|
|
||||||
" c #6E924D",
|
|
||||||
". c #4D733E",
|
|
||||||
"X c #87B055",
|
|
||||||
/* pixels */
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" . ",
|
|
||||||
" . . ",
|
|
||||||
" . ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" X ",
|
|
||||||
" XX ",
|
|
||||||
" X XX X ",
|
|
||||||
" X X.XX ",
|
|
||||||
" X X .XX. ",
|
|
||||||
" X X .. ",
|
|
||||||
" X ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" X ",
|
|
||||||
" X X ",
|
|
||||||
" X ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" . ",
|
|
||||||
" . . ",
|
|
||||||
" . ",
|
|
||||||
" X ",
|
|
||||||
" X X ",
|
|
||||||
" X X ",
|
|
||||||
" X "
|
|
||||||
};
|
|
||||||
@ -1,11 +1,15 @@
|
|||||||
/* XPM */
|
/* XPM */
|
||||||
static char *_e3cb0cf605640f8cfaeebccffd9d135vy2vdFXbHJ5SKHnn[] = {
|
static char *bd85319af077459cedaeeaa7648f429dGIdxmjBFsN6lbeLv[] = {
|
||||||
/* columns rows colors chars-per-pixel */
|
/* columns rows colors chars-per-pixel */
|
||||||
"4 4 1 1 ",
|
"8 8 1 1 ",
|
||||||
" c #10F00B",
|
" c #12E22A",
|
||||||
/* pixels */
|
/* pixels */
|
||||||
" ",
|
" ",
|
||||||
" ",
|
" ",
|
||||||
" ",
|
" ",
|
||||||
" "
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" "
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,39 +0,0 @@
|
|||||||
/* XPM */
|
|
||||||
static char *_cbafb9a07c3469ffcea1686de5f8991nVqbqFhPdwVvKnWZ[] = {
|
|
||||||
/* columns rows colors chars-per-pixel */
|
|
||||||
"32 32 1 1 ",
|
|
||||||
" c #3B3737",
|
|
||||||
/* pixels */
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" "
|
|
||||||
};
|
|
||||||
@ -1,176 +0,0 @@
|
|||||||
/* XPM */
|
|
||||||
static char *ed1556952fcd432ffcab70bbc17ab48bTGW28QFGniQVrKcD[] = {
|
|
||||||
/* columns rows colors chars-per-pixel */
|
|
||||||
"32 32 138 2 ",
|
|
||||||
" c #6E924D",
|
|
||||||
". c #91AC78",
|
|
||||||
"X c #DCE5D4",
|
|
||||||
"o c white",
|
|
||||||
"O c #7D9E69",
|
|
||||||
"+ c #F3F6FE",
|
|
||||||
"@ c #D7E4FD",
|
|
||||||
"# c #85A36A",
|
|
||||||
"$ c #628B4D",
|
|
||||||
"% c #54925A",
|
|
||||||
"& c #EAF1FE",
|
|
||||||
"* c #789C78",
|
|
||||||
"= c #C4D9D5",
|
|
||||||
"- c #63A05C",
|
|
||||||
"; c #BFCFBE",
|
|
||||||
": c #97B28D",
|
|
||||||
"> c #4D9262",
|
|
||||||
", c #71A876",
|
|
||||||
"< c #6FA958",
|
|
||||||
"1 c #98C09B",
|
|
||||||
"2 c #619E7B",
|
|
||||||
"3 c #CCDFD9",
|
|
||||||
"4 c #ECF2FE",
|
|
||||||
"5 c #A1BBBE",
|
|
||||||
"6 c #5B864D",
|
|
||||||
"7 c #BACCB8",
|
|
||||||
"8 c #C0D6D4",
|
|
||||||
"9 c #7DA87D",
|
|
||||||
"0 c #E0E9FD",
|
|
||||||
"q c #C8DCD9",
|
|
||||||
"w c #D0E1E5",
|
|
||||||
"e c #55846A",
|
|
||||||
"r c #3E734E",
|
|
||||||
"t c #42734A",
|
|
||||||
"y c #7CA89B",
|
|
||||||
"u c #87B770",
|
|
||||||
"i c #6AA55A",
|
|
||||||
"p c #47865A",
|
|
||||||
"a c #4B8D5F",
|
|
||||||
"s c #427A53",
|
|
||||||
"d c #6C9578",
|
|
||||||
"f c #4B8355",
|
|
||||||
"g c #E3EEE6",
|
|
||||||
"h c #D4E5D9",
|
|
||||||
"j c #7FB186",
|
|
||||||
"k c #94BE98",
|
|
||||||
"l c #ADC4BF",
|
|
||||||
"z c #588B6F",
|
|
||||||
"x c #497A4E",
|
|
||||||
"c c #7FAFA0",
|
|
||||||
"v c #B9D2D8",
|
|
||||||
"b c #A6C6C5",
|
|
||||||
"n c #69A37B",
|
|
||||||
"m c #458258",
|
|
||||||
"M c #C5D3B8",
|
|
||||||
"N c #48875B",
|
|
||||||
"B c #B8CBB7",
|
|
||||||
"V c #468358",
|
|
||||||
"C c #437E55",
|
|
||||||
"Z c #78AC88",
|
|
||||||
"A c #8BAB95",
|
|
||||||
"S c #BACDBF",
|
|
||||||
"D c #87B055",
|
|
||||||
"F c #84A58C",
|
|
||||||
"G c #F7F9FF",
|
|
||||||
"H c #BFD8C6",
|
|
||||||
"J c #6F9A7C",
|
|
||||||
"K c #91B69C",
|
|
||||||
"L c #95B6BA",
|
|
||||||
"P c #4F7E4E",
|
|
||||||
"I c #BCCFD3",
|
|
||||||
"U c #DFECD6",
|
|
||||||
"Y c #A5C6BF",
|
|
||||||
"T c #93B1B6",
|
|
||||||
"R c #C7D7E1",
|
|
||||||
"E c #407851",
|
|
||||||
"W c #668D4D",
|
|
||||||
"Q c #517F4E",
|
|
||||||
"! c #83A594",
|
|
||||||
"~ c #608C78",
|
|
||||||
"^ c #769D94",
|
|
||||||
"/ c #709C7D",
|
|
||||||
"( c #B6CBD3",
|
|
||||||
") c #8FBC81",
|
|
||||||
"_ c #B8D3C0",
|
|
||||||
"` c #D6E5E5",
|
|
||||||
"' c #6BA487",
|
|
||||||
"] c #7AA498",
|
|
||||||
"[ c #86AA91",
|
|
||||||
"{ c #9CB593",
|
|
||||||
"} c #447F56",
|
|
||||||
"| c #498B5D",
|
|
||||||
" . c #87AD93",
|
|
||||||
".. c #B2C7B8",
|
|
||||||
"X. c #B5CEBD",
|
|
||||||
"o. c #72A180",
|
|
||||||
"O. c #68A45A",
|
|
||||||
"+. c #9FBAB7",
|
|
||||||
"@. c #94BEA1",
|
|
||||||
"#. c #5D896A",
|
|
||||||
"$. c #74A091",
|
|
||||||
"%. c #C3D8E4",
|
|
||||||
"&. c #CBDBFC",
|
|
||||||
"*. c #62917B",
|
|
||||||
"=. c #65977F",
|
|
||||||
"-. c #74A583",
|
|
||||||
";. c #7AAC99",
|
|
||||||
":. c #D1E1E2",
|
|
||||||
">. c #BFD6D8",
|
|
||||||
",. c #B7D2C6",
|
|
||||||
"<. c #88B5A0",
|
|
||||||
"1. c #99BEBE",
|
|
||||||
"2. c #58995F",
|
|
||||||
"3. c #46784E",
|
|
||||||
"4. c #78A796",
|
|
||||||
"5. c #424643",
|
|
||||||
"6. c #45283C",
|
|
||||||
"7. c #4D733E",
|
|
||||||
"8. c #695D3C",
|
|
||||||
"9. c #663931",
|
|
||||||
"0. c #522F38",
|
|
||||||
"q. c #5A783F",
|
|
||||||
"w. c #628245",
|
|
||||||
"e. c #526D39",
|
|
||||||
"r. c #4D6636",
|
|
||||||
"t. c #563A36",
|
|
||||||
"y. c #494E38",
|
|
||||||
"u. c #535B34",
|
|
||||||
"i. c #5E3534",
|
|
||||||
"p. c #4A2B3A",
|
|
||||||
"a. c #4D2C39",
|
|
||||||
"s. c #55703B",
|
|
||||||
"d. c #668848",
|
|
||||||
"f. c #5C4B33",
|
|
||||||
"g. c #584035",
|
|
||||||
"h. c #6D8E45",
|
|
||||||
"j. c #5E7B3B",
|
|
||||||
"k. c #618044",
|
|
||||||
/* pixels */
|
|
||||||
" ",
|
|
||||||
" . X o O ",
|
|
||||||
" . o + @ + # ",
|
|
||||||
" $ % & o o o o # ",
|
|
||||||
" * + = - + o o ; ",
|
|
||||||
" : > , < 1 2 3 4 5 6 ",
|
|
||||||
" 7 8 9 0 q w 0 e r t ",
|
|
||||||
" y u i p p p a > s d ",
|
|
||||||
" f g h j k g o o l 0 z x ",
|
|
||||||
" p c v b n > v 5 m m s 6 ",
|
|
||||||
" M o > m m N > > > > N s x ",
|
|
||||||
" B o - > V C C V > Z n A S 6 ",
|
|
||||||
" D F G H - > J A K > o o v L P ",
|
|
||||||
" D x I G H U Y T R & & T V E r W ",
|
|
||||||
" D D Q o ! ~ ^ y > > p r C m m / r 6 ",
|
|
||||||
" D D Q ( o ) > > > > > > > _ o 5 r 6 ",
|
|
||||||
" D Q s c 0 n ` o 4 2 > ' ] ] r [ { ",
|
|
||||||
" r r s } | ' c 2 > > | p ...5 x ",
|
|
||||||
" ..X.N Y ` h _ o.} | O._ 4 N E r ",
|
|
||||||
" +.o @.r ~ ^ #.$.T %.0 &.*.C s r D ",
|
|
||||||
" =.+ & -.r r r r r p p ..X.Y > r D D ",
|
|
||||||
" f ;.:.3 Z Z >.,.n <.& & 1.2.p r D ",
|
|
||||||
" 3.C 4.' > > p > > > > p r r $ ",
|
|
||||||
" 6 r s } E r r r r r r r W ",
|
|
||||||
" x r 5.6.6.6.6 ",
|
|
||||||
" 7. 8.9.0.0.0.q. ",
|
|
||||||
" 7. 7. w.e.r.t.9.9.0.0.y.r.r.q. ",
|
|
||||||
" 7. w.r.r.u.y.9.i.0.p.a.u.r.r.s. ",
|
|
||||||
" d.r.r.r.f.0.a.6.6.g.r.r.r.h. ",
|
|
||||||
" d.s.r.u.r.r.r.r.y.r.j.k.D ",
|
|
||||||
" d.k.k.k.k.k. D D ",
|
|
||||||
" D "
|
|
||||||
};
|
|
||||||
76
sprite/wall.xpm
Normal file
76
sprite/wall.xpm
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
/* XPM */
|
||||||
|
static char *f43facccf9fb4a3d880a26056a6bb63funGjxXraBfJ5iPVR[] = {
|
||||||
|
/* columns rows colors chars-per-pixel */
|
||||||
|
"64 64 6 1 ",
|
||||||
|
" c gray24",
|
||||||
|
". c #3E3E3E",
|
||||||
|
"X c #3F3F3F",
|
||||||
|
"o c gray50",
|
||||||
|
"O c #808080",
|
||||||
|
"+ c #818181",
|
||||||
|
/* pixels */
|
||||||
|
"OOOOoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
|
||||||
|
"OXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXXX XXXO",
|
||||||
|
"oXXXX XX X X XXX X X X X XXX X X X X XXX X X X X XXX X X XXXXXo",
|
||||||
|
"o XX X XX X X X X XXX X X X X XXX X X X X XXX X X X X XXX XXXo",
|
||||||
|
"oXX X XX X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX XXX X X X X X X X X X X X X X X X X X X X X X X X XXX X XXo",
|
||||||
|
"oXXX XXX X X X X X X X X X X X X X X X X X X X X X X X XX X Xo",
|
||||||
|
"oXXXX X X X X X X X X X X X X X X X X X X X X X X X X XX XXXo",
|
||||||
|
"o X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"oXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"oXXXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"o X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"oXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"oXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oXXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"o X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"oXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"oXXXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"o X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"oXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"oXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oXXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"o X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"oXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"oXXXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"o X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"oXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"oXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oXXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"o X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"oXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"oXXXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"o X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"oXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"oXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oXXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"oXX XXX X X X X X X X X X X X X X X X X X X X X X X X X X X Xo",
|
||||||
|
"oX XXX X X X X X X X X X X X X X X X X X X X X X X X X X X XXo",
|
||||||
|
"oXX X XX X X X X X X X X X X X X X X X X X X X X X X X X XXXo",
|
||||||
|
"oX X XX X X X X X X X X X X X X X X X X X X X X X X X XXX X XXo",
|
||||||
|
"oXXXX XX XXX X X X X XXX X X X X XXX X X X X XXX X X X X XXX Xo",
|
||||||
|
"oXX XXX X X X XXX X X X X XXX X X X X XXX X X X X XXX X X X XXo",
|
||||||
|
"OX XXXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXXo",
|
||||||
|
"ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooOooooo"
|
||||||
|
};
|
||||||
126
srcs/cast_ray.c
Normal file
126
srcs/cast_ray.c
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* cast_ray.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2022/05/04 18:08:14 by apommier #+# #+# */
|
||||||
|
/* Updated: 2022/05/04 18:35:18 by apommier ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "../includes/Cub3D.h"
|
||||||
|
|
||||||
|
void draw_ray(t_data *img)
|
||||||
|
{
|
||||||
|
float ray_angle = 0; //ray angle
|
||||||
|
float ray_y = 0; //where ray touch x
|
||||||
|
float ray_x = 0; //where ray touch y
|
||||||
|
float next_x = 0;
|
||||||
|
float next_y = 0;
|
||||||
|
float dist_v = 0;
|
||||||
|
float dist_h = 0;
|
||||||
|
int count = 0;
|
||||||
|
float aTan = 0;
|
||||||
|
int nb_ray = -1;
|
||||||
|
int my = 0;
|
||||||
|
int mx = 0;
|
||||||
|
int mp = 0;
|
||||||
|
|
||||||
|
|
||||||
|
printf("\nENTER DRAW RAY\n");
|
||||||
|
count = 0;
|
||||||
|
ray_angle = img->player.angle;
|
||||||
|
while (++nb_ray < 1)
|
||||||
|
{
|
||||||
|
printf("player_angle= %f\n", img->player.angle);
|
||||||
|
//start vertical ray
|
||||||
|
aTan = tan(deg_to_rad(ray_angle));
|
||||||
|
if (cos(deg_to_rad(ray_angle))> 0.001)//looking left
|
||||||
|
{
|
||||||
|
ray_x = (((int)img->player.x>>6)<<6) + 64;
|
||||||
|
ray_y = (img->player.x - ray_x) * aTan + img->player.y;
|
||||||
|
next_x = 64;
|
||||||
|
next_y = -next_x * aTan;
|
||||||
|
}
|
||||||
|
else if (cos(deg_to_rad(ray_angle))<-0.001)//looking right
|
||||||
|
{
|
||||||
|
ray_x = (((int)img->player.x>>6)<<6) - 0.0001;
|
||||||
|
ray_y = (img->player.x - ray_x) * aTan + img->player.y;
|
||||||
|
next_x = -64;
|
||||||
|
next_y = -next_x * aTan;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ray_x = img->player.x;
|
||||||
|
ray_y = img->player.y;
|
||||||
|
count = 8;
|
||||||
|
}
|
||||||
|
printf("ray_y= %f ray_x= %f\n", ray_y, ray_x);
|
||||||
|
printf("next_y= %f next_x= %f\n", next_y, next_x);
|
||||||
|
printf("BASE p_y= %f p_x= %f\n", img->player.y, img->player.x);
|
||||||
|
while (count < 8)
|
||||||
|
{
|
||||||
|
//printf("count = %d\n", count);
|
||||||
|
mx = (int)(ray_x)>>6;
|
||||||
|
my = (int)(ray_y)>>6;
|
||||||
|
mp = my * img->map.x + mx;
|
||||||
|
//printf("mx=%d my=%d mp= %d\n", mx, my, mp);
|
||||||
|
if (mp > 0 && mp < img->map.x * img->map.y && img->map.simple_map[mp] == '1')//hit wall
|
||||||
|
{
|
||||||
|
count = 8;
|
||||||
|
printf("vertical wall\n");
|
||||||
|
dist_v = cos(deg_to_rad(ray_angle)) * (ray_x-img->player.x) - sin(deg_to_rad(ray_angle)) * (ray_y-img->player.y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ray_x += next_x;
|
||||||
|
ray_y += next_y;
|
||||||
|
count += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//end vertical ray && start horizontal ray
|
||||||
|
count = 0;
|
||||||
|
aTan = 1.0 / aTan;
|
||||||
|
if (sin(deg_to_rad(ray_angle)) > 0.001)//looking up
|
||||||
|
{
|
||||||
|
ray_y = (((int)img->player.y>>6)<<6) - 0.0001;
|
||||||
|
ray_x = (img->player.y - ray_y) * aTan + img->player.x;
|
||||||
|
next_y = -64;
|
||||||
|
next_x = next_y * aTan;
|
||||||
|
}
|
||||||
|
else if (sin(deg_to_rad(ray_angle))<-0.001)//looking down
|
||||||
|
{
|
||||||
|
ray_y = (((int)img->player.y>>6)<<6) + 64;
|
||||||
|
ray_x = (img->player.y - ray_y) * aTan + img->player.x;
|
||||||
|
next_y = 64;
|
||||||
|
next_x = -next_y * aTan;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ray_x = img->player.x;
|
||||||
|
ray_y = img->player.y;
|
||||||
|
count = 8;
|
||||||
|
} //looking straight left or right
|
||||||
|
while (count<8)
|
||||||
|
{
|
||||||
|
mx = (int)(ray_x)>>6;
|
||||||
|
my = (int)(ray_y)>>6;
|
||||||
|
mp = my * img->map.x + mx;
|
||||||
|
if (mp > 0 && mp < img->map.x * img->map.y && img->map.simple_map[mp] == '1')
|
||||||
|
{
|
||||||
|
count = 8;
|
||||||
|
printf ("horizontal wall\n");
|
||||||
|
dist_h = cos(deg_to_rad(ray_angle)) * (ray_x - img->player.x) - sin(deg_to_rad(ray_angle)) * (ray_y - img->player.y);
|
||||||
|
}//hit
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ray_x += next_x;
|
||||||
|
ray_y += next_y;
|
||||||
|
count += 1;
|
||||||
|
} //check next horizontal
|
||||||
|
}
|
||||||
|
printf("dist_h= %f dist_v= %f\n", dist_h, dist_v);
|
||||||
|
}
|
||||||
|
}
|
||||||
117
srcs/main.c
117
srcs/main.c
@ -6,22 +6,45 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/02/13 16:42:55 by apommier #+# #+# */
|
/* Created: 2022/02/13 16:42:55 by apommier #+# #+# */
|
||||||
/* Updated: 2022/05/03 17:13:33 by apommier ### ########.fr */
|
/* Updated: 2022/05/04 18:08:57 by apommier ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "Cub3D.h"
|
#include "../includes/Cub3D.h"
|
||||||
|
|
||||||
void print_ray(t_data *img)
|
void print_ray(t_data *img)
|
||||||
{
|
{
|
||||||
int i = -1;
|
int i = -1;
|
||||||
while (++i < 15)
|
while (++i < 15)
|
||||||
{
|
{
|
||||||
mlx_pixel_put(img->mlx, img->mlx_win, (img->player.x + (img->player.vx / 5) * i) + 2, (img->player.y + (img->player.vy / 5) * i) + 2, 255);
|
mlx_pixel_put(img->mlx, img->mlx_win, (img->player.x + (img->player.vx) * i) + 3, (img->player.y + (img->player.vy) * i) + 3, 255);
|
||||||
|
mlx_pixel_put(img->mlx, img->mlx_win, (img->player.x + (img->player.vx) * i) + 4, (img->player.y + (img->player.vy) * i) + 3, 255);
|
||||||
|
mlx_pixel_put(img->mlx, img->mlx_win, (img->player.x + (img->player.vx) * i) + 3, (img->player.y + (img->player.vy) * i) + 4, 255);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
char **set_map(char **argv)
|
/*map_info set_map(char **argv) //simple local allocation
|
||||||
|
{
|
||||||
|
map_info map;
|
||||||
|
char ret_map[]=
|
||||||
|
{
|
||||||
|
'1','1','1','1','1','1','1','1',
|
||||||
|
'1','0','1','0','0','0','0','1',
|
||||||
|
'1','0','1','0','0','0','0','1',
|
||||||
|
'1','0','0','0','0','0','0','1',
|
||||||
|
'1','0','0','0','0','0','0','1',
|
||||||
|
'1','0','1','0','0','1','0','1',
|
||||||
|
'1','0','0','0','0','1','0','1',
|
||||||
|
'1','1','1','1','1','1','1','1',
|
||||||
|
};
|
||||||
|
map.simple_map = ret_map;
|
||||||
|
map.x = 8;
|
||||||
|
map.y = 8;
|
||||||
|
map.size = map.x * map.y;
|
||||||
|
return (map);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/*map_info set_map(char **argv)
|
||||||
{
|
{
|
||||||
char **map_tab;
|
char **map_tab;
|
||||||
char *map;
|
char *map;
|
||||||
@ -48,6 +71,42 @@ char **set_map(char **argv)
|
|||||||
if (!map_tab)
|
if (!map_tab)
|
||||||
ft_error("Error: Map file is empty");
|
ft_error("Error: Map file is empty");
|
||||||
return (map_tab);
|
return (map_tab);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
map_info set_map(char **argv)
|
||||||
|
{
|
||||||
|
//char **map_tab;
|
||||||
|
char *map;
|
||||||
|
char *del;
|
||||||
|
char *swap;
|
||||||
|
int fd;
|
||||||
|
map_info ret_map;
|
||||||
|
|
||||||
|
map = 0;
|
||||||
|
fd = open(argv[1], O_RDONLY);
|
||||||
|
if (fd == -1)
|
||||||
|
ft_error("Error: Open call fail");
|
||||||
|
swap = get_next_line(fd);
|
||||||
|
while (swap)
|
||||||
|
{
|
||||||
|
del = map;
|
||||||
|
if (swap[ft_strlen(swap) - 1] == '\n')
|
||||||
|
swap[ft_strlen(swap) - 1] = 0;
|
||||||
|
map = ft_strjoin(map, swap);
|
||||||
|
free(swap);
|
||||||
|
swap = get_next_line(fd);
|
||||||
|
free(del);
|
||||||
|
}
|
||||||
|
close(fd);
|
||||||
|
ret_map.simple_map = map;
|
||||||
|
ret_map.x = 8;
|
||||||
|
ret_map.y = 8;
|
||||||
|
ret_map.size = ret_map.x * ret_map.y;
|
||||||
|
//map_tab = ft_split(map, '\n');
|
||||||
|
//free(map);
|
||||||
|
//if (!map_tab)
|
||||||
|
// ft_error("Error: Map file is empty");
|
||||||
|
return (ret_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_case(char type, t_data *img, int y, int x)
|
void print_case(char type, t_data *img, int y, int x)
|
||||||
@ -56,10 +115,11 @@ void print_case(char type, t_data *img, int y, int x)
|
|||||||
int img_width;
|
int img_width;
|
||||||
int img_height;
|
int img_height;
|
||||||
|
|
||||||
|
//printf("type= %c\n", type);
|
||||||
if (type == '1')
|
if (type == '1')
|
||||||
buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/snow_tree.xpm",
|
buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/wall.xpm",
|
||||||
&img_width, &img_height);
|
&img_width, &img_height);
|
||||||
else
|
else if (type == '0')
|
||||||
buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/back.xpm",
|
buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/back.xpm",
|
||||||
&img_width, &img_height);
|
&img_width, &img_height);
|
||||||
if (!buffer)
|
if (!buffer)
|
||||||
@ -68,14 +128,28 @@ void print_case(char type, t_data *img, int y, int x)
|
|||||||
mlx_destroy_image(img->mlx, buffer);
|
mlx_destroy_image(img->mlx, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_map(char **map, t_data *img)
|
void print_map(map_info map, t_data *img)
|
||||||
{
|
{
|
||||||
int i;
|
int i = 0;
|
||||||
int j;
|
int j;
|
||||||
int x = 0;
|
int x = 0;
|
||||||
int y = 0;
|
int y = 0;
|
||||||
|
|
||||||
i = 0;
|
//printf("map= -%s-\n", map.simple_map);
|
||||||
|
while (i < map.size)
|
||||||
|
{
|
||||||
|
j = -1;
|
||||||
|
x = 0;
|
||||||
|
while (++j < 8)
|
||||||
|
{
|
||||||
|
print_case(map.simple_map[i], img, (y * 64), (x * 64));
|
||||||
|
i++;
|
||||||
|
x++;
|
||||||
|
}
|
||||||
|
y++;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*i = 0;
|
||||||
j = 0;
|
j = 0;
|
||||||
while (map[j])
|
while (map[j])
|
||||||
{
|
{
|
||||||
@ -83,13 +157,21 @@ void print_map(char **map, t_data *img)
|
|||||||
i = 0;
|
i = 0;
|
||||||
while (map[j][i])
|
while (map[j][i])
|
||||||
{
|
{
|
||||||
print_case(map[j][i], img, (j * 32) + y, (i * 32) + x);
|
print_case(map[j][i], img, (j * 64), (i * 64));
|
||||||
i++;
|
i++;
|
||||||
x++;
|
x++;
|
||||||
}
|
}
|
||||||
j++;
|
j++;
|
||||||
y++;
|
y++;
|
||||||
}
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_line(t_data *img, float x, float y)
|
||||||
|
{
|
||||||
|
float i = -1;
|
||||||
|
int j = -1;
|
||||||
|
while (++i < x && ++j < y)
|
||||||
|
mlx_pixel_put(img->mlx, img->mlx_win, (img->player.x + (img->player.vx / 5) * i) + 2, (img->player.y + (img->player.vy / 5) * i) + 2, 65);
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_player(player player, t_data *img)
|
void print_player(player player, t_data *img)
|
||||||
@ -115,13 +197,16 @@ int main(int argc, char **argv)
|
|||||||
ft_error("Error: mlx_init fail");
|
ft_error("Error: mlx_init fail");
|
||||||
img.map = set_map(argv);
|
img.map = set_map(argv);
|
||||||
img.mlx_win = mlx_new_window(img.mlx, 1024, 512, "Cub3D");
|
img.mlx_win = mlx_new_window(img.mlx, 1024, 512, "Cub3D");
|
||||||
img.player.x = 250;
|
//img->player.x=150; img->player.y=400; pa=90;
|
||||||
img.player.y = 250;
|
//pdx=cos(deg_to_rad(pa)); pdy=-sin(deg_to_rad(pa));
|
||||||
img.player.vx = PI / 2;
|
img.player.x = 150;
|
||||||
img.player.vy = PI / 2;
|
img.player.y = 400;
|
||||||
img.player.angle = 0;
|
img.player.angle = 90;
|
||||||
|
img.player.vx = cos(deg_to_rad(img.player.angle));
|
||||||
|
img.player.vy = sin(deg_to_rad(img.player.angle));
|
||||||
print_map(img.map, &img);
|
print_map(img.map, &img);
|
||||||
print_player(img.player, &img);
|
print_player(img.player, &img);
|
||||||
|
print_ray(&img);
|
||||||
mlx_hook(img.mlx_win, 2, 1L << 0, &key_press, &img);
|
mlx_hook(img.mlx_win, 2, 1L << 0, &key_press, &img);
|
||||||
mlx_hook(img.mlx_win, 17, 0L, &quit_game, &img);
|
mlx_hook(img.mlx_win, 17, 0L, &quit_game, &img);
|
||||||
mlx_loop(img.mlx);
|
mlx_loop(img.mlx);
|
||||||
|
|||||||
84
srcs/utils.c
84
srcs/utils.c
@ -6,11 +6,11 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/02/13 23:37:02 by apommier #+# #+# */
|
/* Created: 2022/02/13 23:37:02 by apommier #+# #+# */
|
||||||
/* Updated: 2022/05/03 17:02:42 by apommier ### ########.fr */
|
/* Updated: 2022/05/04 18:07:18 by apommier ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "Cub3D.h"
|
#include "../includes/Cub3D.h"
|
||||||
|
|
||||||
int quit_game(t_data *img)
|
int quit_game(t_data *img)
|
||||||
{
|
{
|
||||||
@ -18,10 +18,24 @@ int quit_game(t_data *img)
|
|||||||
mlx_destroy_display(img->mlx);
|
mlx_destroy_display(img->mlx);
|
||||||
if (img->mlx)
|
if (img->mlx)
|
||||||
free(img->mlx);
|
free(img->mlx);
|
||||||
free_double(img->map);
|
//free_double(img->map);
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float deg_to_rad(int angle)
|
||||||
|
{
|
||||||
|
return (angle * M_PI / 180.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int reset_angle(int angle)
|
||||||
|
{
|
||||||
|
if (angle > 359)
|
||||||
|
angle -= 360;
|
||||||
|
if (angle < 0)
|
||||||
|
angle += 360;
|
||||||
|
return (angle);
|
||||||
|
}
|
||||||
|
|
||||||
void ft_error(char *error_msg)
|
void ft_error(char *error_msg)
|
||||||
{
|
{
|
||||||
/*int i;
|
/*int i;
|
||||||
@ -33,48 +47,53 @@ void ft_error(char *error_msg)
|
|||||||
|
|
||||||
int is_good(t_data *img, int type)
|
int is_good(t_data *img, int type)
|
||||||
{
|
{
|
||||||
printf("touche= %c\n", type);
|
//printf("touche= %c\n", type);
|
||||||
printf("vx= %f vy= %f\n", img->player.vx, img->player.vy);
|
//printf("vx= %f vy= %f\n", img->player.vx, img->player.vy);
|
||||||
printf("player: x= %f y= %f\n", img->player.x, img->player.y);
|
//printf("player: x= %f y= %f\n", img->player.x, img->player.y);
|
||||||
|
|
||||||
|
//
|
||||||
|
/*if(key=='a'){ pa+=5; pa=FixAng(pa); pdx=cos(deg_to_rad(pa)); pdy=-sin(deg_to_rad(pa));}
|
||||||
|
if(key=='d'){ pa-=5; pa=FixAng(pa); pdx=cos(deg_to_rad(pa)); pdy=-sin(deg_to_rad(pa));}
|
||||||
|
if(key=='w'){ img->player.x+=pdx*5; img->player.y+=pdy*5;}
|
||||||
|
if(key=='s'){ img->player.x-=pdx*5; img->player.y-=pdy*5;}*/
|
||||||
|
//
|
||||||
if (type == 'w')
|
if (type == 'w')
|
||||||
{
|
{
|
||||||
img->player.x += img->player.vx;
|
img->player.x += img->player.vx * 5;
|
||||||
img->player.y += img->player.vy;
|
img->player.y += img->player.vy * 5;
|
||||||
}
|
}
|
||||||
else if (type == 's')
|
else if (type == 's')
|
||||||
{
|
{
|
||||||
img->player.x -= img->player.vx;
|
img->player.x -= img->player.vx * 5;
|
||||||
img->player.y -= img->player.vy;
|
img->player.y -= img->player.vy * 5;
|
||||||
}
|
}
|
||||||
else if (type == 'a')
|
else if (type == 'a')
|
||||||
{
|
{
|
||||||
img->player.x += img->player.vx * 5;
|
img->player.x += img->player.vy * 5;
|
||||||
//img->player.y -= img->player.vy;
|
img->player.y -= img->player.vx * 5;
|
||||||
}
|
}
|
||||||
else if (type == 'd')
|
else if (type == 'd')
|
||||||
{
|
{
|
||||||
img->player.x -= img->player.vx * 5;
|
img->player.x -= img->player.vy * 5;
|
||||||
//img->player.y += img->player.vy;
|
img->player.y += img->player.vx * 5;
|
||||||
}
|
}
|
||||||
else if (type == 65361)//fleche gauche
|
else if (type == 65361)//fleche gauche
|
||||||
{
|
{
|
||||||
img->player.angle -=0.1;
|
img->player.angle += 5;
|
||||||
if (img->player.angle < 0)
|
img->player.angle = reset_angle(img->player.angle);
|
||||||
img->player.angle += 2 * PI;
|
img->player.vx = cos(deg_to_rad(img->player.angle));
|
||||||
img->player.vx = cos(img->player.angle) * 5;
|
img->player.vy = -sin(deg_to_rad(img->player.angle));
|
||||||
img->player.vy = sin(img->player.angle) * 5;
|
|
||||||
}
|
}
|
||||||
else if (type == 65363)//fleche droite
|
else if (type == 65363)//fleche droite
|
||||||
{
|
{
|
||||||
img->player.angle +=0.1;
|
img->player.angle -= 5;
|
||||||
if (img->player.angle > 2 * PI)
|
img->player.angle = reset_angle(img->player.angle);
|
||||||
img->player.angle -= 2 * PI;
|
img->player.vx = cos(deg_to_rad(img->player.angle));
|
||||||
img->player.vx = cos(img->player.angle) * 5;
|
img->player.vy = -sin(deg_to_rad(img->player.angle));
|
||||||
img->player.vy = sin(img->player.angle) * 5;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return (0);
|
return (0);
|
||||||
printf("after player: x= %f y= %f\n", img->player.x, img->player.y);
|
//printf("after player: x= %f y= %f\n", img->player.x, img->player.y);
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,12 +103,15 @@ int key_press(int code, t_data *img)
|
|||||||
quit_game(img);
|
quit_game(img);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
is_good(img, code);
|
if (is_good(img, code))
|
||||||
//printf("code = %d\n", code);
|
{
|
||||||
//mlx_clear_window(img->mlx, img->mlx_win);
|
//printf("code = %d\n", code);
|
||||||
print_map(img->map, img);
|
//mlx_clear_window(img->mlx, img->mlx_win);
|
||||||
print_player(img->player, img);
|
print_map(img->map, img);
|
||||||
print_ray(img);
|
print_player(img->player, img);
|
||||||
|
print_ray(img);
|
||||||
|
draw_ray(img);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user