Compare commits

..

8 commits

Author SHA1 Message Date
Theo Champion
f325eb3dbf norme: fixed norme issues 2025-10-02 00:12:16 +02:00
Theo Champion
94fd8779e2 feat: finished payed doors 2025-10-01 17:40:20 +02:00
Theo Champion
5cc6988c9c chore: changed door for a payed door 2025-10-01 17:39:50 +02:00
Theo Champion
351e4bb679 feat: Made payable doors 2025-10-01 14:13:20 +02:00
Theo Champion
13b1f7a88c fix: Fixed memory leak for the door texture 2025-10-01 13:58:19 +02:00
Theo Champion
47ffb17047 feat: Made doors opening and closing 2025-10-01 13:53:02 +02:00
Theo Champion
b606159ac3 wip: adding door interaction 2025-10-01 00:30:08 +02:00
Theo Champion
ebd4b282cf feat: added door in the game (can't open right now) 2025-09-30 17:50:49 +02:00
17 changed files with 404 additions and 27 deletions

View file

@ -31,8 +31,10 @@ SOURCEFILES = \
src/player/move_step.c \
src/player/register_weapons.c \
src/player/weapons.c \
src/player/pay.c \
src/raycast/barricades.c \
src/raycast/ray.c \
src/raycast/ray2.c \
src/raycast/walls.c \
src/raycast/zombie_checker.c \
src/renderer/render.c \

235
ressources/door.xpm Normal file
View file

@ -0,0 +1,235 @@
/* XPM */
static char *door[] = {
/* columns rows colors chars-per-pixel */
"64 64 165 2 ",
" c #000001",
". c #0F0D0A",
"X c #100E0A",
"o c #100E0B",
"O c #110E0B",
"+ c #110F0B",
"@ c #120F0B",
"# c #100E0C",
"$ c #110E0C",
"% c #120F0C",
"& c #13100C",
"* c #14110C",
"= c #14100D",
"- c #14110D",
"; c #15120E",
": c #16120E",
"> c #17130E",
", c #18140F",
"< c #19140F",
"1 c #19150F",
"2 c #191510",
"3 c #1A1610",
"4 c #1B1610",
"5 c #1A1611",
"6 c #1B1611",
"7 c #1B1711",
"8 c #1D1812",
"9 c #1E1812",
"0 c #1F1913",
"q c #1F1A13",
"w c #201B14",
"e c #211B14",
"r c #211B15",
"t c #221C14",
"y c #231C15",
"u c #231D16",
"i c #241D16",
"p c #241E16",
"a c #251E16",
"s c #251E17",
"d c #251F17",
"f c #261F16",
"g c #261F17",
"h c #3C1313",
"j c #3C1413",
"k c #3C1414",
"l c #3D1414",
"z c #3D1514",
"x c #3C1615",
"c c #3D1715",
"v c #331C17",
"b c #381815",
"n c #3D1816",
"m c #3E1A17",
"M c #3E1C19",
"N c #3F1D19",
"B c #3D1E1A",
"V c #272017",
"C c #272018",
"Z c #282119",
"A c #292119",
"S c #292219",
"D c #29211A",
"F c #29221A",
"G c #2A221A",
"H c #2B231A",
"J c #2B231B",
"K c #2B241B",
"L c #2C241A",
"P c #2C241C",
"I c #2D251C",
"U c #2E251C",
"Y c #2F261C",
"T c #2F261D",
"R c #30271D",
"E c #3F211C",
"W c #31281E",
"Q c #32281E",
"! c #32291E",
"~ c #32291F",
"^ c #33291F",
"/ c #222222",
"( c #342B20",
") c #342B21",
"_ c #352B21",
"` c #352C21",
"' c #362C21",
"] c #362D22",
"[ c #372D22",
"{ c #382D22",
"} c #382E22",
"| c #382E23",
" . c #392F23",
".. c #392F24",
"X. c #3A2F24",
"o. c #3A3024",
"O. c #3B3025",
"+. c #3D3125",
"@. c #3D3226",
"#. c #3E3327",
"$. c #3F3327",
"%. c #3F3427",
"&. c #3E3328",
"*. c #3F3428",
"=. c #343434",
"-. c gray21",
";. c #401C19",
":. c #401F1A",
">. c #42211C",
",. c #40221C",
"<. c #40231D",
"1. c #43231D",
"2. c #42251E",
"3. c #42251F",
"4. c #432721",
"5. c #442720",
"6. c #472A22",
"7. c #442E24",
"8. c #492E24",
"9. c #413528",
"0. c #403529",
"q. c #413629",
"w. c #423629",
"e. c #40362A",
"r. c #4A3429",
"t. c #49342A",
"y. c #45392B",
"u. c #46392C",
"i. c #46392D",
"p. c #473A2C",
"a. c #473A2D",
"s. c #483B2D",
"d. c #483B2E",
"f. c #493C2D",
"g. c #493C2F",
"h. c #493D2F",
"j. c #4A3D2F",
"k. c #4B3E2F",
"l. c #533D2F",
"z. c #4B3E30",
"x. c #4C3E30",
"c. c #4D3F30",
"v. c #4E4031",
"b. c #4F4031",
"n. c #504132",
"m. c #514232",
"M. c #514233",
"N. c #524333",
"B. c #534434",
"V. c #544535",
"C. c #554636",
"Z. c #544637",
"A. c #564737",
"S. c #594A38",
"D. c #5B4B3A",
"F. c #5D4E3B",
"G. c #60503D",
"H. c #63523F",
"J. c #474646",
"K. c #484848",
"L. c gray31",
"P. c #848382",
"I. c #989796",
"U. c #DADADA",
"Y. c #DDDDDD",
/* pixels */
" ",
" C.H.C.C.H.C.C.C.F k.C.C.H.H.C.C.C.H.F C.C.H.C.C.C.H.H.C.C.H.F C.C.C.H.H.C.C.C.H.C.C.F H.k.C.C.H.H.C.k.C.F H.k.C.C.H.H.C.C.H. ",
" C.k.k.C.H.k.C.C.F k.C.C.H.H.C.C.C.H.F C.C.k.C.k.C.H.H.C.C.H.F C.k.C.H.H.k.C.C.H.C.C.F H.k.C.C.H.H.C.k.C.F H.C.k.k.H.H.C.C.H. ",
" C.k.C.C.H.C.k.C.s { M.C.H.H.C.C.C.H.F C.k.H.C.k.C.H.H.C.C.H.F C.k.C.H.H.k.C.C.H.C.C.F H.k.C.C.H.H.C.k.k.F H.C.C.k.H.H.C.C.H. ",
" C.k.C.C.H.C.k.@.u s ^ @.D.H.C.C.C.H.F k.k.H.C.k.C.H.H.C.C.H.F k.C.C.H.H.k.C.C.H.k.C.F H.k.k.C.H.H.C.C.k.F H.C.C.C.k.H.C.C.H. ",
" C.H.C.C.H.s.F Y = s F p.v.v.C.C.C.k.F C.C.H.C.k.C.H.H.C.C.k.F C.C.2.H.H.k.C.C.H.k.C.F H.k.k.k.H.H.C.C.k.F H.k.k.C.H.k.C.C.H. ",
" C.H.C.C.C.Y ..r . + 7 [ k.k.C.k.k.H.F C.C.H.C.k.C.H.H.C.C.k.F C.C.C.m 6.C.C.C.H.k.C.F H.k.C.C.H.H.C.C.k.F H.k.C.C.H.H.C.C.H. ",
" C.H.C.v.c.{ = C . + 0 Y v.k.v.k.C.H.F C.C.H.C.k.C.H.H.C.k.k.F C.C.C.6.k.k.2.2.H.C.C.F H.H.C.C.H.H.C.C.k.F H.C.C.C.H.H.C.C.H. ",
" C.k.v.s.w.F 0 . . . = s { M.y.C.C.H.F C.C.H.C.k.k.H.H.C.k.H.F C.2.2.H.H.2.k m m 2.C.F H.H.C.C.H.H.C.k.k.F H.C.C.C.k.H.C.k.H. ",
" C.k.C.w.c.r . . . . + 0 ^ p.k.C.C.H.F C.k.H.C.C.k.H.H.C.C.H.F C.C.C.H.6.k k k k m C.F H.H.C.C.H.H.C.C.C.F H.C.C.k.H.H.C.C.C. ",
" C.k.C.v.c.) . . . . . + ^ w.k.C.C.H.F C.k.H.C.C.k.H.H.C.C.H.F C.C.m m m k m m k m C.F H.H.C.C.H.H.C.C.C.F H.C.C.C.H.H.C.C.C. ",
" C.k.C.C.c.u ^ . . . 1 { Y c.C.C.C.H.F C.k.k.C.C.C.H.H.C.C.H.F C.m 2.m m m 2.m m 2.C.F H.H.C.C.H.k.C.C.C.F H.C.C.C.H.H.C.C.C. ",
" C.k.C.C.D.F s F . + [ F k.H.C.C.C.H.F C.C.H.C.C.C.H.k.C.C.H.F C.C.k k 6.C.C.C.H.C.C.F H.k.k.C.H.H.k.C.C.F H.C.k.C.H.H.C.C.C. ",
" C.k.C.C.H.%.y...= & 0 ..D.H.C.C.C.H.F C.C.H.C.C.C.H.H.C.C.H.F C.2.C.k.H.2.C.2.6.2.C.F H.H.k.C.H.H.C.C.C.F H.k.C.C.H.H.k.C.C. ",
" C.H.C.C.H.C.w.v.% r @.C.H.H.C.C.C.H.F C.C.H.C.C.k.H.H.C.C.H.F C.C.Y.H.k.C.C.2.m C.C.F H.H.k.C.H.H.C.C.C.F H.k.C.C.H.H.k.k.H. ",
" C.H.C.C.H.k.C.C.0 ^ M.C.H.k.C.C.k.H.F C.k.H.C.C.k.H.H.C.C.H.F C.C.Y.k.k.C.m C.H.C.C.F H.Y.Y.Y.Y.Y.Y.Y.C.F H.C.C.C.H.H.k.C.H. ",
" C.H.C.C.H.k.C.C.u C.C.C.H.k.C.C.k.H.F C.k.H.C.C.k.H.H.C.C.H.F C.C.C.Y.H.C.C.C.H.C.C.F H.Y.C.C.H.H.k.Y.C.F H.k.C.C.H.H.k.C.H. ",
" C.H.C.k.H.k.C.C.F C.C.C.H.H.C.k.k.H.F C.k.H.C.C.C.H.H.C.C.H.F C.C.C.Y.H.C.C.C.H.C.C.F H.Y.C.C.H.H.C.k.Y.F H.k.C.C.H.H.k.C.H. ",
" C.H.k.k.H.k.C.C.F C.C.C.H.H.C.k.C.H.F C.C.k.C.C.C.H.H.Y.Y.Y.F C.C.k.Y.H.C.C.k.H.k.C.F H.Y.C.C.H.H.C.k.Y.F H.C.k.C.H.H.C.k.k. ",
" C.H.k.C.H.C.C.C.F C.C.C.Y.H.C.k.C.H.I.C.C.k.C.C.C.Y.Y.C.C.H.F C.k.k.Y.H.C.C.k.H.C.C.F H.Y.C.C.H.H.C.C.Y.I.H.C.k.C.H.H.C.k.k. ",
" C.k.C.C.H.C.C.C.F C.k.C.Y.H.C.k.C.H.I.Y.C.k.C.C.Y.H.H.k.C.H.F C.k.C.Y.H.C.C.C.k.C.C.F H.Y.C.C.H.H.Y.Y.k.F H.C.k.C.H.H.C.C.H. ",
" C.k.C.C.H.C.C.C.F C.k.C.Y.H.C.C.C.H.F Y.C.H.C.C.Y.H.H.k.C.H.F C.k.C.Y.H.C.C.C.k.C.C.F H.Y.Y.Y.Y.Y.C.C.k.F H.C.C.C.H.H.k.C.H. ",
" C.k.C.C.H.k.C.C.F C.k.C.Y.H.C.C.C.H.F Y.C.H.C.C.C.Y.H.C.k.H.F C.C.C.Y.H.C.C.C.k.C.C.F H.H.Y.C.H.H.C.C.k.F H.C.C.C.H.H.k.k.H. ",
" C.H.k.C.H.C.k.C.F r.C.C.Y.Y.C.C.C.H.F Y.C.H.C.C.C.Y.H.Y.Y.H.F C.C.C.Y.H.C.C.C.k.C.C.F H.H.Y.C.H.k.C.C.k.F H.C.C.C.H.H.C.k.k. ",
" C.H.k.C.H.C.k.C.F 2.2.C.H.Y.C.C.C.H.F C.Y.H.C.C.C.Y.Y.C.C.H.F C.C.C.Y.H.C.C.C.k.Y.Y.F H.H.Y.C.H.k.C.C.C.F H.C.C.k.H.H.C.C.H. ",
" C.H.k.C.H.C.k.C.F C.m ,.H.Y.C.C.C.U.I.Y.Y.H.C.C.C.Y.H.C.C.H.F C.C.C.Y.H.C.C.Y.Y.Y.C.F H.H.Y.C.H.k.C.C.C.F H.C.k.C.H.H.C.C.H. ",
" C.H.k.C.H.C.k.C.F C.m k k.Y.C.Y.Y.H.F C.Y.Y.C.k.C.Y.H.C.C.H.F C.k.C.H.Y.Y.Y.C.H.C.C.F H.k.Y.C.H.k.C.C.C.F H.C.k.C.H.H.k.C.H. ",
" C.-.-.-.K.-.-.C.F 2.m m 6.H.Y.C.C.H.F C.C.Y.C.k.C.H.Y.C.Y.Y.P.C.C.C.k.Y.C.C.C.H.C.C.F H.k.Y.C.H.H.C.C.C.F l.r.,.r.8.H.k.C.H. ",
" C.H.C.C.K.C.k.C.F C.m m 6.6.Y.C.C.H.F C.C.Y.C.C.C.H.Y.Y.k.H.F C.C.C.k.H.C.C.C.H.C.C.F H.k.Y.Y.H.H.C.k.C.F l.:.N k k 8.k.C.H. ",
" C.H.C.C.K.C.C.C.F 2.C.C.6.m Y.C.C.H.F C.C.Y.C.C.C.H.H.k.C.H.F C.C.C.k.H.C.C.C.k.C.C.F H.k.C.Y.H.H.C.k.C.F H.C.N k k l.k.C.H. ",
" C.H.k.C.K.C.C.C.F C.r.C.H.H.C.Y.C.H.F C.C.Y.C.C.C.H.H.k.C.H.F C.C.C.k.H.C.C.C.k.C.C.F H.k.C.Y.H.H.C.k.C.F H.C.r.k ,.H.C.C.H. ",
" C.H.k.C.H.C.C.C.F 7.r.C.H.l.C.Y.C.H.F C.C.H.C.C.C.H.H.k.C.H.F C.C.k.k.H.C.C.C.k.C.C.F H.k.C.C.Y.H.C.k.k.F l.C.:.k 8.H.C.C.H. ",
" C.J.J.J.J.J.J.C.F k.C.C.H.H.r.Y.Y.H.F C.C.H.k.C.C.H.H.k.C.H.F C.C.C.H.H.C.k.C.H.k.C.F H.k.C.C.H.H.C.C.k.F H.r.k m l.H.C.C.H. ",
" C.-.-.-.-.J.J.C.F C.C.C.H.H.C.C.C.H.F C.C.H.k.C.C.H.H.C.C.H.F C.C.C.H.H.C.k.C.H.k.C.F H.k.C.C.H.H.C.C.7.F H.:.m :.l.l.C.C.H. ",
" C.-./ -.-.J.J.k.F C.C.C.H.H.C.C.C.H.F C.C.H.k.C.C.H.H.C.C.H.F C.C.C.D.C.w.w.v.D.y.C.F H.k.k.C.H.H.C.C.k.F l.:.N r.H.7.k.C.H. ",
" C.-./ -.-.J.J.C.F C.C.C.H.k.C.C.C.H.F C.C.H.C.k.C.H.H.C.C.H.F C.C.y.o.) Y ^ Y C.y.C.F H.H.k.C.H.H.C.r.k.F l.m k.C.l.k.k.C.H. ",
" C.H.k.C.H.C.C.C.F C.C.C.H.H.k.C.C.H.F C.C.H.C.k.C.H.H.C.C.H.F v.v.k.D.R p.^ ^ *.C.k.F H.H.C.k.H.H.k.C.r.F :.C.k.C.H.H.C.k.H. ",
" [ C.k.k.H.C.C.C.F C.C.C.H.H.k.C.C.H.F C.C.H.C.k.C.H.H.k.C.H.F v.C.y.{ y.F 7 u r K k.F H.H.C.k.H.k.k.C.C.F 8.C.C.C.8.H.C.k.k. ",
" F M.s.k.H.C.C.k.F C.C.C.H.H.k.C.C.H.F C.C.H.C.k.C.H.H.k.C.H.F C.C.[ @.R = & + = 0 o.F H.H.C.C.H.H.C.C.C.F 8.C.C.C.H.H.k.C.k. ",
" r z.v.k.H.C.C.k.F C.k.C.H.H.C.C.C.H.F C.C.H.C.k.C.H.H.k.C.H.F C.v.s @.1 + + % = 7 ^ F H.H.C.C.H.H.C.C.C.F 8.r.C.C.H.H.C.C.H. ",
" 1 { { v.C.C.k.k.F C.k.C.H.H.C.C.C.H.F C.C.H.C.C.k.H.H.k.C.H.F C.v.Y K = = + + = 1 u F H.H.C.C.H.H.C.C.C.F H.C.C.C.H.H.C.C.H. ",
" 7 7 s &.F.k.k.C.F C.C.C.H.H.k.C.k.H.F C.C.H.C.C.k.H.H.C.C.H.F C.[ w.K F = = = & = ^ F H.H.C.k.H.H.k.C.C.F H.C.k.C.H.H.C.C.H. ",
" . & w.V F.s.k.C.F C.C.C.H.k.C.C.k.H.F C.C.H.C.C.C.H.H.C.C.H.F C.p.v.@.) 0 u = 1 7 p.F H.H.C.k.H.H.C.k.C.F H.C.C.C.H.H.C.C.H. ",
" . . F { H.p.w.C.F C.C.C.H.H.C.C.k.H.F C.C.k.C.C.C.H.H.C.C.H.F C.C.@.y.@.^ ^ u { ^ p.F H.H.C.k.H.H.C.k.C.F H.C.C.C.H.H.C.C.H. ",
" . . C { C.p.k.C.F C.C.C.H.H.C.k.k.H.F C.C.H.k.C.C.H.H.C.C.H.F C.k.@.@.c.p.w.[ *.C.C.F H.H.k.C.H.H.C.k.C.F H.C.C.C.H.H.k.C.H. ",
" & % k.F k.s.k.C.F C.C.C.H.H.C.k.C.H.F C.C.H.C.k.k.H.H.C.C.H.F C.k.C.H.H.p.p.o.y.p.C.F H.H.k.C.H.6.2.C.C.F H.C.C.C.H.H.k.C.H. ",
" = & { ^ C.s.k.C.F C.7.C.H.H.C.k.C.H.F C.C.H.C.C.k.k.H.C.C.H.F C.C.C.H.H.C.C.k.H.C.C.F H.H.C.C.6.h h C.C.F H.k.C.C.H.H.k.k.H. ",
" . V { w.C.s.k.C.F C.C.k.H.H.C.7.C.H.F C.C.H.C.C.C.k.k.C.C.H.F C.C.C.H.H.C.C.k.H.C.C.F H.H.k.2.m h h ,.C.F H.C.k.C.H.H.C.k.H. ",
" & 7 { { C.B.C.C.F C.C.,.6.6.C.k.C.H.F C.C.H.C.C.C.H.k.k.C.H.F C.C.C.k.k.C.C.C.k.C.C.F H.H.k.2.k j ,.k.C.F H.C.k.k.H.H.C.C.H. ",
" % V L s.C.C.C.C.F C.C.k.m k m k.C.H.F C.C.H.C.C.C.H.H.k.C.H.F C.C.C.H.H.k.C.C.k.k.C.F H.H.C.k.k m C.k.C.F H.C.C.C.H.H.C.C.H. ",
" = u ^ M.H.C.C.C.F r.r.k.,.m r.k.C.H.F C.C.H.C.C.C.H.H.C.C.H.F C.C.C.H.H.C.C.C.H.k.C.v H.6.2.k k m C.7.7.F H.C.C.C.H.H.C.C.H. ",
" 1 7 *.B.H.k.k.C.F C.:.7.k m 5.7.7.H.F C.C.H.k.C.C.H.H.C.C.H.F C.C.C.H.H.C.C.C.H.k.C.b l.H.k 2.6.m C.r.k.F H.C.C.C.H.H.C.C.H. ",
" 0 s M.C.H.k.k.k.F r.r.7.k k r.C.k.H.F C.C.H.k.C.C.H.H.C.C.H.F C.C.C.k.H.C.C.C.H.k.C.v H.6.k m H.6.2.2.,.F H.C.C.C.H.H.C.C.H. ",
" F 0 M.C.H.k.k.C.F 5.m ,.6.m N C.C.H.F C.C.H.k.C.C.H.k.C.C.H.F C.C.C.k.H.C.C.C.H.r.r.F H.m k x H.H.2.2.,.F H.k.k.C.H.H.C.k.H. ",
" 7 *.C.C.H.C.C.C.F r.C.m 6.6.2.C.C.H.F C.C.H.C.C.C.H.H.C.C.H.F C.C.C.k.H.C.C.k.H.C.C.F 6.6.x m l.l.2.C.C.F H.C.C.C.H.H.C.k.H. ",
" & C.C.C.H.C.C.C.F r.C.2.H.8.C.C.C.H.F C.C.H.C.C.C.H.H.C.k.H.F C.C.C.H.H.C.C.k.k.C.C.F 6.m 2.2.6.H.C.C.C.F H.C.C.C.H.H.k.k.H. ",
" r C.C.Z.C.C.B.B.B.B.B.Z.r.4.B.C.C.C.C.B.B.B.B.C.B.Z.Z.C.B.C.B.C.C.C.C.C.B.C.B.B.B.B.B.C.2.2.m 2.C.C.C.C.B.C.C.B.B.B.Z.C.C.C. ",
" { L.k.z.w.k.k.k.*.w.w.w.*.L.k.k.k.k.k.k.k.k.k.z.z.w.w.w.w.k.L.k.k.k.k.k.k.k.k.k.k.z.z.k.k x N w.L.k.k.k.k.*.*.*.k.z.z.k.L.w. ",
" C.w.w.w.Z.Z.Z.C.Z.C.C.B.B.*.*.w.w.C.C.B.B.*.*.w.B.Z.Z.C.B.w.w.w.w.C.C.C.B.w.*.w.w.*.4.m m 2.C.C.C.C.C.C.B.C.C.Z.w.w.w.C.C.C. ",
" k.k.k.z.z.z.k.z.w.w.w.k.k.k.k.k.k.k.k.k.k.k.k.k.z.z.z.k.k.k.k.L.k.k.k.k.k.k.k.z.z.z.E k.k.k.k.k.k.w.w.w.k.k.k.z.z.z.z.k.k.k. ",
" k.k.k.k.w.*.k.z.z.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.*.*.*.w.w.w.z.k.k.z.k.k.k.k.k.k.k.k.k.k.k.k.w.k.k.w.w.k.w.w.w.k. ",
" C.C.C.C.C.B.C.Z.Z.C.C.w.w.*.*.B.L.B.B.w.w.*.w.C.C.Z.B.Z.Z.B.L.w.B.C.C.B.w.*.*.w.C.B.B.B.Z.B.Z.*.w.*.B.Z.Z.B.C.C.C.C.B.Z.C.B. ",
" k.L.w.w.*.w.*.w.k.k.k.z.k.k.k.k.k.k.k.z.k.z.k.k.k.k.*.w.w.z.k.k.k.k.k.k.k.z.k.k.k.k.k.k.k.w.L.k.k.k.k.z.w.w.w.*.*.k.k.z.L.k. ",
" B.B.C.C.C.C.B.Z.B.B.B.C.w.w.B.B.B.B.B.Z.Z.Z.Z.B.B.B.B.Z.Z.Z.Z.L.B.B.B.Z.Z.Z.Z.C.B.B.B.Z.Z.Z.Z.B.B.B.B.Z.Z.Z.Z.B.B.*.*.Z.Z.Z. "
};

View file

@ -0,0 +1,22 @@
NO ressources/north.xpm
SO ressources/south.xpm
WE ressources/west.xpm
EA ressources/east.xpm
F 220,100,0
C 225,30,0
1111111111111111111111111
1000000000110000000000001
1011000001110000z00000001
10D1000000000000000000001
111111111011000001110M00000000001
10000000001100000111011111P111111
11110111111111011100000010001
11110111111111011101010010001
11000000110101011100000010001
100000000000000011J0000010001
10000000000000001101010010001
11Q00001110101011111011110N0111
11110111 1110101 101111010001
11111111 1111111 111111111111

View file

@ -6,7 +6,7 @@
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/07/17 14:59:37 by kcolin #+# #+# */
/* Updated: 2025/09/22 17:17:23 by tchampio ### ########.fr */
/* Updated: 2025/10/01 13:50:59 by tchampio ### ########.fr */
/* */
/* ************************************************************************** */
@ -36,9 +36,11 @@ typedef struct s_cub3d_data
t_img_data *perk_logos[3];
t_img_data *tally_marks[5];
t_img_data *round_figures[10];
t_img_data *door_texture;
t_mapdata *map;
t_player player;
t_keypresses keypresses;
int door_amount;
int *screen_matrix;
int last_since_shoot; // temp
int delta;

View file

@ -6,7 +6,7 @@
/* By: tchampio <tchampio@student.42lehavre.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/09/03 17:02:08 by tchampio #+# #+# */
/* Updated: 2025/09/22 17:17:34 by tchampio ### ########.fr */
/* Updated: 2025/10/01 13:51:03 by tchampio ### ########.fr */
/* */
/* ************************************************************************** */
@ -109,6 +109,7 @@ void load_textures(t_cub3d_data *data)
"ressources/barricades_6.xpm");
data->barricades_texture[5] = load_single_texture(data,
"ressources/barricades_7.xpm");
data->door_texture = load_single_texture(data, "ressources/door.xpm");
load_points_textures(data);
load_perk_logos(data);
load_round_indicators(data);

