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> +#+ +:+ +#+ #
|
||||
# +#+#+#+#+#+ +#+ #
|
||||
# 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
|
||||
SRCS = srcs/main.c\
|
||||
srcs/cast_ray.c\
|
||||
srcs/utils.c
|
||||
OBJS = ${SRCS:.c=.o}
|
||||
CC = gcc
|
||||
LIB = -L ./mlx -lmlx -lXext -lX11 -lm
|
||||
CFLAGS = -Wall -Wextra
|
||||
CFLAGS = -Wall -Wextra -g
|
||||
RM = rm -rf
|
||||
LIBFT = ./libft
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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 <math.h>
|
||||
|
||||
# define PI 3.14159265359
|
||||
# define PI 3.1415926535
|
||||
|
||||
typedef struct map_information{
|
||||
char **map;
|
||||
int floor;
|
||||
int sky;
|
||||
char *simple_map;
|
||||
int size;
|
||||
int x;
|
||||
int y;
|
||||
} map_info;
|
||||
|
||||
typedef struct player_position
|
||||
@ -43,15 +47,19 @@ typedef struct player_position
|
||||
typedef struct s_data {
|
||||
void *mlx;
|
||||
void *mlx_win;
|
||||
char **map;
|
||||
char **double_map;
|
||||
map_info map;
|
||||
player player;
|
||||
} 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);
|
||||
int key_press(int code, t_data *img);
|
||||
int quit_game(t_data *img);
|
||||
void ft_error(char *error_msg);
|
||||
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
|
||||
16
map/map
16
map/map
@ -1,8 +1,8 @@
|
||||
111111111
|
||||
101000001
|
||||
101000001
|
||||
100000001
|
||||
100000001
|
||||
101001001
|
||||
100001001
|
||||
111111111
|
||||
11111111
|
||||
10100001
|
||||
10100001
|
||||
10000001
|
||||
10000001
|
||||
10100101
|
||||
10000101
|
||||
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
|
||||
102
sprite/back.xpm
102
sprite/back.xpm
@ -1,39 +1,75 @@
|
||||
/* XPM */
|
||||
static char *bb1113caba2a4396da9abfa5b6bd9e69XybgBMHJ8j6bcKH6[] = {
|
||||
static char *a1ddad0c418f4a35e76242f25979a7e2fCUuqr6bneEEiT2H[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"32 32 1 1 ",
|
||||
" c white",
|
||||
"64 64 5 1 ",
|
||||
" c #808080",
|
||||
". c #F9F9F9",
|
||||
"X c #FDFDFD",
|
||||
"o c #FEFEFE",
|
||||
"O c white",
|
||||
/* 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 */
|
||||
static char *_e3cb0cf605640f8cfaeebccffd9d135vy2vdFXbHJ5SKHnn[] = {
|
||||
static char *bd85319af077459cedaeeaa7648f429dGIdxmjBFsN6lbeLv[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"4 4 1 1 ",
|
||||
" c #10F00B",
|
||||
"8 8 1 1 ",
|
||||
" c #12E22A",
|
||||
/* 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> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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)
|
||||
{
|
||||
int i = -1;
|
||||
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;
|
||||
@ -48,6 +71,42 @@ char **set_map(char **argv)
|
||||
if (!map_tab)
|
||||
ft_error("Error: Map file is empty");
|
||||
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)
|
||||
@ -56,10 +115,11 @@ void print_case(char type, t_data *img, int y, int x)
|
||||
int img_width;
|
||||
int img_height;
|
||||
|
||||
//printf("type= %c\n", type);
|
||||
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);
|
||||
else
|
||||
else if (type == '0')
|
||||
buffer = mlx_xpm_file_to_image(img->mlx, "./sprite/back.xpm",
|
||||
&img_width, &img_height);
|
||||
if (!buffer)
|
||||
@ -68,14 +128,28 @@ void print_case(char type, t_data *img, int y, int x)
|
||||
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 x = 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;
|
||||
while (map[j])
|
||||
{
|
||||
@ -83,13 +157,21 @@ void print_map(char **map, t_data *img)
|
||||
i = 0;
|
||||
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++;
|
||||
x++;
|
||||
}
|
||||
j++;
|
||||
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)
|
||||
@ -115,13 +197,16 @@ int main(int argc, char **argv)
|
||||
ft_error("Error: mlx_init fail");
|
||||
img.map = set_map(argv);
|
||||
img.mlx_win = mlx_new_window(img.mlx, 1024, 512, "Cub3D");
|
||||
img.player.x = 250;
|
||||
img.player.y = 250;
|
||||
img.player.vx = PI / 2;
|
||||
img.player.vy = PI / 2;
|
||||
img.player.angle = 0;
|
||||
//img->player.x=150; img->player.y=400; pa=90;
|
||||
//pdx=cos(deg_to_rad(pa)); pdy=-sin(deg_to_rad(pa));
|
||||
img.player.x = 150;
|
||||
img.player.y = 400;
|
||||
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_player(img.player, &img);
|
||||
print_ray(&img);
|
||||
mlx_hook(img.mlx_win, 2, 1L << 0, &key_press, &img);
|
||||
mlx_hook(img.mlx_win, 17, 0L, &quit_game, &img);
|
||||
mlx_loop(img.mlx);
|
||||
|
||||
74
srcs/utils.c
74
srcs/utils.c
@ -6,11 +6,11 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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)
|
||||
{
|
||||
@ -18,10 +18,24 @@ int quit_game(t_data *img)
|
||||
mlx_destroy_display(img->mlx);
|
||||
if (img->mlx)
|
||||
free(img->mlx);
|
||||
free_double(img->map);
|
||||
//free_double(img->map);
|
||||
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)
|
||||
{
|
||||
/*int i;
|
||||
@ -33,48 +47,53 @@ void ft_error(char *error_msg)
|
||||
|
||||
int is_good(t_data *img, int type)
|
||||
{
|
||||
printf("touche= %c\n", type);
|
||||
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("touche= %c\n", type);
|
||||
//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);
|
||||
|
||||
//
|
||||
/*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')
|
||||
{
|
||||
img->player.x += img->player.vx;
|
||||
img->player.y += img->player.vy;
|
||||
img->player.x += img->player.vx * 5;
|
||||
img->player.y += img->player.vy * 5;
|
||||
}
|
||||
else if (type == 's')
|
||||
{
|
||||
img->player.x -= img->player.vx;
|
||||
img->player.y -= img->player.vy;
|
||||
img->player.x -= img->player.vx * 5;
|
||||
img->player.y -= img->player.vy * 5;
|
||||
}
|
||||
else if (type == 'a')
|
||||
{
|
||||
img->player.x += img->player.vx * 5;
|
||||
//img->player.y -= img->player.vy;
|
||||
img->player.x += img->player.vy * 5;
|
||||
img->player.y -= img->player.vx * 5;
|
||||
}
|
||||
else if (type == 'd')
|
||||
{
|
||||
img->player.x -= img->player.vx * 5;
|
||||
//img->player.y += img->player.vy;
|
||||
img->player.x -= img->player.vy * 5;
|
||||
img->player.y += img->player.vx * 5;
|
||||
}
|
||||
else if (type == 65361)//fleche gauche
|
||||
{
|
||||
img->player.angle -=0.1;
|
||||
if (img->player.angle < 0)
|
||||
img->player.angle += 2 * PI;
|
||||
img->player.vx = cos(img->player.angle) * 5;
|
||||
img->player.vy = sin(img->player.angle) * 5;
|
||||
img->player.angle += 5;
|
||||
img->player.angle = reset_angle(img->player.angle);
|
||||
img->player.vx = cos(deg_to_rad(img->player.angle));
|
||||
img->player.vy = -sin(deg_to_rad(img->player.angle));
|
||||
}
|
||||
else if (type == 65363)//fleche droite
|
||||
{
|
||||
img->player.angle +=0.1;
|
||||
if (img->player.angle > 2 * PI)
|
||||
img->player.angle -= 2 * PI;
|
||||
img->player.vx = cos(img->player.angle) * 5;
|
||||
img->player.vy = sin(img->player.angle) * 5;
|
||||
img->player.angle -= 5;
|
||||
img->player.angle = reset_angle(img->player.angle);
|
||||
img->player.vx = cos(deg_to_rad(img->player.angle));
|
||||
img->player.vy = -sin(deg_to_rad(img->player.angle));
|
||||
}
|
||||
else
|
||||
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);
|
||||
}
|
||||
|
||||
@ -84,12 +103,15 @@ int key_press(int code, t_data *img)
|
||||
quit_game(img);
|
||||
else
|
||||
{
|
||||
is_good(img, code);
|
||||
if (is_good(img, code))
|
||||
{
|
||||
//printf("code = %d\n", code);
|
||||
//mlx_clear_window(img->mlx, img->mlx_win);
|
||||
print_map(img->map, img);
|
||||
print_player(img->player, img);
|
||||
print_ray(img);
|
||||
draw_ray(img);
|
||||
}
|
||||
}
|
||||
return (1);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user