From b1fc59d976eda783f0a24afa99b6947d47ab3db2 Mon Sep 17 00:00:00 2001 From: Tituya Date: Thu, 30 Jul 2020 01:51:06 +0200 Subject: [PATCH] =?UTF-8?q?textures=20+=20nouveau=20bloc=20fragile=20+=20n?= =?UTF-8?q?ouveau=20niveau=20+=20update=20coin/m=C3=A9dailles?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AST3.g3a | Bin 155484 -> 158980 bytes assets-cg/img/chrono1.png | Bin 0 -> 610 bytes assets-cg/img/chrono2.png | Bin 0 -> 607 bytes assets-cg/img/damaged.png | Bin 0 -> 616 bytes assets-cg/img/key2.png | Bin 0 -> 258 bytes assets-cg/img/key2block.png | Bin 0 -> 599 bytes assets-cg/img/keyblock.png | Bin 418 -> 590 bytes compile_level.py | 4 ++-- editor/AST3generator.py | 5 ++++- editor/img/blackout.png | Bin 429 -> 447 bytes editor/img/chrono1.png | Bin 136 -> 610 bytes editor/img/chrono2.png | Bin 141 -> 607 bytes editor/img/damaged.png | Bin 0 -> 616 bytes editor/img/key2block.png | Bin 322 -> 631 bytes editor/img/keyblock.png | Bin 312 -> 590 bytes editor/levels/1.lvl | 2 +- editor/levels/2.lvl | 4 ++-- editor/levels/5.lvl | 2 +- editor/levels/8.lvl | 1 + include/setlevel.h | 2 +- project.cfg | 2 +- src/collide.c | 3 ++- src/drawlevel.c | 16 ++++++++++++---- src/main.c | 37 ++++++++++++++++++++++++------------ src/menu.c | 2 +- src/setlevel.c | 18 ++++++++++++------ src/times.c | 32 +++++++++++++++++-------------- 27 files changed, 83 insertions(+), 47 deletions(-) create mode 100644 assets-cg/img/chrono1.png create mode 100644 assets-cg/img/chrono2.png create mode 100644 assets-cg/img/damaged.png create mode 100644 assets-cg/img/key2.png create mode 100644 assets-cg/img/key2block.png create mode 100644 editor/img/damaged.png create mode 100644 editor/levels/8.lvl diff --git a/AST3.g3a b/AST3.g3a index 260f915c5803aa1efa5d138a35bca0989c251bca..648ae6e7bbf3b6542c527fc2b7923a5348f63c07 100644 GIT binary patch delta 10715 zcmbU{Z9r2;wsUWguTYJEK$V&RiXdoi01?ni2+FsjKwGq01B7q%fq>fT_GSz1!z!ZQ zh`v7C%~tE{b8XUXTJ&{w%Wl_hyS6n^43@fW0tVZyYt1a&nOa-PW<5zwdpa_smVd574x)&iIR9r0&Or&PZakg4jD3_Rzm+> z2dT#aA&UFNK~3}lVuLw^F!DOWPzg|z2orEwfJH-}*($&gKJz4()X+!Y^Wy?H{dRpA zJ1X~IF1|*|ygTC5U)tj+N=!{yv^v8DxJQ2msWMn+0Qh~nxE`77TMdFS^;ezYcC-ep-R|3q%>Nz4yV6W1QTyx?^W$23K-3+yFK zaC<WS(lXcpTVPo%Bi8au8 zi}+XrYK%W(W4s2x{>Jb5-$D4DY8>EyZSX5G{+0Mpd%&FxA!B2N3H_WXz6TS3WC*iW zNf*6O4fo^HLRI68r#mhcGqYLA^nkS^^beP!pQuuk`!MJ8j_CD)8$M6#7*@m><6P z-%~?MoKqwFAFFe2aB8Jf=WGxCMaVbled#O2#K)4}lb!}`j`+%EU1N^8T2%5?3ys%Ka_#zmjurYzd=eT=$mQ@H@Cg%C-?76llCXNQ~AWC`wCSCRVD5{GR-hbdpwB zE(VR}jdXc*`Zt2X9cB~Za3wcuIlaWq_TzzlFou+C1+@+V?&!Yj6=@=ge} zqvg-ZyU-Qv-zoXv#&qz<`72|+|CSokdCpErpP3R=;xyMaEOij+FXjG9ah=mrqY+6b z_f@Bfw&0xSvR428eX7jV02^eFvmTaih}3(#NE7+fwR5SjbLF4{>ED z1;bN0_2$-owR(KSd<9i^^LpSrD!!OP0ozCN6I&7_nr8M-|=Q zL5hZP`PBVwRL9K1k%*+7GrmgeO|z=@mu8EvJO#Zp-E-MuM*!Qaw5IM~qg#^=s{#B+L@utfc{GbBjHgU;;Y0GUw8*R zPe_t++D{$2Wk#wDl}nVY%Y+k@G?ZSnTpN8mLsp}zK}5@$ct zP&|;J4unOf^e?xS*qa`qUGJi$?WOvbf_snPiUl0(<3HMo{+$70$>f*Nq=D-N!)B+q zc^L~thpo%N(aX%sjp^XtmKP|?ldjc1JWfig4)>{y5cua41&?bum3ToPEc}c`m&|b& zLLxqed zUKs0`)K*&-(0D@~VJy?8?zn3#Q3rN-w&hj^Y`LM1*RsZcgYjr(0O0RzxdBJQv;o3h z{zX{soqkFh(@05^jAiyxJjpRKSMN%b;C@|`mHOF#;PV<`*1^6lffIYRjWD7YaW4yd zS_Ib`4X66LCQkig1eLDu*G@znth5`}sv z)hMwOm1O6SxS2^b9PO&|7P zb)#t33scpHl?3Th{Q5_8VpBrx#p=U~Q4-pw+DZL-%2icgyj`URWtdB~qSmw99#l9% znHXF;Pyu(|f`Val)Wv9*LhSs4;QN#pXq(HFXp?e5}S8(WMVIfy1 zDfNWl;{I*2{)bJ)>RJ5e`iN7r!6hHIZP@#Vq~H$P{*zwx-Dnb=fCoRcs0YdZlUJJ3 z#L{W7Z7BWrTCSh^fk>k-tij{YvZiMZ-ZPdp!o_G=UEYF+o23|1kYYXsc?RyD=JQYM zI=M^i6Kwt<>CJce14f1?3vBIUgXBUsKyw^3(*bJt>&=dlT9yrxE0Rgm;r8|~>37WQ zT?PrvGV3y36>75Tw!^#NPH(z3U01^2bt=^1f_#wZKr07m+U{egVor9@YLni>PTDBY z{G|cX8_5n5=``K4OtGUGi0DTb%K;sLrLKjF6 zBw4SJ_bDY@AAH(`>6SZr#S0ZLQ%qVh&EnHA*p#)qpdN$@7iI0c{6$ND)D8Vp#A{S5 zT%@9v=6SvI9W#~SQ{&Tizw@yw@EmJ=an)@*F>aG4OQS7OY2u;>n4h#SLHl>ivCQt7 zjjk*hhO}aqqh3W74#!RFzh{-{;vm}Q^=C)}s5zFI^mM7eok*w3{o|u7p|B(gmKo*! zz-`z9O9tUE{UWqihW*Lj&E4z zDf!__F*^!^C2f@XF*}7>q{b=pX4}OM%Iu56Y=rg5k0j9Rxa%Nt+A<0Ba~g+i1hd?MdLv)}zX`3K6<>>Fxn7DFv<2nb?xx5Y_M+7eUT=1cz;u;F@0T!DY&)nDk%?u zESJs|O9M2A>qLE3E5sWDtW|I!RFwxvJpexKn~JN%TA>lGfOMc#WG`g^n|T+8Li&S!dM^3U0M!$iuoTO*K$n8`WyyCzj*It5Z7NQFG*Z}M)brfM#>poR_;4N8n zC-uhX_%ha zYAi`yeQO|V`0Q^KcqKlWZl{xpks&_qbZLuG0gBCoInn=WMT~(O5zLYppLNYz3$vsu zO7k(!D!+iHKe~=N{5oQw7*k7cb-b7CW$Oq8FZ*-Py&MtqpGlr<$Up8wIEQ?AGZhN( zjWh&(!|7k1!Fs_ZJH`aTIckGoZ<-uxX%dI_HCdZ=eK}&snoCV^f;TzV=z65T%@WJ| zt($aT0(|3F4G`ZAeGT|dV{N!f>O>GwAL9x_^lsEdST|lJ((v*CCB%HeE#=fgCxl6j zCZZkQP4o_Y1BSe-vOIv*h~W4NuRo+2$QDZ}YZ+{cvRtsuy51cK1-FoCLVS6E3gWOgzMhiPgT%2>m!AbfEwR=o_vh*0MG+GDkFATY5>x>8bAV+& zC@~+EfCDsq-1-EwB#Sb+d$B;EH%Y`qkazI|8G9Jn|Kn zF!EgovYKDEC_Fn<;`!2W*P=}*KHIIhd(n(DT+W`sDcb^B-nx(pBA07}AQ_oqOq0{d zU$EK58cr9Dh@a)_p5^k156q#B8ad6|51W3%0u1zV3&47`z%EJ%Zii@3w^PvZZliWg z!YiVF)b7Cq?V#*rwgkuUT?a0Nl63je2DlIuk@8Qf;XUH<%hGQb&czOY7bj; z@6V#nr>W4AP;(4^{qpvgMb>P6sqJDE+(s?>sl?~v9PHUA&GXm$*u5^!!Y^GHXT|bB zzj^+4YOcQ}Ov62O_wVEzS(^BJvX7~0k%z;n+EQ{@(Z)zRLb*LVf?3E>fDOzr{?+bz z5w;V2MEl(CchTSY2VgkW_#hw=22{MR$4K~0!V-Gph95vEydraS42v@!<1vOOov+YDYb&3`qCqC-FD zs&?M;4BHA}aFA2)3Zf&;+}2%R(z!>ttoBGccNbURUg4ReBMd+;x99NPnRmF@-F>ud zDd*ks1}(c}db?vfHB)x!$Ruj<`w&w2*;NZIVP=CCv$ceY)Nr;vk)B1DiQ=Y`^V>V@ z8~*MCqE!i5jRW|N8x5P7i z6j9s_Zj&bpfNqs;E44usE~7w7^F0m#Eb_0VbHLeL9to2Wd~)&qSMo8QWBPt1Mr z)1|`M#z%-iHeII=!L7R)y`VaDqL~lTc4V{S(wnP?6>a)FG&&L^0$CburXB zaF7hztx(|$_7Kb;>fxQHfQ$$8sCdOK4NMA!%0OKSRb!#^!%HAp2UUGQnbBEUJ4p{^ zp@}$51$JhcJYJ*e=}*eW2w4gYuW6|~j~@C987Z4`+o`SFLfn4kxbLmjR6~D10ao!DNBw*$@;cUw!{Jsq*w8tR1=%Mj9dnjWd zA%s;CXbCevl>7XRjLC^01iy7Lckp|cN%pH@nvT44Ie&D!bs73g3%Ud!HG@s@H>kA*Jqm#^(gD7LJNFld>mpgQ1 z^JJ9sqy*(aJ!z7?RYNDj?o`|+N3sdT6b5oN?g=%Fy`jb)Sxy*$bps6atOg%pa98WO z?*BUGnG3_GR+{SH{tHDX-ryD=n@%SmG8G^D3+?#~%mP%@J2NSNd{KN7IhdjL5N638 zuGsLm32+ah5Ns+kzD5Nh`4Wg$e#$tGt2YIkX8d*`Jri-`EXVO+gaqm=Q@v@on};Ay z5Y3AX{NRs4yuC?C`mjc(Yae958MB8=IPn+XOjut$v_MhslLd6P2e5 zFi*fL&YUwtq&j78^=c@jk7BI#};j2j1Fh*Y~ z#B!N8z*l&>x~KkJN|!cqvQHCvNJ*Y)?Wb?h^xaWz^e;KS6@l>m1ulzJ!bZ6R6@o1S)?!u` z%=Z)U3x}}vmIT8&61*K=0fz{)u!)EjLvVJ&!!UYo6*Wz&xS1r3rK8vaGdNSHX$d3y z6Jf&Ea^071PI=5PdCHQ)b}+7&9`6g6;VxG+P9%x`?qUo zhT*>dwv-&SamESHlyKqNkjc!m{vIKZmlCqgfN9L^|8_{Rm{MG91IT0xERkxM$#BW#={=%N6dGz_TA zBTz;ulEK3R+?{y9H1c3X8rFLG}Kb7d4Pylnkt+L~!;U(B{*M1J#|B zl=b|`^CK@-DC~N6J*+P^UI@acU79F3eu#p{V@SB4pW|^RauxUsynuE>!c-zKpAd6E zwu%n)CN9WI56cP zm1sJ1MNG3}-DBDj<%n#A4BLjghr6%q@psrZLI9>5)ACpzcU|u`@Vb_#LK-C$z+Ts1 zS6^3tDeMq(U3OgwW4*w|g_Xg3jO|SCnO;Y?!#0RCNWlUV5URe8=x(-%0qO8EHU>R^SeJN#pLa zScDcFD~m-Qj_&I+7PYvpCZu*bPrx4v1+SL*HSRv$$uj^Ic>IP|2~KuDkKnb0H12MN zn3{ODojcv-QUDAfWZRFs8d@dW&LKtP?rrBSl2Y}=pknl`eC9TY^2DkVT z8Tx>?@JHQyx_!GEbo+Gg9dZI5lm{ofmH=6|GB6hk_FY)=ua?jQ*UVm~FbD={TA+7TBSmnlG^9jZ30DOEs|Dd6KWuE0Dy^K?ZS=ykNlay))5g-Wl#neCJ|H=3LJ> zD8LE?@a$kT*OON=C=Ob{qM8D}5;;LZ`pma3Mmu13WE{(jpU@CQ@&tl*$Q}yMK$wgS zfc2TMGdu%i;W9w5k00|iK!+{h5fklr>wUL}T#CTFxH&BEs7iD?mi>i1ky}>~jKziX z$2O%3RYak$Hxhspfir@v+IYxzR%KT;mlKByHihU%lsjxIxNSGFM&!^e=@RcpvaimsgdT0<4$ z4Hui- z4?l)%;9J9jfb63cN7GUGgeQ9RJ$ga_UIF-OAmx=C_YqJc9vD>degRcrJ{0!@oS+M8 zqXB3=cuts&6xieal-b3ChCon*&g;>S3vd&F)emY7JHRTi8I^KTfC6qugUxweFu$wH zE!^E66&aQq${*C85O*E#I@@*DaLjNF+TTF$zq>v&e1^XshPUr)PaHf%egB^OY{0AK z;k(j(qv8F7xVqI%TkDE7NtzHS#n>zCExh#XowXs)-YFdM{HSnb(bJ1M)4Ou5YZtmp z-7}hnh1RvfYZrR4g(Dh(=UUS{-B@fFZDxytbFH~uUaV%J<{1D1F^pYI3P%ci*9ODy zh!0r}AfeA3hIZ&ouTD!0)xG1>L3Icfu{^CreuG@lmK{#?R3KnQ!2J7m2 zezZ0?y)%9RlEp7T0%RwUrFW)xBAzb`$EWgGo(d?vSb$GJTvP%rDgt;k^daRCR}_rX zuponAa8a;p3^3Fjy~A6L76#XCaodY(qG&-$bTljxVuK4uCOEizi#Dfs@=JKIZmXtv zdOlmk zC*YwOe_VKAjtT(YfEWG5)5>68z$*aW!Ms8D-mX<>02W9KR-G9EJZl3BYyyjI=YXVP z*DAg==-%U}%ZAi~g9YmkU4YC1%ApIGH}J}jFAxfUIBx*XN`47|g6E+{MTCdPX@~S4 zxP~X%R?)xroqSgfZ&UC_br;^s?rz7Ir4!X_=_e>Q8qQq;Su9Zsli`<1g;(XYS>t1O z2Vu-IrF%HuGAekn%(yZ!Rz~rCgu9=I`-;0ZP{PKe4g`NlMI4BFj^0EsZaZ-3Ir_8+ I{=eq`0vFcpNB{r; delta 7713 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 OmkR31_eJop@Bac~h9$ZH diff --git a/assets-cg/img/chrono1.png b/assets-cg/img/chrono1.png new file mode 100644 index 0000000000000000000000000000000000000000..c1d71fe93abfe91960d4e632cff9f41b12b2c019 GIT binary patch literal 610 zcmV-o0-gPdP)L|Ak;3NM|irq)nSz2qdIZa(9(P zNXl4Rg=N#F?sjK)UW(b(95~&;`~IAH(p;dr1YLrzKx@zz@Sp)u zKtK$Tf>@9ogKplj|e^DCv{rVDB<;C|Muprr^bt!-X#GUj614+-kd9ohi&l}i0 zeZ0> zlx4~N{XJV-TXbFb;2=p7(llB%Mf{EAAoUM4Ec$<5L-8&W&1N&a_Ye6G4-bLpl)NV> wK$@SZ4x8xub#9=1zg}Q9gCVZuaThd$e|^#h7tFP)+yDRo07*qoM6N<$f@;_eDF6Tf literal 0 HcmV?d00001 diff --git a/assets-cg/img/chrono2.png b/assets-cg/img/chrono2.png new file mode 100644 index 0000000000000000000000000000000000000000..1dd8a846793ccf3374642fb7d80a4e2deebe05bb GIT binary patch literal 607 zcmV-l0-*hgP)>mN>m*3&Vg~Kl!M~wvw@iVA zbZz$z{SVqf2PsImbh6HZAfiLC0p+2$@8$k*xG#wr1TWm-oO{mq`#tBLBitP^RN!j} zHH0}t55WTgVgw-o2~vSjATy9Ts2p^tz&CdR5FFfp!rGaAfS^I@L=XcILHc?H;P1d$ z@D|=rCTjo-zq2WBkt2S6Bl^2_XP85D@X22iW8{(OCHXqZSEjiw5as6t@HcX(VY9bh z!k5>uwYRcwZ$KBIqfa$QmzcY|DWKo)Q&kl^+uH~!+1h&rscZyIyaVy$Bhmj(3LZR# zqoX6rvZO3athG4j&|33ycNf!Y@nU};faxSDkc8CH=o9mNKBuZGthJn;o^p0}Mp>4; zxw^tR2f)|M)lbM6ldgx);NakZ5CY!&WiUWp*Er{RcYV#ZF zWjr1)nT;_NMM0M5K$=LQK?;?O+Zz~-Mogzu+U+)-PG`xyv9Up?)1lpNv(xJ_oixcB zw9HaRm0tzVW;43oE+;1^gb8xSOEH(^1-G}i z@7pV72ZI5s%49MDU}IyWkj!Q?dc7XT7@Tu7O;dndTU$IoKVzM9#26V22E-Uw*!%rH zs){j&5CZ*v9{}eZUDp91pTB<57$d4m2muiR;Q06$5h-#)2mqv%sHzHUEz{`~)3z<% zdqN0UYXRu>dR$&!qN)ss!{tjN7-O*35@TdKodRI$x<*6@A<#4pP1Er7^u*rY9wNeg zJ_lg2Sg=?u=(>)&uG!q&ToR;|h%pjl#9E7U4r?uEXJ@D?r>CdPX0u|Xa}HHSbs3&D z#+1?WVK%F6Te_|z-vJ6Z-(4{=dr{YQNy2+yQpg79DJPQ&wryLojH;?oRo>p-@ZJ|$ z)>@1)hzKHrs*+M#N~r6)9OS5gGDQYufQaCnE0W~lu{wffDFo&{W>~2 zTK0ba`Km%QimIWa~=goA?v zc6N4X+qUe1s&aRC$8b2Lnsn1|_xJa#udnm+@`Cps=UiFa*Vk8ecXt_$Mp$d9s*0PN z8%CoM-uq>Y|C^Na-QVA5JRWm>eZAsC{#*d#@tD68@lG*{HNBPq0000lNhg*TBy znde{@LkOdq!_@SY1R!vn)_!x&cd11iCUS<_`~0(=B;h8(@y@R4QA)}CJ>^>uF5|x{ zU{Uv5zG>o-clY<7Z(JiW-}6NxQ}F2%4I)>4UhLx7!823sUc;~J|0Q23GImcq!BNF1 z_sN2(e}_Q>V`9&i=2?6f7-zk0(K+&v>(I<@BL;?}^WE#*pFcVQ^aO*atDnm{r-UW| D)5m2d literal 0 HcmV?d00001 diff --git a/assets-cg/img/key2block.png b/assets-cg/img/key2block.png new file mode 100644 index 0000000000000000000000000000000000000000..29d08490b6df2236e691f7c49e7deeb2fc1eb617 GIT binary patch literal 599 zcmV-d0;v6oP)HV;aMT!AtNAJOwQ^PeM;i zDnvv_i6|hPl;oU?FY(&DYl`*x2nExuH2ckb-~7w=KYr=~mh%??Fz3JaHm3Le*HZwp zH}5_#3*&GByoavykY(h#MrV-_71wo3k0Mu~1VVtjKJwx9%Tj*VSLI^akmpbs!D`r@ z2%X=u<~vXpn%2X`jl&vY&uEx~5)IE!CY&5vtcIpdL8A0M>6Ht7`?W?H;kNNCu3f^- z3XRVaXi^Bf6R2trcn)U;06qrV4(2n90NMz}kXURE*S7&Q*gQ#k_Bef?uNUL!MdD)Jjx((EAzzSGNzQv_yap?yIJsg+9(O&v3 zr!qFL9%OC;n_;xad%_*S97G8a(t`LH22fyX^jLzA_Y?Ji-i$j7uxdP^PwX4eCTL@g zhpEw{Uk~jOfTP_4*9H2`Z2wxKqiM?c{mOB%a+FiSWGQn0>=enACO3f6G(Oy8uWCQ` z0l*IO9+u5N!Qp8S7eN!vq0@?kd1I`4HGk*dFNklZ)rZ6z-3MpFoG+(}mwaZ|czDczJ((H26it@qwJce)r8Z>02v;hZ^h-t#pl@m&H# z^!Yy)HlzIB9+{HeImQ8%(#L!XNL0wC9ThN$Zt&>-l^RYe0t9sv+I zjR62MP4SXa6GLmcHyYecyjb36r?*Ohp(+yn6pxpbpr^E&U-8`%qqG+v2T?9I_t-vu zg1@pGB*E$|HF-QvEHBkG%ssrmTAiiNWYk3k1w>^mtAE`XFW+}zE^?>UEf@9Hb1(JwRb$6Jwo0)KQV@$YD6J@(h?R8|oBS zEm+BC2y#xQDQ}OTvADed@3a84dHwD_DTlxWu!NP{Ip%x{Cn>>rIv-j9)LfN37sM%- oc^`356d#U64I-XYQ~1*6FOE{hD&5uPRsaA107*qoM6N<$f_uRBZ~y=R delta 376 zcmV-;0f+w11fm0wGk*bDNkliz#W=HMJ80dvT}*!7OX z#S&uaZZNgh0{>xr90#7y=gqnAd!5&H#lG)2j^h^d^Ya4$(AFBv499W6%y6D3+#TDt zfrty5xn1TXm&9(h{%n% znN^~QKvk<~Qd4Fwi0L%5DwOZc{7aL+w7=X`6=MvzJBaAUo0&1^EL6*~l*sz|e2OK~x-3gMk~4tnl1Z76Xp@qPNWmte5-I1M{5Ys0000\nvoid set_level(int id_level, char level[], int *startx, \ -int *starty, char *gravity, char check_coin, int *appear, int *disappear){\nswitch(id_level){") +int *starty, char *gravity, int *appear, int *disappear){\nswitch(id_level){") while 1: try: lv = open(f"editor/levels/{ids}.lvl","r") @@ -16,7 +16,7 @@ while 1: except FileNotFoundError: lv.close() break -save.write("}if(check_coin) for (int i = 0; level[i]!='\\0' ; i++) if(level[i]=='t') level[i]='0';\n\ +save.write("}\n\ set_gravity(id_level, gravity);\n\ unsigned int x = 0;\n\ unsigned int y = 0;\n\ diff --git a/editor/AST3generator.py b/editor/AST3generator.py index e46cefa..05c4c9a 100644 --- a/editor/AST3generator.py +++ b/editor/AST3generator.py @@ -91,6 +91,8 @@ def place(): fenetre.blit(pygame.transform.scale(change,(52,52)),(52*b,52*a)) if grille[a][b]=="b": fenetre.blit(pygame.transform.scale(blackout,(52,52)),(52*b,52*a)) + if grille[a][b]=="B": + fenetre.blit(pygame.transform.scale(damaged,(52,52)),(52*b,52*a)) fenetre.blit(level, (10, 10)) fenetre.blit(levelgr, (10, 60)) fenetre.blit(timeapp, (55, 10)) @@ -113,7 +115,7 @@ fenetre = pygame.display.set_mode((25*52, 14*52)) font = pygame.font.SysFont('arial',25,True) #Defini la suite des blocs pendant les changements (cliquer sur un 1 va donner un 2, cliquer sur un 11 un 0...) -suite=["0","1","d","s","e","k","3","K","a","c","m","t","l","b"] +suite=["0","1","d","s","e","k","3","K","a","c","m","t","l","b","B"] id_level = 1 gravityid = 6 @@ -134,6 +136,7 @@ dead = pygame.image.load("editor/img/dead.png").convert() coin = pygame.image.load("editor/img/coin.png").convert_alpha() change = pygame.image.load("editor/img/change.png").convert_alpha() blackout = pygame.image.load("editor/img/blackout.png").convert_alpha() +damaged = pygame.image.load("editor/img/damaged.png").convert() diff --git a/editor/img/blackout.png b/editor/img/blackout.png index ebb1b97ff2063a037f5b1b3eccf50f3d879a108f..cf28013868eb06d208812a6cacb22788006e751a 100644 GIT binary patch delta 405 zcmV;G0c!rO1HS{1G=FwUL_t(Ijm^@{YEw}Z1>i3xgJ42JQ`4qt)kef5r41>i6W>55 zPQ-~X6wR8jD$uPs!$aw9M8D*OQ)lx&V!&JOC>00000NkvXXu0mjfH{Qzx delta 386 zcmV-|0e$|z1FZv)G=F4CL_t(Ijm^@{YEw}Z#qrmguP%im%4fb};f3<*i(|V!U-> zrD3wyme~iXOF>^e7)ke7+uZ`>V~nOgW>i(K>#8c&j@@~07*qoM6N<$f*WMG_y7O^ diff --git a/editor/img/chrono1.png b/editor/img/chrono1.png index cfd3d8cabb80e17c891c805317a6abf0acd775a8..c1d71fe93abfe91960d4e632cff9f41b12b2c019 100644 GIT binary patch delta 570 zcmV-A0>%A^0pbLZGk*dZNklL|Ak;3NM|irq)nSz z2qdIZa(9(PNXl4Rg=N#F?sjK)UW(b(95~&;`~IAH(p;dr1YLrz zKx@zz@Sp)uKtK$Tf>@9oqv41OrLW zym_)7;m;e`Jbk>+KY@(FN(-Th*@J_PuW?{Ho#MUc<@PpW44Zp<@YpHhV|O)!ZCNZ9v~5e*bzI%va(RBv#<#u*1*=0a zz!-ywFquqv>Kq&#AR-Z~AOcn_VB>(b7HjR3V1P7DF@MGY@kvQ~0!`yUp66s)#?jFc zbzS4VCxn18hBQsd^PHp?7=#UJWUHnynM}C5yJIvOQ4|GbSu!4vDa(?gC>V`KyxQ4e z{xR+YIatYKqr)qdWy$^hJzHB_bY1u0AW0I^G+H%9{Eg%w^$#>G`hQ+S@h%e0W;49^ z5BU!d4>N)2l)NV>K$@SZ4x8xub#9=1zg}Q9gCVZuaThd$e|^#h7tFP)+yDRo07*qo IM6N<$f@JUsCjbBd delta 92 zcmaFF(!n^vIF!NO)5S5wqBnWX#-tzT9T*e-#QW`I+}bWFF+*eH+{VN!3~WFkR?^t! uS3IXn`jr2r!>kcG2ie)|1l)NO5*Qc?bGdxiv}W})0D-5gpUXO@geCw#>mN>m*3&Vg~Kl z!M~wvw@iVAbZz$z{SVqf2PsImbh6HZAfiLC0p+2$@8$k*xG#wr1TWm-oO{mq`#tBL zBitP^RN!j}HH0}t55WTgVgw-o2~vSjATy9Ts2p^tz&CdR5Puxpf5O_CeSn}r>O>F& z5JCES1>o<%S@0I#PbO;s3%|1|ZjmE?eIxq2b!V7EbnwYv5@Y0%=q33&$ycViEfD4B z1n@UsprcPUN0*qpyD6aG?^9J3JKNg`DcRb41*vQVO}qo~ z<0H}kP6{48g@2=?Bg(R*EK97lIOot>^Ky3=(`xZze;BdKR*ZH@bC~J#OgtSM1qjX&VTcqEX(-UF~*>jO1UcKX{pkL z0Te|+tJPvS9Ad3yJRUEZjWHBOL6+x0nnCW zoPfsTF)(#qFI5Z%10X3?Iml+5Mg5cbzuUNwysbcugKmlNU_@8_Ox~mx&m?*KGfnhKhz=BI+ zwhV%u`h=b?K(-lO44X@+?*f=D0~ZFw*h*Cw38xSOEH(^1-G}i z@7pV72ZI5s%49MDU}IyWkj!Q?dc7XT7@Tu7O;dndTU$IoKVzM9#26V22E-Uw*!%rH zs){j&5CZ*v9{}eZUDp91pTB<57$d4m2muiR;Q06$5h-#)2mqv%sHzHUEz{`~)3z<% zdqN0UYXRu>dR$&!qN)ss!{tjN7-O*35@TdKodRI$x<*6@A<#4pP1Er7^u*rY9wNeg zJ_lg2Sg=?u=(>)&uG!q&ToR;|h%pjl#9E7U4r?uEXJ@D?r>CdPX0u|Xa}HHSbs3&D z#+1?WVK%F6Te_|z-vJ6Z-(4{=dr{YQNy2+yQpg79DJPQ&wryLojH;?oRo>p-@ZJ|$ z)>@1)hzKHrs*+M#N~r6)9OS5gGDQYufQaCnE0W~lu{wffDFo&{W>~2 zTK0ba`Km%QimIWa~=goA?v zc6N4X+qUe1s&aRC$8b2Lnsn1|_xJa#udnm+@`Cps=UiFa*Vk8ecXt_$Mp$d9s*0PN z8%CoM-uq>Y|C^Na-QVA5JRWm>eZAsC{#*d#@tD68@lG*{HNBPq0000-t#`@Niz=N^h0E57WR1)?_P%e6H_nV2oz1=H zaK8Tk^S8=hz8Zjf^)did`LETo{C&Q;4uEyz@sinT1OTkvn|}o0)`w-9t%QZy2>_<& zRZZpJl z1mkF^f{2C-XZkouQ<|-WAcBS2ao93^d$x%03RATuUOXCQ`2I%*D;@_yLj6wyfD~O# zV&%B{T%phH;(v`}pzTl9mLLHEv?GUMlxIU6rT}<0_ywJlH3(S-%~pc%=CNW?qXcXR z3ZACCv5xG8DS-hJXvG#zD&2NTu)6MSDM0q2>`+wUj!;C)s)QKw$4D}1=Py0s; zdj+-KBQ#*BB$P^$pHT^rf|6rXE5{&g8S0nvCPqLqaFyJg3bwF$t%Sr;KSeJf6i5=d^JEPG#}TxZkr~BaGs2*-6=;DZ dgDB1k`3u^#$)9L$E;IlD002ovPDHLkV1l2(5%~ZB delta 280 zcmV+z0q6er1i}K4Gk*a2NklST5JkTc3s@*c7RUg!q-C72g5!)}Wra+U zHf|9`c1VGcCjh4agN+XqDOZ8-|EGUGvxgNHe-snS1^`*HU4u}I{B*e@jm+;!a9kOO zNpoNUWCqBJ0o~Z(wFW*RKmjm$0dy8JTOcWjGUb`h-^JGz0DpL`0RUAy3S|cr@WXsv@KA;~qMsN@yUZ*?ndkc82)s)*c16c@8 ze8JWu60L=3E!j`jan~YVYp6y?59sF+OkOMxXe)tF_P=?p$2DdQ$mj$qWpw{;rIaxO eP_<`t^#v&uZxK~g`8+cK00000@?kz0?q`GGk*dFNklZ)rZ6z-3MpFoG+(}mwaZ|czDczJ((H26it@qwJce)r8Z>02v;hZ^h-t#pl@m&H# z^!Yy)HlzIB9+{HeImQ8%(#L!XNL0wC9ThN$Zt&>-l^RYe0t9sv+I zjR62MP4SXa6GLmcHyYecyjb36r?*Ohp(+yn6pxpbpr^E&U-8`%qqG+v2T?9I_t-vu zg1@pGB*E$|HF-QvEHBkG%ssrmTAiiNWYk3k1w>^mtAE`XFW+}zE^?>UEf@9Hb1(JwRb$6Jwo0)KQV@$YD6J@(h?R8|oBS zEm+BC2y#xQDQ}OTvADed@3a84dHwD_DTlxWu!NP{Ip%x{Cn>>rIv-j9)LfN37sM%- oc^`356d#U64I-XYQ~1*6FOE{hD&5uPRsaA107*qoM6N<$f~ep2g#Z8m delta 270 zcmV+p0rCFM1h@i_Gk*Z@Nkl_cSAfhKz}<0wsN-fVyWe}ayX-=o@JBFSlL07qY_WmYx_na{5ZTT2m_D9X z=a!F(Yi2+cpxiM~Gd8we>`HeP(nNq7faMwzxs^ax2(Nu=+<%+_kjm8W$Hcva??0dg z6oA)+tYEmEVzk!^0FWl`bFxDCXE2A%EvJb9%XQ81On41}CrAk3u2bfR!K`1|fKW)F zeRbX~*g?Jj1{5G<7np|FRnG9fc916H%IpI&06wx(hd!*I9L!f55?BO$YLxK?ZC`09 UL0~0H00000Ne4wvM6N<$f)+@3VE_OC diff --git a/editor/levels/1.lvl b/editor/levels/1.lvl index ce3bc8b..39ac62b 100644 --- a/editor/levels/1.lvl +++ b/editor/levels/1.lvl @@ -1 +1 @@ -10011111111dddd111111111100011110000000000000000000001111001111111dddd100001111111001dd000ddddd111111111111001dd0t0ddddddddd11000001001dd000ddddddddd11000001001aaaaaaaaaaaaaa110s00010010000000000000e1111100100100000000000aaa11111001001000000000ddddd1111100100100000000011111100010000010000000003000000001000001000K0000030k00010011111111111111111111116 +10011111111dddd1111111111000111100000000000000000000011110011111111ddd100001111111001dd000ddddd111111111111001dd0t0ddddddddd11000001001dd000ddddddddd11000001001aaaaaaaaaaaaaa110s00010010000000000000e1111100100100000000000aaa11111001001000000000ddddd1111100100100000000011111100010000010000000003000000001000001000K0000030k00010011111111111111111111116 diff --git a/editor/levels/2.lvl b/editor/levels/2.lvl index 849961c..d1d3cf3 100644 --- a/editor/levels/2.lvl +++ b/editor/levels/2.lvl @@ -1,4 +1,4 @@ -10001011111011111111111111000101dd10001111dddd11110000101dd10001000000000001111101dd1aaa1000ccccddd110s00010013331000000000011dddd110010001mmmdd00000100000000010e010t0dd00000011111100011111dddddddd1111k00000001d000111001111111111111101d00000000000111000010000100000000000000010K010000100011100000011110001000010001110000dd11110001011111011111111111117 +10001011111011111111111111000101dd10001111dddd11110000101dd10001000000000001111101dd1aaa1000ccccddd110s00010013331000000000011dddd110010001mmmdd00000100000000010e010t0dd00000011111100011111d1dddddd1111k00000001d000111001111111111111101d00000000000111000010000100000000000000010K010000100011100000011110001000010001110000dd11110001011111011111111111117 -4 +5 7 \ No newline at end of file diff --git a/editor/levels/5.lvl b/editor/levels/5.lvl index 7dc219c..a248016 100644 --- a/editor/levels/5.lvl +++ b/editor/levels/5.lvl @@ -1,4 +1,4 @@ -0000000000000000000000000000000000000000000000000000000000000000000000000000011dd111111111111111110000100000100000010000001000011cc001s0000d00000001000010000e111dd0100110dd100001001111000d0000000dd100001000001000111d000ddd1000010000000000000000ddd1000011111111111d111111111000000000000000000000000000000000000000000000000000000000000000000000000000006 +000000000000000000000000000000000000000000000000t000000000000000000000000000011dd111111111111111110000100000100000010000001000011cc001s0000d00000001000010000e111dd0100000dd100001001111000d0000000dd100001000001000111d000ddd1000010000000000000000ddd1000011111111111d111B11111000000000000000000000000000000000000000000000000000000000000000000000000000006 12 6 \ No newline at end of file diff --git a/editor/levels/8.lvl b/editor/levels/8.lvl new file mode 100644 index 0000000..0481dd9 --- /dev/null +++ b/editor/levels/8.lvl @@ -0,0 +1 @@ +dddddddddddddddddddddddddBBBBBBBBBBBBBBBBBBBBBBBBB1000010k10011111dt0a000011000010010010000d11a00001100001BB100100000000000013000000000010001110000000300000000001aaaaaa00000001111110000010000000011111100000000001000000001000110000000a001BBBd00a0100013000000000010001000010003300s000000010K0100001e003aaBBBBBBBBBBBBBBBBBBBaaaaddddddddddddddddddddddddd6 \ No newline at end of file diff --git a/include/setlevel.h b/include/setlevel.h index c9320de..09df303 100644 --- a/include/setlevel.h +++ b/include/setlevel.h @@ -1,3 +1,3 @@ -void set_level(int id_level, char level[], int *startx, int *starty, char *gravity, char check_coin, int *appear, int *disappear); +void set_level(int id_level, char level[], int *startx, int *starty, char *gravity, int *appear, int *disappear); void set_gravity(int id_level, char *default_gravity); void del_level(char level[]); diff --git a/project.cfg b/project.cfg index 1601dec..d3ac621 100644 --- a/project.cfg +++ b/project.cfg @@ -84,5 +84,5 @@ LDFLAGS_CG += -Wl,-Map=build-cg/map # # FONT.hexa.png = charset:print grid.size:3x5 grid.padding:1 -IMG.speedrun.png = profile:p2 +IMG.speedrun.png = profile:p4 IMG.menu.png = profile:p4 diff --git a/src/collide.c b/src/collide.c index 4425da5..055f303 100644 --- a/src/collide.c +++ b/src/collide.c @@ -18,7 +18,8 @@ char collide_solid(int x, int y, char level[], char gravity) || collide(x, y, level, gravity, '3') || collide(x, y, level, gravity, '4') || collide(x, y, level, gravity, 'c') - || collide(x, y, level, gravity, 'C'); + || collide(x, y, level, gravity, 'C') + || collide(x, y, level, gravity, 'B'); } char collide_dead(int x, int y, char level[]) diff --git a/src/drawlevel.c b/src/drawlevel.c index 8a560da..e70916a 100644 --- a/src/drawlevel.c +++ b/src/drawlevel.c @@ -13,6 +13,11 @@ extern bopti_image_t img_end; //end of level extern bopti_image_t img_key1; //key 1 extern bopti_image_t img_keyblock; //block link to the key1 extern bopti_image_t img_blackout; //blackout +extern bopti_image_t img_chrono1; //chronoblock +extern bopti_image_t img_chrono2; //chronoblock 2 +extern bopti_image_t img_key2; //key 2 +extern bopti_image_t img_key2block; //block link to the key 2 +extern bopti_image_t img_damaged; //damaged block void draw_player(int x, int y) { @@ -47,20 +52,23 @@ void draw_level(char level[]) dimage(x,y,&img_key1); break; case '4': //block link to the key2 - dimage(x,y,&img_keyblock); + dimage(x,y,&img_key2block); break; case 'K': //key2 - dimage(x,y,&img_key1); + dimage(x,y,&img_key2); break; case 'c': //chrono blocks - dimage(x,y,&img_keyblock); + dimage(x,y,&img_chrono1); break; case 'C': //chrono blocks - dimage(x,y,&img_keyblock); + dimage(x,y,&img_chrono2); break; case 'b': //blackout blocks dimage(x,y,&img_blackout); break; + case 'B': //damaged block + dimage(x,y,&img_damaged); + break; } x+=16; if(x==16*25) diff --git a/src/main.c b/src/main.c index 9423fdd..e934541 100644 --- a/src/main.c +++ b/src/main.c @@ -49,7 +49,7 @@ void game(int *id_level, char mode) int vert_spd = 1; extern bopti_image_t img_speedrun; - set_level(*id_level, level, &start_x, &start_y, &gravity, check_coin, &appear, &disappear); + set_level(*id_level, level, &start_x, &start_y, &gravity, &appear, &disappear); player_x = start_x; player_y = start_y; draw_level(level); @@ -89,7 +89,6 @@ void game(int *id_level, char mode) dprint(300,140,C_GREEN,"%c",level[(int)((player_x+PLAYER_HEIGHT+1)/16)+(int)((player_y-1)/16*25)]); //top right dprint(300,160,C_GREEN,"%c",level[(int)((player_x-1)/16)+(int)((player_y+PLAYER_HEIGHT+1)/16*25)]); //bottom left dprint(300,180,C_GREEN,"%c",level[(int)((player_x+PLAYER_HEIGHT+1)/16)+(int)((player_y+PLAYER_HEIGHT+1)/16*25)]); //bottom right*/ - dupdate(); } @@ -161,8 +160,9 @@ void game(int *id_level, char mode) vspd = 1; player_x = start_x; player_y = start_y; - if(mode) check_coin = 0; - set_level(*id_level, level, &start_x, &start_y, &gravity, check_coin, &appear, &disappear); + if(check_coin) coin--; + check_coin = 0; + set_level(*id_level, level, &start_x, &start_y, &gravity, &appear, &disappear); blackout = 0; framelevel = 0; } @@ -174,7 +174,7 @@ void game(int *id_level, char mode) break; } check_coin = 0; - set_level(*id_level, level, &start_x, &start_y, &gravity, check_coin, &appear, &disappear); + set_level(*id_level, level, &start_x, &start_y, &gravity, &appear, &disappear); player_x = start_x; player_y = start_y; blackout = 0; @@ -196,7 +196,7 @@ void game(int *id_level, char mode) if(level[i]=='K') level[i]='0'; } } - if(collide(player_x, player_y, level, gravity, 't')) //Collide with coin + if(collide(player_x, player_y, level, gravity, 't') && !check_coin) //Collide with coin { for (int i = 0; level[i]!='\0' ; i++) { @@ -259,6 +259,19 @@ void game(int *id_level, char mode) else gravity=0; } + if(collide(player_x, player_y+vert_spd+2, level, gravity, 'B') && vspd>=5.0) //Damaged block + { + if(level[((player_x)/16)+((player_y+25)/16)*25]=='B') level[((player_x)/16)+((player_y+25)/16)*25]='0'; + if(level[((player_x+17)/16)+((player_y+25)/16)*25]=='B' && collide_point(player_x+15, player_y+22, level, 'B')) level[((player_x+17)/16)+((player_y+25)/16)*25]='0'; + vspd=1.0; + } + if(collide(player_x, player_y-vert_spd-2, level, gravity, 'B') && vspd>=5.0) //Damaged block + { + if(level[((player_x)/16)+((player_y-vert_spd-2)/16)*25]=='B') level[((player_x)/16)+((player_y-vert_spd-2)/16)*25]='0'; + if(level[((player_x+17)/16)+((player_y-vert_spd-2)/16)*25]=='B' && collide_point(player_x+15, player_y-12, level, 'B')) level[((player_x+17)/16)+((player_y-vert_spd-2)/16)*25]='0'; + vspd=1.0; + } + if((framelevel/FPS)>disappear) for (int i = 0; level[i]!='\0' ; i++) if(level[i]=='c') level[i]='0'; //after x seconds blocks disappear if((framelevel/FPS)>appear) for (int i = 0; level[i]!='\0' ; i++) if(level[i]=='m') level[i]='C'; //after x seconds blocks appear @@ -330,12 +343,6 @@ int main(void) char mode = 0; int valeur = start_menu(); if(!valeur) //normal game - { - int id_level = 1; - mode = 0; - game(&id_level, mode); - } - else if(valeur==1) { int id_level = 1; if(!speed_menu(&id_level)) @@ -345,5 +352,11 @@ int main(void) } else main(); } + else if(valeur==1) + { + int id_level = 1; + mode = 0; + game(&id_level, mode); + } return 0; } diff --git a/src/menu.c b/src/menu.c index 8b9ebff..8a7e7e6 100644 --- a/src/menu.c +++ b/src/menu.c @@ -60,7 +60,7 @@ char speed_menu(int *id_level) *id_level += keydown(KEY_RIGHT) - keydown(KEY_LEFT); if (*id_level == 11) *id_level = 1; else if (*id_level == 0) *id_level = 10; - set_level(*id_level, level, &start_x, &start_y, &gravity, check_coin, &appear, &disappear); + set_level(*id_level, level, &start_x, &start_y, &gravity, &appear, &disappear); draw_level(level); dimage(0,0,&img_speedrun); dtext(340, 214, C_BLACK, "TIME"); diff --git a/src/setlevel.c b/src/setlevel.c index 75970cc..d958d19 100644 --- a/src/setlevel.c +++ b/src/setlevel.c @@ -1,12 +1,12 @@ #include "setlevel.h" #include -void set_level(int id_level, char level[], int *startx, int *starty, char *gravity, char check_coin, int *appear, int *disappear){ +void set_level(int id_level, char level[], int *startx, int *starty, char *gravity, int *appear, int *disappear){ switch(id_level){case 1: -memcpy(level,"10011111111dddd111111111100011110000000000000000000001111001111111dddd100001111111001dd000ddddd111111111111001dd0t0ddddddddd11000001001dd000ddddddddd11000001001aaaaaaaaaaaaaa110s00010010000000000000e1111100100100000000000aaa11111001001000000000ddddd1111100100100000000011111100010000010000000003000000001000001000K0000030k00010011111111111111111111116",350); +memcpy(level,"10011111111dddd1111111111000111100000000000000000000011110011111111ddd100001111111001dd000ddddd111111111111001dd0t0ddddddddd11000001001dd000ddddddddd11000001001aaaaaaaaaaaaaa110s00010010000000000000e1111100100100000000000aaa11111001001000000000ddddd1111100100100000000011111100010000010000000003000000001000001000K0000030k00010011111111111111111111116",350); break; case 2: -memcpy(level,"10001011111011111111111111000101dd10001111dddd11110000101dd10001000000000001111101dd1aaa1000ccccddd110s00010013331000000000011dddd110010001mmmdd00000100000000010e010t0dd00000011111100011111dddddddd1111k00000001d000111001111111111111101d00000000000111000010000100000000000000010K010000100011100000011110001000010001110000dd1111000101111101111111111111",350); -*appear=4; +memcpy(level,"10001011111011111111111111000101dd10001111dddd11110000101dd10001000000000001111101dd1aaa1000ccccddd110s00010013331000000000011dddd110010001mmmdd00000100000000010e010t0dd00000011111100011111d1dddddd1111k00000001d000111001111111111111101d00000000000111000010000100000000000000010K010000100011100000011110001000010001110000dd1111000101111101111111111111",350); +*appear=5; *disappear=7; break; case 3: @@ -18,7 +18,7 @@ memcpy(level,"1dddddd100111111111111111000000000011111000000000000000000l01100c0 *disappear=1; break; case 5: -memcpy(level,"0000000000000000000000000000000000000000000000000000000000000000000000000000011dd111111111111111110000100000100000010000001000011cc001s0000d00000001000010000e111dd0100110dd100001001111000d0000000dd100001000001000111d000ddd1000010000000000000000ddd1000011111111111d11111111100000000000000000000000000000000000000000000000000000000000000000000000000000",350); +memcpy(level,"000000000000000000000000000000000000000000000000t000000000000000000000000000011dd111111111111111110000100000100000010000001000011cc001s0000d00000001000010000e111dd0100000dd100001001111000d0000000dd100001000001000111d000ddd1000010000000000000000ddd1000011111111111d111B1111100000000000000000000000000000000000000000000000000000000000000000000000000000",350); *appear=12; *disappear=6; break; @@ -30,7 +30,10 @@ break; case 7: memcpy(level,"111001111111100d0d0011111100000111ddd000d0d0000001100000000000000dtd00000e1111111ddd111111111111111100000000000000000l00d0000111111111dd111110100d000110001100000000010100d0001000011000000000d0d00d00000000l0000000000d0d00d00001111dd111000000d0d00111111000011111ddd00d0d00111111000011111ddd00d0d001111110s0011111ddd00d0d0011111111001111111100d0d00111116",350); break; -}if(check_coin) for (int i = 0; level[i]!='\0' ; i++) if(level[i]=='t') level[i]='0'; +case 8: +memcpy(level,"dddddddddddddddddddddddddBBBBBBBBBBBBBBBBBBBBBBBBB1000010k10011111dt0a000011000010010010000d11a00001100001BB100100000000000013000000000010001110000000300000000001aaaaaa00000001111110000010000000011111100000000001000000001000110000000a001BBBd00a0100013000000000010001000010003300s000000010K0100001e003aaBBBBBBBBBBBBBBBBBBBaaaaddddddddddddddddddddddddd",350); +break; +} set_gravity(id_level, gravity); unsigned int x = 0; unsigned int y = 0; @@ -66,6 +69,9 @@ break; case 7: *default_gravity = 0; break; +case 8: +*default_gravity = 0; +break; }} void del_level(char level[]) {memcpy(level,"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",350);} \ No newline at end of file diff --git a/src/times.c b/src/times.c index ce4b0c6..3abde5e 100644 --- a/src/times.c +++ b/src/times.c @@ -19,8 +19,8 @@ void check_medal(unsigned int frame_level, int id_level) time2 = 60; break; case 2: - time = 9; - time2 = 36; + time = 8; + time2 = 13; break; case 3: time = 6; @@ -42,18 +42,18 @@ void check_medal(unsigned int frame_level, int id_level) time = 8; time2 = 25; break; + case 8: + time = 7; + time2 = 62; + break; } - /*if(frame_level/FPS < time || (frame_level/FPS <= time && frame_level%FPS <= time2)) dimage(380,8,&img_createur); - if(frame_level/FPS < (int)(time*1.05+0.5) || (frame_level/FPS <= (int)(time*1.05+0.5) && frame_level%FPS <= (int)(time2*1.8+0.5))) dimage(360,8,&img_or); - if(frame_level/FPS < (int)(time*1.2+0.5) || (frame_level/FPS <= (int)(time*1.2+0.5) && frame_level%FPS <= (int)(time2*1.2+0.5))) dimage(340,8,&img_argent); - if(frame_level/FPS < (int)(time*1.5+0.5) || (frame_level/FPS <= (int)(time*1.5+0.5) && frame_level%FPS <= (int)(time2*1.5+0.5))) dimage(320,8,&img_bronze);*/ - - if(time2*1.8>=100) + if(frame_level/FPS < (unsigned int)time || (frame_level/FPS <= (unsigned int)time && frame_level%FPS <= (unsigned int)time2)) dimage(380,8,&img_createur); + if(time2*2.5>=100) { - if(frame_level/FPS < (unsigned int)(time*1.05+0.5+1) || (frame_level/FPS <= (unsigned int)(time*1.05+0.5+1) && frame_level%FPS <= (unsigned int)(time2*2+0.5-100))) dimage(360,8,&img_or); + if(frame_level/FPS < (unsigned int)(time*1.05+0.5+1) || (frame_level/FPS <= (unsigned int)(time*1.05+0.5+1) && frame_level%FPS <= (unsigned int)(time2*2.5+0.5-100))) dimage(360,8,&img_or); } - else if(frame_level/FPS < (unsigned int)(time*1.05+0.5) || (frame_level/FPS <= (unsigned int)(time*1.05+0.5) && frame_level%FPS <= (unsigned int)(time2*2+0.5))) dimage(360,8,&img_or); + else if(frame_level/FPS < (unsigned int)(time*1.05+0.5) || (frame_level/FPS <= (unsigned int)(time*1.05+0.5) && frame_level%FPS <= (unsigned int)(time2*2.5+0.5))) dimage(360,8,&img_or); if(time2*1.2>=100) { if(frame_level/FPS < (unsigned int)(time*1.2+0.5)+1 || (frame_level/FPS <= (unsigned int)(time*1.2+0.5)+1 && frame_level%FPS <= (unsigned int)(time2*1.2+0.5)-100)) dimage(340,8,&img_argent); @@ -78,8 +78,8 @@ void draw_time(int id_level) time2 = 60; break; case 2: - time = 9; - time2 = 36; + time = 8; + time2 = 13; break; case 3: time = 6; @@ -101,12 +101,16 @@ void draw_time(int id_level) time = 8; time2 = 25; break; + case 8: + time = 7; + time2 = 62; + break; } dimage(160,90,&img_createur); dprint(175,90,C_BLACK,"%d.%02d",time,time2); dimage(160,110,&img_or); - if(time2*1.8>=100) dprint(175,110,C_BLACK,"%d.%02d",(int)(time*1.05+0.5)+1, (int)(time2*2+0.5)-100); - else dprint(175,110,C_BLACK,"%d.%02d",(int)(time*1.05+0.5), (int)(time2*2+0.5)); + if(time2*2.5>=100) dprint(175,110,C_BLACK,"%d.%02d",(int)(time*1.05+0.5)+1, (int)(time2*2.5+0.5)-100); + else dprint(175,110,C_BLACK,"%d.%02d",(int)(time*1.05+0.5), (int)(time2*2.5+0.5)); dimage(160,130,&img_argent); if(time2*1.2>=100) dprint(175,110,C_BLACK,"%d.%02d",(int)(time*1.05+0.5)+1, (int)(time2*1.2+0.5)-100); else dprint(175,130,C_BLACK,"%d.%02d",(int)(time*1.2+0.5), (int)(time2*1.2+0.5));