View file

@ -6,7 +6,7 @@
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/08/06 11:25:05 by kcolin #+# #+# */
/* Updated: 2025/09/09 10:15:46 by tchampio ### ########.fr */
/* Updated: 2025/10/01 14:11:11 by tchampio ### ########.fr */
/* */
/* ************************************************************************** */
@ -25,14 +25,14 @@ static bool out_of_bounds(t_mapdata *data, int x, int y)
bool blocks_movement(t_mapdata *data, int x, int y)
{
if (out_of_bounds(data, x, y) || ft_strchr("12345678", data->map[y][x]))
if (out_of_bounds(data, x, y) || ft_strchr("12345678dP", data->map[y][x]))
return (true);
return (false);
}
bool blocks_view(t_mapdata *data, int x, int y)
{
if (out_of_bounds(data, x, y) || ft_strchr("12345678", data->map[y][x]))
if (out_of_bounds(data, x, y) || ft_strchr("12345678dP", data->map[y][x]))
return (true);
return (false);
}

View file

@ -6,7 +6,7 @@
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/07/17 14:18:13 by kcolin #+# #+# */
/* Updated: 2025/09/22 17:16:41 by tchampio ### ########.fr */
/* Updated: 2025/10/01 14:08:45 by tchampio ### ########.fr */
/* */
/* ************************************************************************** */
@ -21,11 +21,14 @@
* J - Juggernog perk
* D - Double tap perk
* 2345678 - barricade and it's levels starting from 2 (every planks) to 8
* beware of zombies
* z - beware of zombies
* d - closed door
* i - open dooro
* P - payable door
*/
bool has_forbidden_characters(char *line)
{
static const char *allowedchars = " 10234567NSEWMQJDz\n";
static const char *allowedchars = " 10234567NSEWMQJDzdiP\n";
size_t strsize;
int i;

View file

@ -6,7 +6,7 @@
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/08/05 12:53:06 by kcolin #+# #+# */
/* Updated: 2025/08/12 12:16:51 by kcolin ### ########.fr */
/* Updated: 2025/09/30 20:08:31 by tchampio ### ########.fr */
/* */
/* ************************************************************************** */

27
src/player/pay.c Normal file
View file

@ -0,0 +1,27 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* door.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: tchampio <tchampio@student.42lehavre.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/10/01 13:59:11 by tchampio #+# #+# */
/* Updated: 2025/10/01 14:05:57 by tchampio ### ########.fr */
/* */
/* ************************************************************************** */
#include "../cub3d_data.h"
#include "../../libft/includes/libft.h"
bool pay(t_cub3d_data *data, int amount, bool isdoor)
{
if (data->player.points < amount)
{
ft_printf("Not enough points :(\n");
return (false);
}
data->player.points -= amount;
if (isdoor)
data->door_amount += 250;
return (true);
}

20
src/player/pay.h Normal file
View file

@ -0,0 +1,20 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* pay.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: tchampio <tchampio@student.42lehavre.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/10/01 14:05:08 by tchampio #+# #+# */
/* Updated: 2025/10/01 14:06:19 by tchampio ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef PAY_H
# define PAY_H
# include "../cub3d_data.h"
bool pay(t_cub3d_data *data, int amount, bool isdoor);
#endif // PAY_H

View file

@ -6,7 +6,7 @@
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/07/17 15:51:29 by kcolin #+# #+# */
/* Updated: 2025/09/17 16:52:41 by tchampio ### ########.fr */
/* Updated: 2025/09/30 20:31:08 by tchampio ### ########.fr */
/* */
/* ************************************************************************** */
@ -49,6 +49,8 @@ typedef struct s_player
t_vec2 movement;
t_weapon *weapon;
t_sprite *aimed_zombie;
int closest_door[2];
bool can_open_door;
} t_player;
#endif // PLAYER_H

View file

@ -6,7 +6,7 @@
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/07/31 11:55:41 by kcolin #+# #+# */
/* Updated: 2025/09/15 14:08:27 by tchampio ### ########.fr */
/* Updated: 2025/10/02 00:10:20 by tchampio ### ########.fr */
/* */
/* ************************************************************************** */
@ -19,7 +19,6 @@
#include "../cub3d_data.h"
#include <float.h>
#include <math.h>
#include <stdlib.h>
#include "../map/collision.h"
void init_ray(t_ray *ray, int pos_x, t_player *player)
@ -63,21 +62,17 @@ void calculate_wall_dist(t_ray *ray, int x, t_cub3d_data *data)
{
if (x == WIDTH / 2)
check_for_zombies(ray, data);
if (ray->side_dist_x < ray->side_dist_y)
{
ray->side_dist_x += ray->delta_dist_x;
ray->map_x += ray->step_x;
ray->side = NORTH;
}
else
{
ray->side_dist_y += ray->delta_dist_y;
ray->map_y += ray->step_y;
ray->side = SOUTH;
}
if (!blocks_view(data->map, ray->map_x, ray->map_y)
&& data->map->map[ray->map_y][ray->map_x] == 'i')
handle_door_ray(ray, data);
step_ray(ray);
if (blocks_view(data->map, ray->map_x, ray->map_y))
{
if (x == WIDTH / 2)
handle_door_ray(ray, data);
break ;
}
}
if (ray->side == NORTH)
ray->wall_dist = ray->side_dist_x - ray->delta_dist_x;
else

View file

@ -6,7 +6,7 @@
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/08/05 12:49:49 by kcolin #+# #+# */
/* Updated: 2025/09/09 14:01:28 by tchampio ### ########.fr */
/* Updated: 2025/10/02 00:11:01 by tchampio ### ########.fr */
/* */
/* ************************************************************************** */
@ -15,6 +15,7 @@
# include "../map/mapdata.h"
# define BARRICADE_TICK 55000
# include "../cub3d_data.h"
/*
* plane - plan de camera (vectoriel)
@ -53,4 +54,7 @@ typedef struct s_ray
double wall_x;
} t_ray;
void handle_door_ray(t_ray *ray, t_cub3d_data *data);
void step_ray(t_ray *ray);
#endif // RAY_H

60
src/raycast/ray2.c Normal file
View file

@ -0,0 +1,60 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ray2.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: tchampio <tchampio@student.42lehavre.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/10/02 00:09:16 by tchampio #+# #+# */
/* Updated: 2025/10/02 00:11:51 by tchampio ### ########.fr */
/* */
/* ************************************************************************** */
#include "ray.h"
#include "../../libft/includes/libft.h"
#include "../player/pay.h"
void handle_door_ray(t_ray *ray, t_cub3d_data *data)
{
char current_tile;
current_tile = data->map->map[ray->map_y][ray->map_x];
if (ft_strchr("diP", current_tile) && ray->wall_dist < 1.5)
{
data->player.closest_door[0] = ray->map_x;
data->player.closest_door[1] = ray->map_y;
data->player.can_open_door = true;
if (data->keypresses.is_f_pressed)
{
data->keypresses.is_f_pressed = false;
if (current_tile == 'd')
data->map->map[ray->map_y][ray->map_x] = 'i';
else if (current_tile == 'P' && pay(data, data->door_amount, true))
data->map->map[ray->map_y][ray->map_x] = '0';
else if (current_tile == 'i')
data->map->map[ray->map_y][ray->map_x] = 'd';
}
}
else
{
data->player.closest_door[0] = -1;
data->player.closest_door[1] = -1;
data->player.can_open_door = false;
}
}
void step_ray(t_ray *ray)
{
if (ray->side_dist_x < ray->side_dist_y)
{
ray->side_dist_x += ray->delta_dist_x;
ray->map_x += ray->step_x;
ray->side = NORTH;
}
else
{
ray->side_dist_y += ray->delta_dist_y;
ray->map_y += ray->step_y;
ray->side = SOUTH;
}
}

View file

@ -6,7 +6,7 @@
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/07/31 13:17:39 by kcolin #+# #+# */
/* Updated: 2025/09/22 17:17:54 by tchampio ### ########.fr */
/* Updated: 2025/10/01 23:00:52 by tchampio ### ########.fr */
/* */
/* ************************************************************************** */
@ -66,6 +66,8 @@ static int get_color(t_cub3d_data *data, t_ray *ray, int tex_y)
if (ft_strchr("234567", data->map->map[ray->map_y][ray->map_x]))
return (my_mlx_pixel_get(get_right_barricade(data,
data->map->map[ray->map_y][ray->map_x]), tex_x, tex_y));
if (ft_strchr("dP", data->map->map[ray->map_y][ray->map_x]))
return (my_mlx_pixel_get(data->door_texture, tex_x, tex_y));
if (dir == NORTH)
texture = data->no_texture;
else if (dir == SOUTH)

View file

@ -6,7 +6,7 @@
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/08/18 13:05:31 by kcolin #+# #+# */
/* Updated: 2025/09/22 17:18:55 by tchampio ### ########.fr */
/* Updated: 2025/10/01 13:57:48 by tchampio ### ########.fr */
/* */
/* ************************************************************************** */
@ -43,6 +43,7 @@ void destroy_textures(t_cub3d_data *data)
i = 0;
while (i < 6)
destroy_texture(data, data->barricades_texture[i++]);
destroy_texture(data, data->door_texture);
}
void destroy_sprites(t_cub3d_data *data)

View file

@ -113,5 +113,6 @@ void init_cub3d_data(t_cub3d_data *data, char **argv)
load_textures(data);
data->sprite_list = ft_calloc(sizeof(t_sprite *), MAX_SPRITES);
ft_memset(data->sprite_distances, -1, MAX_SPRITES);
data->door_amount = 750;
place_base_sprites(data, data->map->map);
}