From 396511ebd3ff3899207e6d5a22b6f532e2c41f6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A8ve=20Oriol?= Date: Mon, 18 Jan 2021 17:54:02 +0100 Subject: [PATCH 1/8] modif Readme... --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 276409a..564878b 100644 --- a/README.md +++ b/README.md @@ -12,3 +12,4 @@ liens utiles: - https://processing.org/examples/arrayobjects.html - https://processing.org/examples/movingoncurves.html +à suivre... \ No newline at end of file From 882bb78b4e1cef38ba24b6fc274cdb6792e9a2a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A8ve=20Oriol?= Date: Sat, 23 Jan 2021 13:05:52 +0100 Subject: [PATCH 2/8] Modification du samedi 23/01/21 --- enemi_kamikaze.pde | 5 +++++ laser_ship.pde | 1 + mechant_encore_plus_mechant_que_les_mechant.pde | 1 - space_inviders.pde | 5 ++++- 4 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 enemi_kamikaze.pde create mode 100644 laser_ship.pde delete mode 100644 mechant_encore_plus_mechant_que_les_mechant.pde diff --git a/enemi_kamikaze.pde b/enemi_kamikaze.pde new file mode 100644 index 0000000..199021b --- /dev/null +++ b/enemi_kamikaze.pde @@ -0,0 +1,5 @@ +//ici il faut faire un enemie qui te fonce dessus +int pv_tres_mechant = 2; +float cooldown_fonce = random(3,10); +int yk; +int xk; diff --git a/laser_ship.pde b/laser_ship.pde new file mode 100644 index 0000000..d7e2be9 --- /dev/null +++ b/laser_ship.pde @@ -0,0 +1 @@ +//ici il faudrat faire un laser qui one-shoot les enemies basiques diff --git a/mechant_encore_plus_mechant_que_les_mechant.pde b/mechant_encore_plus_mechant_que_les_mechant.pde deleted file mode 100644 index d99b61e..0000000 --- a/mechant_encore_plus_mechant_que_les_mechant.pde +++ /dev/null @@ -1 +0,0 @@ -int pv_tres_mechant = 2; diff --git a/space_inviders.pde b/space_inviders.pde index 35328d3..d2cfeaf 100644 --- a/space_inviders.pde +++ b/space_inviders.pde @@ -27,12 +27,14 @@ int win; float time; boolean lancermisile = false; String touchePresse = null; +int nombreEnemiRestek = nombreEnemik; Ship ship; boolean[] level = new boolean[3]; int nombreEnemi = 20; +int nombreEnemik = 20; int nombreEnemiReste = nombreEnemi; Alien [] a = new Alien[nombreEnemi]; Misile [] b = new Misile[nombreEnemi]; @@ -276,7 +278,8 @@ void setup() { //on tue tous les ennemis for (int i = 0; i Date: Sat, 30 Jan 2021 14:11:41 +0100 Subject: [PATCH 3/8] Modification du samedi 30/01/21 --- data/images/mechant_tres_mechant.png | Bin 0 -> 61385 bytes enemi_kamikaze.pde | 5 - laser_ship.pde | 1 - mechant_tres_mechant.pde | 17 + space_inviders.pde | 747 ++++++++++++++------------- 5 files changed, 391 insertions(+), 379 deletions(-) create mode 100644 data/images/mechant_tres_mechant.png delete mode 100644 enemi_kamikaze.pde delete mode 100644 laser_ship.pde create mode 100644 mechant_tres_mechant.pde diff --git a/data/images/mechant_tres_mechant.png b/data/images/mechant_tres_mechant.png new file mode 100644 index 0000000000000000000000000000000000000000..b3d4959af17b070800507a5017b5b206d693a33f GIT binary patch literal 61385 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

f;YA4!%F*c&M>uv2UNi|JQB0UsZsz8#f z)>4MxC)(&(N;2)REno`HK8Tq5o#q6JftabG8q~@GJVFx$n$$b%zS`%w0bi|oDE67b z^Z^G>AVH`Nq~O3W*j;^?uYWuI2Rc{OJKRgTvztcWl#;9N8rD)~M{q~c)l6r2p!+W8 zMoq0n=8L{ynExyssU3K9GS^>(_ZSY)^+$SM`I+Mbxj`Dh#3lCOXl72>A958Lfz5I? z#s4U7u`G2xbw2&rhPJSZ&FbNomXbG#7z)_u%`mWl215GrP+{a~z{1MfeB3&VY^PnM zk{ZTju}-I*A;r6z-GxVpkba#*{Z&xYuL-n^(j5u9TZc}6J?gUBvFNv0ltPQ$=OU6C3)F0WyVxW14n-qIUQ|U;a-3@>g(3e<{hD*wdJne6*uyCAfsB+ zrP0sWCmM)j4CxF3x0KO$Xs$zrjYb#eK=e<#NZClp7Y$a!SoLOJ{#NRCW)X6YtNz3| z?sl?E4)qx+pD_K=;`#;oFHj(bwB#8`QDiID$^m;%h?qtk7Sa52UNLN)jd3W2?J##)YAYh!)UroMpyF+=^heX|f_O9}bol}6|#^1ip@lt!qkrS`Z!i(+_|dX1&7 z*xGQ;iOfPj-_SowJ(_EHD|6A!kNSMDTrk`=-QLhXC|CrCZPv~=ZkE>MRMa?e7Hvz1 zUsdS}?H9rZZkZsr5j}u1V6n+Hs6>`7h4gQKou8@~G7)wnla1=)hXm&o{(jN$74vEu zDz$Tc5~%+!2dn;X;xepgS8UuO8l#VY)w6PG%DnaoslC7lT9`?LmUpctwDME z+wX#8OqKDv@;8H0*h+`RKBp%g?>I&bWqd{Z5-x(OZa?d}P+r(={#lM23f>4aW!#CZ zw}-6%%A9YYh1|BKg??lEauln;34nM79r0fuR@OlP@$9m)fRse}7iFwJrzI*NB)!GR z!7T;*Cj7cigcRl)<)Tlj8Yy{G)>J*L7Vsd{bsBcTG4F$dI9;@9Xn3#NRfzQC2&9%4 z5W<(e3gdHtG6`wf5aGnmV9>Jbc)VfR)I|59RVN$yPaRC(&hPGGEi-ID_D_lT<~AjjcMFgE=~uNj}gI zlV!R?B2X3IHAZS3XElZf6m1w#2N+2=6%ai=Ln|7ojrCAmQT$9khFb#&RB}t4T{0VOX4CLzkQI zvq&(ysI3Ef1ne_<*N(>@rnm5{rFH^T;kTy1Y2sxpTb-5_+cNn@;M<4Ra_DxlJjNYb z!o9Ty{opOoJRPhgfm@C2!DHFmdTM3+p*C54R{v^OKJ2y2dmY#wDo8}|TV01MqMPtj zLD#ro1EVJP;pq@W_AG+0eEzcAX72&MFzSi33ID%tjFVRbpM7^nw73)U6tyTFZ)j4c zY%XLo>~lm>3+@#b`Qj!fB}f$E;H;-V$d)@-0rY>av41~^vkr76v1x4)`4BJXe$2;I z^gU_yheUwuOQDgpP> z5Mop&5jaejU59zfH>W`NJDYjN_@)k)^K33PWn6TWf47&3{}k;l-0Q#<#9ce)z^{wMs}X41b^G_I2e=xBAcAZSp9gEY6eSf9N-BI3hW>+oph?35*0ULgG z_>fFog+=8hFH$|lK8SYG)eC7~L&%BKN@kD&T?}XI{b37XBT~fLr+v)!l|1u&J{9uJ z&$&)@0BLLNOw|4f;XKqGv`1-lT=fbS8DXUbz4A=Bo!4buZ#SLX9R^oN9g)5#bQ_&*`42H05#!(5%>`_~B;e$sY6#+aDh;D4 zQfPD!3{boDDWK1F0F9UVlXxIFsZ5V9ojmzMV02+TsMv+L2Sn3@QWBA^>NTl|9J4Fj z4*2A{y;)JQ0=FlWfYt#0cO-u~!cNE9Lr<6!Uukdof&+F4$&?p05m=#As`e^7Y$55b z7tR9_G`y)Oln1 zmG>gQ7I+dzH8%ODEx`#YpbIfomWN$0a&-f0Tc2QN*>VnD^~KpmE$zXcU$#vDEG2E| zXBs#Tg?)eZVJZJMULnK{&E0b(prp72zW9b{GBs-aaZ(TY$O2{RuX!QDY-m>hQkCFQ z>u7^5g@Qv;1I^@zgRwXhUULjJX)lO2acW3ZXr=Ad9}}ic-4`zw;@lqnT^gQ<)|_1P z8h&s;zrJpsl_DH0FH9b*R~}R!Ip9tYZ0G`4% z|01gkM4%t@cGFh)my2lX3OX}eD=vCa5YKOvN2zW0p4rHJWyv*WO2crL73yZXB8DSP z>beE;8@NIWH0a6c@^fp})IDDScr0@YpB9hE3=Ltz$oleQ=~I0VVk#PYcU2L^l>0`M zV1$=CDP@L!3|0BtR8xJB#W0mo&ZYEdx|MiaBZQ)}isa-k7*bXZGIjV-#@j( zTqKNisWICXW{dltY&?BN@>@g+9(By)fUfMKE3uV0mposaAKL?HIi=(WyctPKpyF~b zQ7bTNKsT1Bp?|nTh7CSKIgs)nLO#JO2n}sJd35(`RQV7x&6+Y;t7Gst)3rP&6Ar z$Ae3^mTano;7w#cj5MbxABQjWAd1K!zDhv$IK;%N945gtb$ z(C>306N0HJ3N(Fi2m8=+%l7bZW=mAUTZT4!!`^#~9PR<$EGWab$9dz5eni9jk1y@( zPeN@#qlW^O*hEha2!~m9%>$qlO40vdJF;zkP4~b;uyMQHO+Dm`BXa+6IGK#qPtgz7 zvE(vIO*(FJQnOU`y%P)hZW0JRwK;d0C5lpdRl{1$Y&P6>k#^Qe3@URv#q@wbx&d1| zMSWArarWrF))gq6e?%ZKC>Xy`6NvH2p`}0cd=TZtTj2?Kq~s z#*MDc)ln%NHMw*d#s+iZ_LPsS85rup%I?%%9)T1qgS5>lBH}|NfB2x z!v_Hk=477{Q7$}m%klh%2#li7wt)z&Kjm8z*Wz;%+`^W4`46EMZW^sCP9oIeLMXC77rloxO+#=a4URO&wfrF}~%&s~PTVCI0te z{tFnve3p%q>+u@a*}cb%QS&9OaTGKZ1Bx>c+5!nbt7K@#6l>Kj+7;lH$7hQ;;=NHr zAnE>Asa}`$lN1*I0}bw*g{MA20?!jV*iI;MJ3+^~!g^57gEEYM=Fw`C?%eEhwDf zA*z0^mC0pWRzfJ8pnM;YwC0d0$U0`Z*gvpcZlvB16v3W9&UX^OH*{Ixe6B%vOVx9N z2Yi-58F?)u!LY{J=g`bxFJpf4`ahoOmbyUxdqKAP!HM|-F%tc+l>WKSd zO+cxR#k1;yA$;GBYVYCLloPTF2x{wXcFWwnd!jx^R~v-nY30uWP+R;394GU}n= zl2`ZpUoHRyemJsO{U}HlR4u4U!{=B|ZDu;S-&{toQ=y?m-1e?l{%32YJN~fq4(d(( z{5mWa8-O-G{c%CYa`eA--~4aagg-TImts6;{P8}@Yh7 zyV!=fO|`ifzB4U8dKkX6w3gcM@;ym^S!+?(pH*M2Dr2Ypc~ItSQ&U2>ni>5$qgqRI=2N%`#}WB{X#WAxPk(m*KLCnbYTd$Yc2(ojO9YRj#$@ zhp7U&d!TdGu;EY_vzXU$&7j}r`0MewwX#J;MUiAMv5T}=4V7!0w+ioQ&+gpr?F(W8 z#5%umlbaLXIQezWN=1+sqm4J!mp^JcUsbo!;$r#XIabqzOn>72C(yl5U>G)tP{-&_ zxAR6XiWtsg zPnBHO_I)!q-LP*Hva|^pSX9_?Zi?~=dqdc|Nu&uaH-B@Q{MYz!o9-ln-#g!&LoW4t znZ7q?%ZkI_&>_tKZc3BwBDijiF;bX-`pG1NTnS>m?swh-rbJ`YffJK!pu8sPDSjlW z){a@apiqSe`J9mS;itvHUEGFTTA(1{>}BoD+$i;f?|BeOk~E1gCk<@x9)p6wS`yqm z|Ln%#?t>eIEG0rA0*h2I1N;z#ZUC~;6zG0iePxp1_H${Bq_U!}O*EJ;++pVO z(=X?xpcRpeK8*Kfa41wQLP=exfUYV5FU1{{!4MIiK^Og*boCHKJuE$%g5T^9nKu*+t zxoqgghfUyBBJ;lpUl^dyHr@65AlU^=@;DL3UM&~GY|!?D!cDAN<|IA1Ja;+5SwgmL zQqRd+jh(#^^Ha(2Gs5pq%YX#j%+AHl#leqXK-g~5HEv-IQsmT>?BAQPE1qGBe2P|# zxTu@zB@8eWzWQR$Ekqi9g`f}=q7Ou^xcRJYXlOXz#SHzpFD*hJC-UkMJ2x9CSumZ= zo5TD%K}8#wM}9G&_X7iOn#vpavM=UI$qTx>2)Y9OBt#3*{P%D|xFoP!NpyE&9!3qA zl|7sE^I+(lg_7_CC9%(WxAWiN|0TM72`>& zVYU3X6SD_r?wU6fLqEdxW`f`l0+2h?oH8~SGAAhsex7%HA@1_1-BZk3e@>%E2zULf z-!NA_*Mm(}T)OgwJ3-_`;rFX~j%y$F%7tXP&1reeKYPwB8C-q^38UQz__oAMs0)KD+a)2F$hHV)OkJ&wqE?%)F>msVUAtnjYDXK}$au)a|gNnD+d9 z{$=dh-qt64B4j?6=KveMUZ><*QK+ZO9-X)V8^T*OEEj6wBL-g=XAZgjf`({zQQzJk z`UoqTsWfRB=7Np|S}zP0v;tHPHl})4sxa8+Ss>7&7fT*3bhu3ycQ+t4N<0JLUJ*tjs1PfpDkap(i*CVuIKCz)8grH}oj zR?y{9Ud>%hU1xJ4HOWGiv-rxNxSVDKz7Gb0T~*SfEcMBNQEH=}1=!(S{h}O8Kgg9VBm{ z@dvM~SFn^N=9V;W zFq1;zw?X{4lkMu%eeQrS_dK5rbzwu97Oca86)VBUv_Hhky;3@%^EO8-s4`lgWyQJ7 z(U)Tr4>P7+!XR`MW?`qsnfu^#1Zou=7-HDx^tRWlXkE}-? zf8lc9n_k>h?j*ACN@<%u3-?_Bqy$_DIW8vJlo7d>J}9*l$;Yp!y)@KbCC0as;Qy$) z%BZ%wV4DPjySqd27I$}dcZcE>D<0g6yA_Ax?h;&zQ@l{56qf?U<>h;8y&vyyR_@Bp znKN_F?Af#DE_U=HcGPs4=+B|$X|qkd-NJUDR$q=_9iY?){LYy&QDk|JZw%mc?}*sB z*Eowbt50%bKgsq~Zy8#nn)2o#VYrdBSJ4N*B$5#NR9S^mwK;EHC@#NB>EbgQA4`GF*ed(^Q*yZY@jT;2F-`$3;%;UTAI3J zS7SY_r8_0*x`$fdxaE$_uJKj``n>>;3wk6^NA&Xkgn?sXPyb8}oxsBx66*#53GES{ zRXR`&F|dEyUZOXs-YFVMdGfF8sIP#aY2mG!|4mbow$EO<#(F0Bqe zM@X?77jaDFXWuRCq`xOARbR^%_lp#o#d*+<-JCfECT&<67O)o7y#Wg(87TH#AxKsc zfQ^qOdc=0L(Nv=VLxE(H#R3;iu*8%(H)n}9*6w3L=rh*9-}XjT%iHH{tUz59WfJQz z&1!w28@^i+vz}^SdwPqKOVa&Zv8hh)qBLJS0oK!P>(t3uHYJ7_k&dK+9E5CG@Ud)J zX&cvuCCuxLk0&7?Ek5mY8@_l|Rv~VfN?9PPhl!Rt4fwq-eI>U}wZA`=3L@Zv>8h4A zrTY-AZf3T=5|3ZLasSj>Xn0kn*i=59-did1KXN~8LT3r}n1gc&MGnZh35YI~?*=80 zUZ|@XV`CzHFmxtFkg!1#M zw>ns_J2P2}ZLOGbsyoTZzo0kp8Wl|gzX5{>l{7Z=^hRCdpG7p)89v!YPv{p(DJFC! zcsAj|5<^+0n{@4SLD50>f4!HLqO{;|xhPL}E4Xyej?yIlvlGA*9BV%;YWX#H(JXS9 zb2Hk`)i9jw305F)w?p_z`b34R4fz(Mo#`&H7`^LlOvIVcDQ?8!S9J;f8usr8dK%aX zrNjTzk^Qfo5fh(a61&^rofLDL+_kz1&Q9~&3uy>xpF88>py)d~qz1ylX(jPBP;8{o zbh>}OCZLssqS)1!Ih{{-e1<@PeN!r@3kSN`W28F$i=%c z*1$p9txl?Uevss9`}}JJK#lgx*eI|c;DmfQ8F;RUtdGDP=lY!3k6r}&8nD+Lh|}x- z)fIj2=&`)@G=~WHOV_Mr6jVMl!N)QxLu5QrJH&-g618Z}^L|GBgvk6oD2ydU6rn{I z(06){&LZ9(aT2_5CN(1#JKJ-Eetxk`KGDI$!e5P#h7frrj)LVew%2wwyViB_)2HXh z*z?t?x=VEASnAKarhy^5IkGHvz&gs|9nc@y_a4XP^Zon3?e8D#pv`><4I)r|pBHGe z-vyRA5#!AVR>?0K+D^b*P9-$PTaR5E&Gw&}8p29GOgxC-|6nZ0H|-%-V~|(;LK47Oy_ZK}3*4MyHxDwV&HBv?&%{{_6|A`@ z#=~QFH1NU|Q1%vVaNkQcG+Q|vB2t?N{4Ff_^`5`)ydK7&+;StmY`XaL)ZfbaL!pYg zMCEg<(TqCk(@L}t!t;eZ-!jQ^Xe6uG%TvdI721C7Cp4lP$n>>%C&DE{LuW+p+ou2J zely?hpz~YUUhW6=45_UnPG2Ea4C*f;2NzMbZ~2(P;1>jnx^MP8p7~x)6w7w;ixoDc z>eV3zh`*Z_4KxL}wsHE-eZ)YJ(SyE|v5?yDsni_;&`1m^S@?@@%cmNkj3wS)8cO+mlw6*@GV=)#Gc1s;7nlph8V4k zqv=Jsh=!+#*eEm*sVH}#0ob*0Ud{L{x&$3vq)q5c#e6SiE}s7C6Idt=b_$qy>HCCn zU;h<49en@#Z6JfJ^E=e#!kR6shwrdN;Kw=0HGt)EaC~J8E_Ndb@%}X!_Yya# zuSkDxg+hWK)Jn`8FMNU#6ODseF8AKY1=S{s-BY&TyEDGDgpNE%fdePA^f`+oh;+$C2)~-9>Cr zZEoc;UU*KRAO{^>9(B={fP-;>bqzu*FXzc^@<+L>qS57#kLVaZ!X zH{7%@5NY-WVK4jE^8<0LLS__k9NF4=A*m~+)Wd^}IN6S2)k@CK z?_dI#WB%_V`%3*<(Fjy$bW|42Z4LC;OLv<|v!8JEVbmyY$G%6t+}EqUV08M#s%sm? zct_8v#oL?JmF%zV@DJ*&(^QB_DK7`nRg$+g%Z=1il6x6${)T_PQlY5;$MdEPT6J^6 zSgSEMkX@9EIiEpwq&b1W?W#)yN>&~EGXSlIRJJMZtnpEQS#>so&9JW6E$6R;E)jcb zRXreouLMv+v{*%k?22xVyuqw#MQ@Y_O>Z36ti(VsCY!)Z`M31Rx5Iz)kjpHr`ZV#& zV{Y9&LtCKOJh4E6LNDQvUOC$7Ee7wl-!JV+U9)CR=yJ(qLfG%u!78NPaJ z zG}NUZV!El%#Tmx`_vkTFDaP|UGrTmFPJ4%5Ja3x_<%tcORLWAWVotiY zJFPxX`sT!o%U1=*5&ZpjZKv^gEnb!Lg!~<1!2fXp2)f+gMFeW8|H(L}kar-uNfWOm zX)~6WicLvnBRmn_n-Dp?dWmB2o zZk#(eg>oO)<>UQmI&pQ=T~H=^0!;q6N4d<7t<1T&eB*>3oxW!>pt&ipfw>!q;_7= zdX(vlQ`MRCzKdV2O#^`eE=slD;;0slu)HOymX31X0 z>SuY$<_!bEwzE53|IUw&b*q7B35z`yeBR3a>{7w>DMu-gO^xD0vP|MX1R*lEa9FZ< zWe*lx+r~deHU0A)HV_d$-NeOEYg*Ze_9?@qPteOkvV(4=_8kR+Bqbrg>SxGM%`Sn<|i<6nIPIH5UzgJ<@5YpncOh0 zq!RI}jd?piVibdG0$#Xk2?ayJjIAmy@>-QgUknAu&xC{)yD8})`qF8mgOp@F?Jal3 zQvR6m)D&=fELmwwzp|`1@hbUn!R3;4O{{%a!G*jCW|}97Rk%|%>Z&$cBA9o1an<71 zgA;+AAEC^PWCUR;18$0G^(zXN2_2lYjBnp=DbZ=@vTu{Vij{wIXzA|Z$j%@ zx*`~Gu`*kV?_$W@Q!WDnPc7%cY12Un-r42;P$pp$i;FT?y99zViK7>^Zv4qyBMsEo zj!f?0?#Cvr`EgOZ9CV5Rr{|srqSsc+glrZ8yi!!dEU9XHTGJTQqsc2;+Zoe)c-oF? zbV9ju3W@@pEDRI25sCtv#OJPnD!omU1s(WK`BpfW5)t!+^e+>Iw}=*G-~F+|)UUL-F-6CKtsJDOF_ z?g*8{t8Alisyjz06^nTp&YW_MGJKJRrd}7Ie1}ZA_hb~~R{`@Kk zdjgRn=J%?C;!B}CJ(p~BxJh@Mb-bD+r+AFHP+6X+JfyYlR&`P0dyMn|Keb4b_7C3n z4cIYX)Mjf;j8dT^O#L~Eb?`#Pu93Od%1S{7g)Vy+k3J8pLCG$P1FuHW=JjK?s*9oE zQ8n=@J?63I6~iiJKixuM7S3d&l%lLA9XS_M3Wk1Fh4pXks0gBRX%sDaqRsFtwok`~ z{~3_kOTiLROL3szqbt2LWZcTg2S0ziAGQVmVV{3G567-de0PI z;APB-;~Mn!>Fn|IszsjWZCGuCLBKmb>k_-u$~{73O!K zIdremQ+CT0*N~bpx)baX7v3vQzC{=GL{`_{Qf|Ml)y?K4G<6&9cWJIHp)}cj{=27o2;NaSS9sSV7l|hFCjJVJr@nfDe2yl(KYo45 z?3)U*>joE%r2QLXsNQP{PZh%H=94=tG@@D-VZ;59Ms1m=_!pk;8&U~u;l6=V6kXhA z8oNUk* z1YA|hSsph%lPr_q{E3>}9I;djA62yioS|Z0`w}n4*&qZ6k&|vtjJ5<(<`aMaa@wI} zI~_$v*HUe{kUzKxF+rTSSwHWXrK1@UJM7esQkeN_&i|E%{fF>ov?7h;mwBdrX)?{W zy81M_LMz-OD%j;JHUwi=BHs=lRUUtlrOgtgblSV+FfW6fykNnv?(^r7seqw)veSNz zE$_r6`+2N(9M5_UJjv^36WSDy9?$?}5$W|U{y6UBKjCO1aDG+IuwScTd=<-1Rg1q; zY_q`Ssy1h$1h2OF3b1c|N9wZ&In*VqSt`eL@v;+|<2YPLO)OE-DqwqhvDr&rbJ*^~ zXtB{(ablj&it#h$2-`1LYo zX=7*a;|$>XVGP6rqw@L)@Uh*1P#)ZZyN}WVy=i~Pbg~weh0YB$sbG0{1P&Ta=qidr z+L_n0d}CE6eEn0^K1~tR4?nD(##=)Y$)7GIC6nCVPlZvu8{Aip`i0f#+s}K*;{f%x zE(})sB#Ihw@rwYQu0q!CdqmRN(qzIaC4EQo%DDXY>i=#smX(Dlmgrf;aMXOWcmUp+ z?vmQ9Z-_`roJ%$}DDRSyS=$Xo!s@GV6hOpiZe{7CmAqNNN9vD+LI7%zC!&4r@a#%G z0N<#vdH2a^v<3-qT+?AS06&w)s|`VIQ!I)7G#8de-rjC`;4JC@yDD0E%PJ-NZVqXL$+dtJ|14r@^gN>zGYJdcO+h|fH}ywSC>N8jCL3TEDtBtR zaWt3$LLm>fnB^!0!0GJMC>deb>j1q!ZSMbM*cQs)>IrG;Jr04*#V%|GRrx`sqQADQ zF)X~}mW5>$4O}ruRLcUGzh7OAs-epW4MBeTz_lxEg#CU;*Q|_eS1+9m zH?JTRzGYHFQl__dH#IawQ%umSD{$c$KuCdD5P~|C30QvlC)HGPYgW}Ldf!i87}ehD zN05VJN5w}%Rk|!kom&uP*I{^7q-Zp#z5nic?Yk#ZZz|e`T_1+gSBlIp5^v%^^rwKJ0J!B zYpt(a`;kr4mmU6rhWZ>%zqtXROwuii+vIg~)ch_6aq5bD8rJeG`bHyTHh=EUL_ru` z)LG}paw%iR>ikj0<1mb6T;`u2EEkYQSVFBFxF5!|^faUJCi++^D&%D-wi>jzpV z)m@lquo%aLuC#Ch{Za6jPgx>uqJkn8jwSDS3ytWtT|-Q}!xqE5gcn7?BM6%4g{|Jt z$j?Xx08E?W&e2ODjQ(q*WVj2F_X?{MU*umzk((rb->?|z(Uo{kZ(Kg7xeh_6=46n0 z@x?=q3Z&P}d>o7Cz7!lEFun?WT=cnE^6Svm#In$1qWImU(Mzz51kkJi&JDLw4I>nz z6dsoZpOV3J33Pec_r5jrZLda*k@Q^78g=%LPf?XYgJ#iLRz_lIJ5MIU`=V($mA_?0 zuh`!|*SLSxYAND@JmmuLw7(Tj0oZJfO*;{=B-Z+OLnyixJr}^zrCVm&-`UVxU8O_^ zUtLtM)2jM=LF(W9RBN*a+WfKKo{>WI_ijz@@O)30R+l-D9BN#QrTbYoKM@AY{CyI4 zz(N8+a^^ndfn32!jj{e$P0~TKt?tk5_ z4obVB_QOZ=Gj@3Ye)-zWe}iembE;!&4HrN&2qQGawD-T9MWLYD$P0%l&xdBAfCq@N zfy!$G75(RwaI=1G-|N@b-NrbI9x621Gs}L#4d1gLOUY=!QCR_Nf1XI~u{e^}FN*t* zFnukwry~NNh*aZmPo_eTkqg%W>$9LzP+I{=efN*p8`U_P+v!#2d;}18ju3)fNCRdv z#A576-{eUfR~Jch)-RJY#Z42|I39NRaK@*U&(6WNh;f}p=)%Glxo5_ z)V5-L8L?@*#oXs+H_`1RYgrRF5!1);o9g zdR>OTsMf=WYrsJt{bKV%=PLlsI|VvxAWzixfXiQy@V}QzTic_BUb-O?v%L&+g_t#Y zm*Sb5eyfiq0sCVb*%p~Eg{!&0jL271!+LAxu;RP!(xKZ-;$9||C4mG)d5Av@$-i|U z4Tu3(xBGh!yF*%2p(A6Eb7b=qlsOXzMrR&Rnql5L*Pp)cPTtD5&vmfXy>ko~0wZaB z%t8=lr;*X85nMs)z@)#)?4w?9|LPmoH=uhf0r;1LnZU@+t)}!~0?}}}^=qdOXiMRC z>}|XWNw1e%gNGHDCJxYB;K!SP9tFupxip3Tuyebz`z_ruWQ$==1Vi}2VS9nVB?tzh zcG?Bwx}E)lb+T3beBxsl-15|mnpJz~bwTXIZto!Lbrbn}#S-tQ%Z%@muZTXD+4y%f z(|EO3ct?_{2kbUG!B5)mGnop|ff7=VseBE>Qp@WDlFq)8nExYr_kC%(!NTGQuZ+)k2-XB^y-OX||}O)pm_tUIS%UNJCBFMYnon z><;@C42(wi0XZ3SEGXJ?t%h9pmYhqiYP}UHOv+~+5RO7jek^wm4ffoZ`pS~ z@%68IdC!p--Uv2bc^KNa%UT(a_yE4j?D#q{Qwk6kE|E`KBRwz?Pb$v;gA%K{guY_D zP?88x& ziR-wok|^`$^U1(#zjUta&95SBzpM`|k6)aIf5Io+{8gp)J+i)0{nW#ulu@Ge^6>3` z2-@#!@*MIebunbu_ectPdTl>kdCaD~xA^(I9gOgL)*l^ItM;55oQT_hueuHQ=JULM zWQ7^_T5$p1dT@mh%JwZ&6u$0UH@dI%gI?G8hU?o+FIDab#r*Iu>wgivXuj_`;Bz~F zdxV!~jpv~HM4W+?|J^Jy8(V{9r8@Lzq_t`2slsFgOClHIx<+q*$KJIS_xAc0Z-&6` z1pIX?luA3A?Okdt+-NtPY0&WA$%%pkTts(Ay+~-btX)CpSmg{f;Z5@Y7sH8aOYD~OYi}Ms!qnWl*>0UW z3k&C$Lga%!(6c6w3lS8hjGIZq;Gr zh>iWgPi!m!+=WPmaPHm#RZDK<>YQLg}F^>~$jQC=QMUbCxDDE+~-`x^W) z)Nw}>+u&(~7I$zqEKd@bQXt+q%XCPywX1I=>s}Qx(<+1f`zCK!9o6T<07U1hG`3~} zo0v-_c5x@*%KQFsR~(pk#S67rM?9{xp|CdhQO|P8%;nXaop~2cBWmHNTEL!Nuj9D% z4<~P^aCu@prTsy9fgCaCK;gI9t%k~)H-HX&%M8_Q(rV2hpKE*i&LM{&m7%( zI#|UW`ki>SOrE-!d#d?b3;z!XvxfFC_VD^6MGkT=2i@H=`S4H+s9>k;4ofDy^n=Js zr6+^>K!dNP!3nQX-NTu%xI@T31)J_EgGQym-Ew*vbCgB%;i^RCKP>=4uSvfvvB!6H zsCmLb^-@+3yH%o2CY55?ScUPhd4ErWb3y!^@QKhkN2pf%=?t&HVx2*z!>^xZWa(z{ zEKSyZu>i(D!pnx<1w`K-R=!!Sa(^O9SNH0fTFg-ia{W0L zCxe^PJFPv4VAcXe#&NksrG?;)_>DR_QJ*k2%ezotGkoyAW(c}ixvVI3w-!5j?{%;U z<^b3#sGwg4cvSBt8AM&s=SHBN77y%a-xkvge6lceU+CGU%|NnOgeKrz{TiReRvC~y zZmSMgE@BJ2|6Cjs5|Bf|aLK_#F?uK}vFB6Le5kVdnh8sZ-)e11!4|Gm#wP9?tZ5Ja4Bz079AWw$Qp&#oYY7jA!h-|S0}OEM*gGoa4! zuAV8nCiGKI3eX2xM$);&w-{J@#WcGVCk`_zj0EQO=4T^6HSrsOU!G_cRvYe{H!f)) z3{bGB&C6iNQaEAc%|;k;sRfZt*nLlPc0%xu2}x9rTlf-0xWNqz!EwCrQs5<-$!RB+ zNhk5b#Vc^N3lWeMYzB~Pd0L>cFhcDQc+uRSFf2!Ri_RZ64lu*?Zw&;M5fbYNMDzx3 zSJ1%c%@{6fp~Nu41@BUIUMRp`YXL|WC8IIQ9*@iufX}GSoV*)Tik47Xl8q4fyK_EH z8%Z$xMFuy-UUa{6{UzNX39?xXLK021%@W#?Q!ts(Y*D-Rm3iAf@ASSnS7|3Q?8iI;I zL2Prms=9ThNX_Wg#(!U0an(zH-|2BSTjHjyjAsfisHxHAdu9gg=0HrgMzS%C4;o5a z)}^^McVg{f=cJpo6SK1`j-z@W`D>uxX$(!NX&V=;pm0+@uF+kBevul>&hW!kWmV;$ zJdh=#z@JH?%$j+YzR_xrV-u@cWaI2H!%K(&7R0}&2}i3|ZU`e^oFgRwiGD8=aiw4pWFKz$FD{1ad&5%HgW-jJY^j<)=i70i4R*B?}l9o4|;rpOX*YvbCwo zlF_o463hP7s_Xxm3Q^gKTz?%MU~pT~z~EBA`@T0fdXw{EU49~(&5)1SnxPmIN5KNN z*b*d1KzKl@F=ZiMZlCP20S-1RcQ`lH*2mRU(}E@}#ep2w(UZfy{E@kR8;^N64U|b< zXg`9P!Tc+=IbW7YS~^5)g#jozFuDN-VSj;5FM%YMI8sxk7i7HTJA1(P)h+mE(Jc-A znpG&#=ac)Be$BNOMf$Y*aL?sq($IIwc&itkv_p8Y@6vpJ!|=whQ0Qn`4Hf3x{OtEB z=y^15+0qcRt*WNgO!4?!!&smD>h}Heh%_FKikza3(+NEmJ?J!cLFhBG%muEyJQ#(@ zscc};ttxftLG=4aTM1aqw)Oe(oG$bEc(ow?w=_!81Cmo}lB@tx>EE9x?!H>$_R3K9 zZ%i26B7`+p9#~4>BO8Vl=4DXL;WTupaj?}}d?bSs+IGQ!MsniilVqlAm{@;YkL6r5 zJ}0dFWKO@hN<_2!$6y9S)H+9NtwXk+d$Ymljow|pRtH>QAR_XR*tj3{7sIN{Fxdf; z)Sdt_=0m(_HSa0SFt=J3SHXB=bjDj?4yQgzTRtocSMe5cVc=fNAX3 zB(M8y6;reMdkO=L5wB>|<3j@x-?YtkO4jJf3z#~XOJ zdIS*Iar2Ydu@FxhVLp%?qx+_fA%e+t74wmqocml_dbE+5M^MJAG^|Sr+JdCDdVrjGba1Y=) zBLTP?Gx$+1Bs$J)B0%P>Fk$86IZTde3V+wLxXUpK3*Np}ytF|AOc%P93@;uN5(^q8 zC`BP+T(Kx5?bKSAERT;N--OAld%z~kUVL?80-_FtikDJ#iLW>n%duer%Z-6CUSAZc zhbHi(0nOJ5ITO{EkYcz-I9Q2gIN?x_>UZY-t4q0_9BibBAUf#p2{lqQdOUMcG*uWI z7B)9iMLjYV)+$M~t3S3DSg)i0f1wi_maJQn^)NQ4nmlQ{>z=(bD+*~s3;;?PRo$<2 zt?Fsah_Aabk~J4C=c!leq2dzZK$^TNF+MDQcXPB=u8kKvt=3pC05FVCM3OsJ zKXm+4Uy7}<+7c10gyAN9|lw9f+sqk+ybgt0iT6t{lH zc6<>n5cMMOG9rXZ*plAi-bN=yHoZ9C3GH@9-co2)u|~u?3p>A-j)Z!V(hwLXj}e0v zIn=|@wdb~HIPTV8@!zF(p)ZqQL2w{HuF5_>d}6Up@{n7X`adoJv9bxNxcZ=1pTV_F z(OkBzzAX(xoHrAl4rT3<)hZr(?`Ld7NByf{ILO!r|L3(effn1S$BF*_&cwEf;Z+ak z`N-qiZad=^0Jip-)uD@UL{+bD|F`o`3PT65m>fKML&CKGuT&Cvch^8bz5jY~VG!p~ zqtdp2i%qhL6)-Eg07inhKn2e20-fd&n)@>rsEj0lACz=kWi-TdQNoJB`f%rDQq}zl zRj0)||I{PCF%2e+oqkq6KSwQt78S<){1KZ&N@MyOspaddeXs7p^U?KqW&Se9RIjB5 zG7qk4C8{wAoB8wkof4!TwZZ8BlkIdGn?Xob;Y48sMCp2HI`ac1cCLfVf2|5*8yOJF zK13rK1qInVunp^W1ne5rk%zXj2Uk{wq~qW9n)sC>h$$+OxNEzQF{J-eH|$oKS9hWU zqp=rbMeYzZG@%@ug}0~*w71v0UDHy2$?2yzAkwHDCU)F7-fdp_6`H$DId+gJLdv+2 zfVs>+QU|i<4bdICB^oR-gQ&d#=N!7NV9Xy$q1PtFpVece84K}Kf$$;q90z|RTI+!` zVqiS*oXgH>x}DoOlf=^%*Q%3O{>M~VDgL6a?=p*ZU|QubN)7BEX&Ju|B2tww5Twd4 z-uOp_jsn=1emTwGqNJ&}8CE_9);J3z&(n`5x|Jl?K^H#QO3g7$&ti@mWe$Bk>HaAJ zOk_GJ_5s6iTxoS}qom?t26&j5pgE;;2p^RsJT@jlxWos>$n&{U*M@0Rd#ja<%ZHs{ zZXiR9Kf5)$K3<_B<3<>xvnt z6Ye}FzS+U}yYt8OQburlKb+v)toGwK?-@b8)u@LIIdcJdwJE3Qgkg^^1PDSrt7 zRVo|U(Hc9u^|v1+_D}6^w*2y41aiMW3RKHAn6K~k?J1Z_6sOC%+zsH;{M#{tM5;Jw!qJW zxy4H+JJL^o-+Ci*gU;T-0PR;iSSK)Rudd7;AFvk6YR+iSL4*YCzY`V4Ar_;gc!DYL z&hB+(zLua#ayA&@CExMo+r_-fYKtsszAH{ef8AQ690$S|0 zVheGgNeE0}4t$iR4>^Afzq=%gdHYkQGccBEFo9JjAp%;EG&pKjPo0%6!@e#nS+MQi zZi%7<*HCnvD6%$rk#(Coiv19vcrI*xC(Fy#F?)=I=<_QUBMp%SCFB!_&Y4~>;n?2C z`|cNeUGo}=ICxoja$9W~AR6z_30agMei&)Y)H|z&@bpOOtYVgWp&A;%Xb7+{JJsQH zSXJs5D+F)UP)|i6unQ{+QVlc5-+L+958Ib4iD~)NAqeUAL{=6?Eax4~TdUE0#Jx*C zV_9Fm(e2?XdRyI;6VEA7IqH3_)+QH0nNL?VPUoBD*z>dz4PZr<(wD;&UbvlqF7mKj(}9mJZuOk&(ZrGv?c%M_;#=UF({-Zryj^(R7R$7es-gA#5DVf=ujU02+@ zfgH$)CbvBzskcD9m;o`d)c!ooYiZ6wpb*>TfTl8?9#bUAYy4H`i1~f4fXNv`u+`$< zDz3pHhfyDb;DepFC1F}4IBQ7sNIKLk8C$*mAbJktBKu;iCNUiOIG#%>%dUJiX#8Aw zb}W+q3!&M#KECsH>v?&dA9*)$ZE@?p<$#0&5A^C!D2;b_P_Wf9dviVB^2lLwQOv5L zgEnnp@3wQ-F2El1EEZYNDTM`Z|y(M zKMAAOlW9jEjH)KeR8vA#_o6@NE;+(75DdwtIdbP>&e)O+}&cZbP)%DCj*q?xV!3s{=}n?j$oik&cVEkkXtryocLRA6-!Im=Z;}akR{@VX zr~fz*$qXS&l;v4vGHI1#6~*z_*PS2Ek+l;EnM_pBz}}3m@ps9R4C5H!T$5@u5=Jwd zNjn-})Za3+_rfX5@w%2<*gi3ggl%eaq}xk$d#_}5o@7eNt;1H{ATf;^PCOb|?`6FA zOB?Kex4h{qXnGW|bu59A-=(;x$`8A+Q2WDR2I?YKSGinIVA=KUM4AJnz>}s8n$N2~ z)46$Y@D+wbn3Ui2dKP=8b;{R8O{6iUenl!L*;>PpiiIDW6MBVkCw&N zV1%YVDc2Y$RftTlYzIzdTExDUmn+f=GW`#vvYF(bN8QWg$c0%j?L&Tt0&zB{?tgjz zTylg9q-%aQwlxMI^v4+ZpNW4vK@@F^?lNfW^w|` z&XT8Xz$67u`%$AmgC5IeV+apW(CCc?d{a(TEfX_OzmtJM85mKTYL&jBbWzS+HtQ=d zUugg^1&7f4od2Mv!P}a6W(t|YV&zkc-9Pow9aj2uctBiKn*4OXa^e55|YGYx+AW<4C-ER?WvmQ%915K1XT&hs?oIT40(}t6W*d z%AJ3ula(x81%|W5-7t)KNBA)5kmS+|L|%Z{oo&2rCOtcD9PdRI1Y$)_m;QbqtnT!M zu~@^@MWufySjGT)zZ*Kq)|GB%Pjt)mD;3128g0Yk0P?b=`24}o^9Q6)2JPwd3bvaN zVmDhPBlCvuZpkx03n;gz6>910Qk`f1ji))d#{#yQo>&IuF}}143TTV=2wJX8C!R9y zpc8{B*DBvf&ohztTNA^+iJiqRaVM5dYk;E~Hpbuz1DG*TegM@KRaC{Ny@T!)ZSxYp z0c;g(V)?YnZ}416bd~7*RK%sFOjz;|>|u<}|I9{NC+I!+88D=CWgXH^)P*;1m~|aC zljguA&P@7JjWEST7H{p@WH-6EY76OtbsdIA7fQpBb}!%|a_^}mMgEt#=Ej42TtFFq zjZNWZ{_7wv$LCZdES->W31LAi)rUs=>)+et(gj;?6!qO1%YObB4JI|NMyQ3=#vAu` zrw0cY6O}Vkhnb_LIjoJZ#4Tj2Hq#*gfm**$NK>QH_(!0 z`${V$aOQSWdD3{ZmZM}_CIwXERbp*<0aPKGyrG`bv$@aEFmSBRf9h&B^=UnE4K2*F zb(%r#@-{r7oAaA%n(GO=K2V@?eeamt`p4kw`_yG*_fJ_~oy`M@BNn|^@hk=E^zzI; z@0Z1yP#rVlRJ%sawH(Lns2gCoJ;HW5XF=JJs|43K@D}9^mejiWTVYT>6D7qpCmPV!i z`xgp7nH^Q>w9r-pCxnD{Ch4K|HBnph_R2$9+9Pf0Id&9n9k7!Lf}1dx{Z}+QXC$v| z1fwstaz$s>&$p;qCTxtviObRQ=<=AmkKGUc%5sf+V^w=6YYu@MquA#Vv!|EmG4iD9 zFCAw_X&Ugc&mAl@cV)Q5n;l-nle*?Q65>SSPpP>$l^H^!5<}3!nma#@G^`E80)&R$ z{^EVdwlA;?PgWLjPDoHcCXLs9_ZLbkGhiVjing-Q!K%!D86{l1ZXrUh(Btp#E|xtj zv@I{3r_HZh@ie?8ao_$Sp`B3n|FRK#Q%LSwKXeq~+U0e4i5qXkgK@qugEELIggV*%&hn)Xh(-OTzXp*V}*4&=H7{UR?2RLTS z>Dl-Oc(~dS!!r3Y6BijmcOTq&`pWgLoi4i?ie87jD^2BhaDy!5XOcpE;=|D^xO|3p?;9U*DiCehkm@{cXApI*R zC>)FmirvBw7>Wue{u*?s=Dw&$fzSwH+fdc00#SvAK)XUTNvzq@j--xo)F*kW?$W>i zHd89cq(`HHh(mOM)L=_g%P__Ep9j3f4JtZ4n*R!?86MB}8Z3*Z0Kq=Do%fIL11Fhg znz&8{#U!|9;!kEcfA)OJ4a`m+Dw!lOXU?QF^oCXeIN+okx*~Lg0}p1uuGVYFzL~!D z4#CQ5*bCfmx#n$2rg$-y}?v(3k6XZu#$cKTZ9JAAhSkh%=yy z8`qIWc{->Q?+T{}kKo&SnQL+V*0J6Eh4#?;JLMr82|mON*%Fll-{pBjEUN1)LKI~* z0k_MO#dhzZ-o&PBr2-8!ECLr=4Wi$;(dO2IRr&Si ztZsC&?Y$yH_9B9cWcg(=(FU~=K?<494G0%7nsyz^n62*t5O>-7Nc!Qo?*H+G!t!S4Lb>qD2-gVc=Z+Ah{`FI0C zmlNDz$KUV4sPqJ}iqSk<_d;+*Bs!BA!%Xt~DI967t&f$o+A`mJ`>{V$y|E&N5-3g2 zTvB`_^4K^A=}^l2!$Z*tsTr6ydoJxp!KUc^y8!}SCxno2d~Z%nwH2o2Ik^xDe*Hq4 z$#FlK%2*}Z=Q*uc;&au)#XAa!K!}}*N3_mi{51G$i*aAoi^YiOwTH z*%ALGi1OnlzGqBfv>S{{yb25_<}-ce6h|pHj%W&Gbd>mA$5L+CRnvqY{h?)D05Y;P_CcC|@YZ8E z0r-O+Skx7ZB1D;wp@#$otzN)U?GKJCg+GPAa>yfiuigoh-(I8CK4C)PDvtd~KUfuv zXLT7W|2ChzK!nSjr5=U8a1+VCdPfVhn*8OC=esta%3EFgFg~+AUD)nunlP>vjC=YZ z8&n&MSL3pid=Q9w33)2s!b}7}-=3}RAH|;FZeB0NqfO{+WM&JiUVM%Y7d{0`l6S%>}`@ujdt_NC9tOG`gwFo8c&(j~xm4y3z`t2<9w0|z#!1aCV|E|J)zb!l(vqOl-i`gHrg`A5)rn_aHYW-|5gQx4 znk4tJoouo9yKVlO4>38tffKug`*G&o++r)JzaCosVQ+LMmR_B~su?mWA*XyFLaQ%A1H@cnYYjns4>kJJ6LTfY=gxTTgnnwzRcH^7Z}w5~Vta zv2U>dcdu@UO+yzg8zWlKZU2FzfTD4rts$@A>Uv>iJ)+VxAwj{nCHc5R*7rzbrRq4SpC6rCSlUo0r#Vn>pNe2TNl&+sI zNIf>SUYF_Xg%u6K_#50+mOTH{-g&+?@qB+DrKli9`Op;*1?fe4Q4|qK=p6zf3JQi$ zrPm-TMVb&0={bM3reBqe4c z!OF5)YqU;O{)*~35%}gr4Zlr~e~iC4c4|L6x~qZOHEqfkvHDBr&cxD()3c3kn zeA<`-e~Q00pGxY_W%4Zg)|4mVsP7`)v=H#Qdeq@<7hjS^%wu~WO8PG0o~GhUybV;o z4BuYP(Y~eXDcQux3Fyx%Mr(`{K$wGw&Fe~DB(GwHhlWJi%w%wJYMeySsUtz>!1ijt$$qny^FI8mPoOWea6y&@u zBA2Qu^+El(?#Ro++AT)$+x{EnV3rUh1x zsv%;6TVdxdtJh>7=IfO6MtP2cTjHR!_k!i%j%|LLQG;(wmZ4u?4gdVnHbS(1aCtN} zwtTdK#t(uJEO<^5dNSCaVt++I7(ZXgvD9=piP-sN-m*JLJDwAE<}>5PRthLVT{bn1 zaeCh*<-KA`AItzcij76Ri7!QJYyq{}I1n)!y%UfV0Y(%0U8O58RQPC|EI*36y(4JO}tgX@)LQuJE; z^8<0YsHef}=xrn#+OSbGwGBW_Rt*B^!)=r<=-x4U8A_(%-`=swa3A)|6t)R|7;9RV z^*w6D#{f{zc8Kzubji&-ufXXHoL3?kMfnpbOVke;))~Iknn=r2Q~1kxYPzL9{bfLL zXU2u?f0BROVe)^Jk|H$pw00wZ2WFRX5LLX^{sZ{GN4HN5w&O$2TKBbEO#+nr?7G$u zdbbQ|s67do+Ia`$p~EV_gx|Gh0Klwa_+ND{JhW9udGLw(4=`{XBVrhY%`N#+uB=;&(XWG!#j2WGW2gAYfDQG&>dPO#ovJ{ z+}CL?$iX|gY|a0)BsYG%H=8B)`wRnui&FEeGV_Roi(D9RQ4RPn7U?3L z`AKIp)r<-JvIG&L^|twXmy@XVH@$?pl7F_|ji}e70g|Zu=#8zJf5+}Y^}kPjhIRQu zl{f1sw|sHR8a8gg^wqRB1_*TxxzuV7TfcOQlZmtM@M0}sOQsIKKM@P^&xIeUQvnER z#E!A*fw3mdHJ)PWNNR63pKW-TqSI764+ ziI(;X;V<{TUtC05QfJjnuT^|0IsO4X3t#)Tv)s`)CWF^j2cE6$1{g?hx@Z7N-dmLi zBm{?6JvG*EO6Q68Kzzc#4!C73R|~98Cx$?o>td&ho~wq^U#rnj-wwhb1^JFO&U)p4 zPtz3VSep&lD!9-dRPfoHmUF8`CCegE`F}TLlC+LzdvoZJjNpg}x6_Tw*ieL+$m}W;>K^FkF>1R~rmS zBJOEb3Gc({LR_a)c&_-N_T6X?OW=9k?Ka=;=t>4{RFBO&y9RIp2T3yT`q&5EtDMH~ zqveMJX7{+$6+O`XjC5RfMyfSCcgNwpeBIb(H2aYx?sVwJke1>Z!e) zJja8+kk{`7KYWK*I3Zw>1FocQ*FgmA zbTYn}MR#gMwCpOw8xNC-I-Hs;@U>Nr)1RSn+mRr6smMe)%ZNskSbdhA?tS^k~DO}dU+lMxX70GjyJjZRB z-^cJL7(5txQiue*1`({>mwQuAj^=#Z*p0F9Tk7&z?R8gFHV~<~P!+P4gVJTsls|^0 zbdm+Rse<&Soxzx5iojgTpL7|^O#P=L>lK4kyt?7_aP3e%<$y!cS<XYBw06MKa6Ke^VHPeF^HG|(%{B7O}!ZraEr>-Os^R<}aTRAN6OF6m_a;WH0 zy;$dvY-=@qK2r_$D=mKKHvVnaab%Y7VmFs-(<;EbZ~RIi4>F!HU24OUeqn#Oo*%j{ zl;gNd+Fw~{8vf^H;%XH9OD4`g)pmBd`q-gLYXKD&uOo;%po<1kP%syO)SsC2D^c(z z4z5RmsD5BB3P!S}4-9?$;XG~y)Y&AZMmgu!$-(CUEHMBR zuHz_p>uBB!m`{*CC;O|degGn_5j)1HdHq6lZqWyM6Z6i|h{|wl4|i zMK0duX-}KoM}H_=0M?6VeMRBi{#x9@$8(be2n>b;gl63X0ZHAjeh^a@rHuYwf%FBx zPt7)rTwGlLj!x;E|E8GisDnGX-#;D}$~K7HPU4U><$RM3d>F?Xld7Mo5~){cT$mf3 z^&jbcV+Iys-4%-4fsH6WJWojD@Ys^o_N1y57O-bdc=q6lp}M8vyPN+dKI?nec%%JU zt}CBkJa4Eq3l;A5)rix-sE=iQMV3j=2Sqo3(~FjtQN8evskiBSY2To4y7AQKAboRn zHRb2NWRMb`@%=uDplH0ZUkn?=e<*A9ZLJtx`&v>qJU;$KLqkJGR<^*XIDe+mr&U2o z>0}WI;`aepDE)`OX|{d^W z^OTti{nmK--E?K2GP^C#G%JU9<&Z30g3}GX;8#Xqa95qdX$eQC!WaumcM7A3=A}+! zMT^K;h_Jlk`uf)-0p>kaL;HHCTIIomT-O#N+U_WK;L&O65+tkS)j;OMhf>|^$2$v9 z)3Oh~F!dYRY%$T%GQDlklwXC9douo8>LmJaSVfO2ZQV1^f2B?<6PQi8(mJw!%zij8 zXH3z~AQ(dG{Iuja;b@%iGOp&#UoctDnpfT~_@AA8I4{RmROO!f)sd7H5wBUtrzRAk zw+)!w@6#7a-Vs7JeV8B@2@)T1I|vRw>h~tjbYniN*~Vxyt%qE8w86stVy@(v#u#QV z>3w8b{~B(UT_L7sQBnQb!RnKg_wCfK8I>CGbH(qsuX;a@7k5Iy%hNE!A1gJBgv{8* zdRbTtQXh7m>TZv5|wiH zsJqH@v?;++Znmd%(D(7>i+XQJtTWV%_bL0?3bmKN=J2TQ9v{1`^&)h}=svp6RM-lo zJX=83XbNE}!5_yqy}s(sJAUb5t}$i4RSYgN>DkYuWSjD`UnSF8E|EcwB~9y4x23Yz z?#@2fHJ-E!Bv`3QPlx1>urITEzQ8qr$2L3xd{)$o+*VY>xCb56I)x|J8^ij?xu;jV zE9H|x5w9KiS5YQl!;sI_i_}5zgEvK%L$bX}X`h=Cljz>Ce3>t`b8ssEY<~%8I-|#0 znKOEle$!{I%&alAnwPV(EqcM_ry<(Abgz0+5d=-rf5(3N3SjNcPk(GIXKrq?PQJ}c z3oYuQM)OfAZ{>si$e$b=@0W7I$!3zM68eTYh~#I(%Wc$Pq08Agyc`iyX+1byHs->` z&1!!x{cJ+QyQR$HxAW4ZeLZtpqfO&ngV&PdYkM;hgYmCd+CG}DwWLaYlzCY!$kL!& zP(=|CYj3ozCp_@qg3{HNyOp+=fR4>FD4<~mG7eZ@-DSq;^)Fw2_x9)y_t6RX;=^mwk~|j+A1W< zf)<`tsTt=$D=d>tNbrQZO(GHsvBZP!A3h4~y)~>< z6O$ptcI2^UfjH_&k3Z`t6}Gra|2HTr5ujpCO!IfMj3E&v1ygnxFsPWjzlK`4DsE5 zkG`;Ors>Z^c(QPJX6(M!;*KkR$%8d6flEge=a=REpb6OYvaJRK3%$ z4l1CpOUzA+p^3|`?PxO%^p47uIvBM^JgP5)*%cUMX{cDCi3D{$VNAR|x@vjsd}QnV z%=wJ8!aTXJdY%Id)9?&_j!|2dF-RE=5$WM70Zf7dc}@TQhWoebg_?RX z@NQ2_CyqE{38}6+U^G3S-9yHMDNj1Es;j-GNG#%@n9UVV% z@%vYj^R5m?xioInYdJ~MC7q^D>#>sQDR$%7>+&MbKv zCNArq>Y+ff{XQZQ{p(>Q65%$YVv8|CEQQ7o{DO`^N2mP}n562+2P5BGd`1XeON)lg-3;*Nu~vl zLP{j1g*YUrOG=RzAUV_XvqvQ|ri~bpe`Ywl==ik4s0TEkK7jEnY6ZGC6<199AMhvK zU_%@G95V@Pu!dN)^bc?2fiRaB)R($355QVYb<2UOLf2M!W0-SBtTdi{HrL644r^RCIyp$FnA2>WD z<-JpH+x8GiR*?q-vu!T>?b{(i?Tto0=PdImNrFU3c(rGTdRGs>6M zwExK+p<LT5t&Ug(WJpD(Li(#q#f;MPXb4xi^sId8zL%ivfAZi1Njr2Y>h2 zp^PkTdxuF$dj>jqMqc^>iY8JN{l*@X=v@%%2Uk} ztVCh-Ub{Grj-5`k_ONfEYITbMFt?hG$m!?b-8#h6g7Hr$cd<3m&^7 zf@73d*2Lb|PQU3vB{Bgc@QKq*!^k3Tu*wlbIXGo|2|Xhz#*-SPLoxjsT${nE=C}>QU?Oj?1XzSa;ebp$fsL{27^1lz%xUjl7`@nRVFKbs(6G6UeS}`gPb?>4#Uc{wj5nYGm&FB@SR#AqT zJ!(WsQ3m!Nh|{Jc-lL4{hrrnQukzE<0|D1R?~Tbvd><*a^(QvO{dx6VpCdLS`^!PGf#cRI&trtE}J|b?cW@;LPWYU z1nqb=`E1!-3<{$s-zfdtr3X~(yf>#Om?n1{4LfQ1c-RNeY@>Ac-hW{qR=euIlw`h! zSAFzocCcZg85>@Ae5)_5JFjs78A!i!U#kyApN9WNPd8s;8Am?hB3*%a2IRVuE`+)5-D@H2!bAzpBaDma8UBg_I z7yWxCAPGCGzReS`RULfhe_P2j0xED(^UzS9rmTX31@?NvJ@|ytN_yTKi4c;&uGC+U zQ7U?}(Fc10x>m%<0JP@^06-ybSSIPn2A=whJrAh;JX5qs;hegG#@0O0sXb<_V|)8s zHx4)P>M~$q^NsQHj$4Xv)Dfel#dwn4m~JV%tq-@D&x{2A>~ofAIbgAe=cK(o@8;(1 z?{xM+%wI7oSGDiE#e$oY>aIBLDu}if9B4&rYG`;a{Ph#ceH5g}jHY-IDzJX^4V~D`Oz}GVkUd9*x()Mf-$e0f3kJ%&W`)WbiD`Ys2X)&KaBDU1CUhZ-kHu}Uuh*)p8yH>>fiQvf1H5; zj;#dP=s3T)yb{Z!I{WRwq9jOQ4;Dvx;6Ar2R)G1Q`lpWkd~bpM-^ED8aR&gWlPf#I z8N>55;qJcFrW+p zrT?hdoD-v_8N4CwiGJY9k}&zf3B<|GJxV@1twx@cV`p(TK)SrWoaX8XwAi_=W9@yj zj4ol}-@VmX<;_6=#7^G$C4!xP3I|e>=du55J20G-w>KNNfD&qe4&AqCWQs%cx3{Yyw1Gl)TmwgGoEMFgG?Ux@*1}bgt#1 zd(s(u1l?|zT_9-{DXUYf#RoS6MO)Z3H8m}NQ2|DaIvUdC`4Aa-4P#ZS2Txu5Q*3-P zA0;89s0f<#d>m|#xbAiV#{vAe;O*N>rot>3XrmdBv|3iX)NBD#*YB{c1@2BP;l%7}yt5*8BTlku4&2MYZOy04TR{vq76n-sR8!eigVNLC$GB8`#uL@~5Nt g|G)poEwD!Bk%Zpfks)JsFIozErl($}_B{0e0Ol)qmjD0& literal 0 HcmV?d00001 diff --git a/enemi_kamikaze.pde b/enemi_kamikaze.pde deleted file mode 100644 index 199021b..0000000 --- a/enemi_kamikaze.pde +++ /dev/null @@ -1,5 +0,0 @@ -//ici il faut faire un enemie qui te fonce dessus -int pv_tres_mechant = 2; -float cooldown_fonce = random(3,10); -int yk; -int xk; diff --git a/laser_ship.pde b/laser_ship.pde deleted file mode 100644 index d7e2be9..0000000 --- a/laser_ship.pde +++ /dev/null @@ -1 +0,0 @@ -//ici il faudrat faire un laser qui one-shoot les enemies basiques diff --git a/mechant_tres_mechant.pde b/mechant_tres_mechant.pde new file mode 100644 index 0000000..09107e6 --- /dev/null +++ b/mechant_tres_mechant.pde @@ -0,0 +1,17 @@ +//ici il faut faire un enemie qui te fonce dessus +int p = 2; +double random; +public double random(){ +random = Math.random()*(10-3); +return random; +} + +double cooldown_fonce = random(); + +//le if doit etre dans une fonction ou une class ou void ... + +void test () { + if (test == true){ + image(mechant2, largeur/2, hauteur/2); + } +} diff --git a/space_inviders.pde b/space_inviders.pde index d2cfeaf..864879b 100644 --- a/space_inviders.pde +++ b/space_inviders.pde @@ -1,373 +1,374 @@ -// ajouter le son ? -boolean son = true; -boolean boss_start = false; - - - // ----------------------- \\ - - -// Importation librairies pour la gestion du sons -import processing.sound.*; -SoundFile sonLancemissile; -SoundFile sonExposion; -SoundFile sonCollision; -SoundFile sonLaser_boss; - -int largeur = 1600; -int hauteur = 900; -PImage space, img_ship, misile, mechant, imgGameover, imgWin, imgboss1, laserboss1; -String misileMechant1 = "data/images/misile - mechant.png"; -int x = largeur/2; -int y = hauteur-100; -int xm = x; -int ym = y; -int timerGameOver = 1500; // milliseconds d'attente avant affichage "Gameover" -int timer = 0; -int win; -float time; -boolean lancermisile = false; -String touchePresse = null; -int nombreEnemiRestek = nombreEnemik; - -Ship ship; - -boolean[] level = new boolean[3]; - -int nombreEnemi = 20; -int nombreEnemik = 20; -int nombreEnemiReste = nombreEnemi; -Alien [] a = new Alien[nombreEnemi]; -Misile [] b = new Misile[nombreEnemi]; - -//Etat de deplacement: 0 = aucun deplacement en cours -int moveXp = 0; // 1 si deplacement vers le bas -int moveXn = 0; // 1 si deplacement vers le haut -int moveYp = 0; // 1 si deplacement vers la droite -int moveYn = 0; // 1 si deplacement vers la gauche -int moveBoost = 1; - -boolean pause = false; - - - -void setup() { - - stroke(#000000); - strokeWeight(1); - textAlign(LEFT, TOP); - textSize(12); - size(1600, 900); - imageMode(CENTER); - - - //là, ça charge les image dans leur varible - space = loadImage("data/images/space.jpg"); - img_ship = loadImage("data/images/redfighter_200x200.png"); - misile = loadImage("data/images/misile.png"); - //2 pour le skin 2 - mechant = loadImage("data/images/mechant_rouge_150x150.png"); - imgGameover = loadImage("data/images/gameover.png"); - imgWin = loadImage("data/images/Win_game.png"); - imgboss1 = loadImage("data/images/vaiseau_enemi.png"); - laserboss1 = loadImage("data/images/laser_boss1.png"); - //on crée le ship - ship = new Ship(x, y, 3, img_ship); - - //on crée des ennemis - for (int i = 0; i 9) { - j = i-10; - k =2; - } else { - j = i; - k =1; - } - a[i] = new Alien (100+(j*150), k*100, 3, mechant); - } - - //on crée des misiles - for (int i = 0; i 9) { - j = i-10; - k =2; - } else { - j = i; - k =1; - } - b[i] = new Misile (100+(j*150), k*100, misileMechant1, time); - } - - // Sons - if (son) { - sonLancemissile = new SoundFile(this, "data/sons/lancemissile.mp3"); - sonExposion = new SoundFile(this, "data/sons/SFB-explosion2.mp3"); - sonCollision = new SoundFile(this, "data/sons/collision avec le vaisseau.mp3"); - sonLaser_boss = new SoundFile(this, "data/sons/Laser_boss.mp3"); - } - - //Vitesse : frame par seconde - frameRate(60); - } - - void draw() { - - // if ( nombreEnemiReste == 0 && ship.pv > 0) { - // - // - // } - //debug: - //println(nombreEnemiReste); - - - miseAJourDuDeplacement(); - - float d = random (1, 100); - - //Affiche l'image de fond (l'espace) - background(space); - - // Si un missile du ship est en cours (actif) - if (lancermisile) { - //on le fait avencer - ym = ym - 20; - // Si le missile sort en haut de l'écran - if (ym < 0) { - ym = y; - xm = x; - lancermisile = false; - } - // Affiche l'image du missile - image(misile, xm, ym); - } else { - //Sinon (missile non actif) - //on le affiche en dessous du vaiseau si encore vivant - if (ship.show) { - ym = y; - xm = x; - } - } - - // Fait une boucle sur tout le tableau d'ennemies - for ( int i = 0; i 0) { - // image(imgWin, largeur/2, hauteur/2); - if (boss_start == false) { - boss_start = true; - boss_time = millis()/1000; - } - boss(); - } - - // Mise à jour du texte de l'écran : - text("frame: " + frameCount, 10, 20); - text("Time: " + millis() / 1000, 10, 35); - text("PV: " + ship.pv, width - 60, 20); - - if (ship.pv == - 0) { - // Installation du timer - if (timer == 0) timer = millis() + timerGameOver; - - // Vérification du temps par rapport au timer - //println(millis() + " / timer : " + timer); - if ( millis() > timer ) { - image(imgGameover, largeur/2, hauteur/2); - println("GAME OVER"); - noLoop(); - - } - } - - //Affiche le "WIN" Du niveau 1 - if ( nombreEnemiReste == 0 && boss_pv == 0) { - //image(imgWin, largeur/2, hauteur/2); - } - - - - - if ( nombreEnemiReste == 0 && boss_pv == 0) { - //on load la deuxièmme vague de vaisseau - //on crée des ennemis - // Fait une boucle sur tout le tableau d'ennemies - //for ( int i = 0; i 9) { - j = i-10; - k =2; - } else { - j = i; - k =1; - } - a[i] = new Alien (100+(j*150), k*100, 3, mechant); - } - - //on crée des misiles - for (int i = 0; i 9) { - j = i-10; - k =2; - } else { - j = i; - k =1; - } - b[i] = new Misile (100+(j*150), k*100, misileMechant1, time); - } - } - - // Fait une boucle sur tout le tableau d'ennemies - for ( int i = 0; i height - 100 ) y = height - 100; - } - - if (moveXp - moveXn == -1) { - x = x- deplacement; - if (x < 100) x = 100; - } - - if (moveXp - moveXn == 1) { - x = x+ deplacement; - if (x > width - 100 ) x = width - 100; - } - } - - //Truc a faire à la fin... - void stop() { - } +// ajouter le son ? +boolean son = true; +boolean boss_start = false; + + + // ----------------------- \\ + + +// Importation librairies pour la gestion du sons +import processing.sound.*; +SoundFile sonLancemissile; +SoundFile sonExposion; +SoundFile sonCollision; +SoundFile sonLaser_boss; + +boolean test = false; +int largeur = 1600; +int hauteur = 900; +PImage space, img_ship, misile, mechant, imgGameover, imgWin, imgboss1, laserboss1, mechant2; +String misileMechant1 = "data/images/misile - mechant.png"; +int x = largeur/2; +int y = hauteur-100; +int xm = x; +int ym = y; +int timerGameOver = 1500; // milliseconds d'attente avant affichage "Gameover" +int timer = 0; +int win; +float time; +boolean lancermisile = false; +String touchePresse = null; +//int nombreEnemiRestek = nombreEnemik; + +Ship ship; + +boolean[] level = new boolean[3]; + +int nombreEnemi = 20; +int nombreEnemik = 20; +int nombreEnemiReste = nombreEnemi; +Alien [] a = new Alien[nombreEnemi]; +Misile [] b = new Misile[nombreEnemi]; + +//Etat de deplacement: 0 = aucun deplacement en cours +int moveXp = 0; // 1 si deplacement vers le bas +int moveXn = 0; // 1 si deplacement vers le haut +int moveYp = 0; // 1 si deplacement vers la droite +int moveYn = 0; // 1 si deplacement vers la gauche +int moveBoost = 1; + +boolean pause = false; + + + +void setup() { + + stroke(#000000); + strokeWeight(1); + textAlign(LEFT, TOP); + textSize(12); + size(1600, 900); + imageMode(CENTER); + + + //là, ça charge les image dans leur varible + space = loadImage("data/images/space.jpg"); + img_ship = loadImage("data/images/redfighter_200x200.png"); + misile = loadImage("data/images/misile.png"); + //2 pour le skin 2 + mechant = loadImage("data/images/mechant_rouge_150x150.png"); + imgGameover = loadImage("data/images/gameover.png"); + imgWin = loadImage("data/images/Win_game.png"); + imgboss1 = loadImage("data/images/vaiseau_enemi.png"); + laserboss1 = loadImage("data/images/laser_boss1.png"); + mechant2 = loadImage("data/mechant_tres_mechant.png"); + //on crée le ship + ship = new Ship(x, y, 3, img_ship); + + //on crée des ennemis + for (int i = 0; i 9) { + j = i-10; + k =2; + } else { + j = i; + k =1; + } + a[i] = new Alien (100+(j*150), k*100, 3, mechant); + } + + //on crée des misiles + for (int i = 0; i 9) { + j = i-10; + k =2; + } else { + j = i; + k =1; + } + b[i] = new Misile (100+(j*150), k*100, misileMechant1, time); + } + + // Sons + if (son) { + sonLancemissile = new SoundFile(this, "data/sons/lancemissile.mp3"); + sonExposion = new SoundFile(this, "data/sons/SFB-explosion2.mp3"); + sonCollision = new SoundFile(this, "data/sons/collision avec le vaisseau.mp3"); + sonLaser_boss = new SoundFile(this, "data/sons/Laser_boss.mp3"); + } + + //Vitesse : frame par seconde + frameRate(60); + } + + void draw() { + + // if ( nombreEnemiReste == 0 && ship.pv > 0) { + // + // + // } + //debug: + //println(nombreEnemiReste); + + + miseAJourDuDeplacement(); + + //Affiche l'image de fond (l'espace) + background(space); + + // Si un missile du ship est en cours (actif) + if (lancermisile) { + //on le fait avencer + ym = ym - 20; + // Si le missile sort en haut de l'écran + if (ym < 0) { + ym = y; + xm = x; + lancermisile = false; + } + // Affiche l'image du missile + image(misile, xm, ym); + } else { + //Sinon (missile non actif) + //on le affiche en dessous du vaiseau si encore vivant + if (ship.show) { + ym = y; + xm = x; + } + } + + // Fait une boucle sur tout le tableau d'ennemies + for ( int i = 0; i 0) { + // image(imgWin, largeur/2, hauteur/2); + if (boss_start == false) { + boss_start = true; + boss_time = millis()/1000; + } + boss(); + } + + // Mise à jour du texte de l'écran : + text("frame: " + frameCount, 10, 20); + text("Time: " + millis() / 1000, 10, 35); + text("PV: " + ship.pv, width - 60, 20); + + if (ship.pv == - 0) { + // Installation du timer + if (timer == 0) timer = millis() + timerGameOver; + + // Vérification du temps par rapport au timer + //println(millis() + " / timer : " + timer); + if ( millis() > timer ) { + image(imgGameover, largeur/2, hauteur/2); + println("GAME OVER"); + noLoop(); + + } + } + + //Affiche le "WIN" Du niveau 1 + if ( nombreEnemiReste == 0 && boss_pv == 0) { + //image(imgWin, largeur/2, hauteur/2); + } + + + + + if ( nombreEnemiReste == 0 && boss_pv == 0) { + //on load la deuxièmme vague de vaisseau + //on crée des ennemis + // Fait une boucle sur tout le tableau d'ennemies + //for ( int i = 0; i 9) { + j = i-10; + k =2; + } else { + j = i; + k =1; + } + a[i] = new Alien (100+(j*150), k*100, 3, mechant); + } + + //on crée des misiles + for (int i = 0; i 9) { + j = i-10; + k =2; + } else { + j = i; + k =1; + } + b[i] = new Misile (100+(j*150), k*100, misileMechant1, time); + } + } + + // Fait une boucle sur tout le tableau d'ennemies + for ( int i = 0; i height - 100 ) y = height - 100; + } + + if (moveXp - moveXn == -1) { + x = x- deplacement; + if (x < 100) x = 100; + } + + if (moveXp - moveXn == 1) { + x = x+ deplacement; + if (x > width - 100 ) x = width - 100; + } + } + + //Truc a faire à la fin... + void stop() { + } From bf201c6bbb7cce4cc8a56275222e4b36badd4d12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A8ve=20Oriol?= Date: Sat, 6 Feb 2021 22:59:40 +0100 Subject: [PATCH 4/8] Modification du samedi 06/02/21 --- Misile.pde | 2 +- mechant_tres_mechant.pde | 36 +++++++------ space_inviders.pde | 110 +++++++++++++++++++++------------------ 3 files changed, 79 insertions(+), 69 deletions(-) diff --git a/Misile.pde b/Misile.pde index fd6c62b..b9ca896 100644 --- a/Misile.pde +++ b/Misile.pde @@ -44,7 +44,7 @@ class Misile { } void tomber() { - y += 6; + y += 16; } void affiche_et_mets_a_jour_le_missile() { diff --git a/mechant_tres_mechant.pde b/mechant_tres_mechant.pde index 09107e6..6543ea3 100644 --- a/mechant_tres_mechant.pde +++ b/mechant_tres_mechant.pde @@ -1,17 +1,19 @@ -//ici il faut faire un enemie qui te fonce dessus -int p = 2; -double random; -public double random(){ -random = Math.random()*(10-3); -return random; -} - -double cooldown_fonce = random(); - -//le if doit etre dans une fonction ou une class ou void ... - -void test () { - if (test == true){ - image(mechant2, largeur/2, hauteur/2); - } -} +//ici il faut faire un enemie qui te fonce dessus + +class Alien2 { + +int pv = 2; +double random; +public double random(){ +random = Math.random()*(10-3); +return random; +} + +double cooldown_fonce = random(); + +//le if doit etre dans une fonction ou une class ou void ... + +void affichebob() { + image(mechant2, largeur/2, hauteur/2); + } +} diff --git a/space_inviders.pde b/space_inviders.pde index 864879b..9a5eae6 100644 --- a/space_inviders.pde +++ b/space_inviders.pde @@ -39,6 +39,7 @@ int nombreEnemik = 20; int nombreEnemiReste = nombreEnemi; Alien [] a = new Alien[nombreEnemi]; Misile [] b = new Misile[nombreEnemi]; +Alien2 [] c = new Alien2[1]; //Etat de deplacement: 0 = aucun deplacement en cours int moveXp = 0; // 1 si deplacement vers le bas @@ -71,7 +72,7 @@ void setup() { imgWin = loadImage("data/images/Win_game.png"); imgboss1 = loadImage("data/images/vaiseau_enemi.png"); laserboss1 = loadImage("data/images/laser_boss1.png"); - mechant2 = loadImage("data/mechant_tres_mechant.png"); + mechant2 = loadImage("data/images/mechant_tres_mechant.png"); //on crée le ship ship = new Ship(x, y, 3, img_ship); @@ -215,70 +216,77 @@ void setup() { //} //on crée des ennemis - // Fait une boucle sur tout le tableau d'ennemies - for ( int i = 0; i 9) { - j = i-10; - k =2; - } else { - j = i; - k =1; - } - a[i] = new Alien (100+(j*150), k*100, 3, mechant); - } + //for (int i = 0; i 9) { + // j = i-10; + // k =2; + // } else { + // j = i; + // k =1; + // } + // a[i] = new Alien (100+(j*150), k*100, 3, mechant); + //} - //on crée des misiles - for (int i = 0; i 9) { - j = i-10; - k =2; - } else { - j = i; - k =1; - } - b[i] = new Misile (100+(j*150), k*100, misileMechant1, time); - } + ////on crée des misiles + //for (int i = 0; i 9) { + // j = i-10; + // k =2; + // } else { + // j = i; + // k =1; + // } + // b[i] = new Misile (100+(j*150), k*100, misileMechant1, time); + //} } - // Fait une boucle sur tout le tableau d'ennemies - for ( int i = 0; i Date: Sat, 27 Feb 2021 16:26:11 +0100 Subject: [PATCH 5/8] commit de la session du samedi 27/02/2021 --- Misile.pde | 126 +++++++------- SRC/mechant_tres_mechant150x150.xcf | Bin 0 -> 38876 bytes data/images/mechant_tres_mechant.png | Bin 61385 -> 0 bytes data/images/mechant_tres_mechant150x150.png | Bin 0 -> 41337 bytes mechant.pde | 178 ++++++++++---------- mechant_tres_mechant.pde | 115 ++++++++++--- space_inviders.pde | 91 +++++----- 7 files changed, 296 insertions(+), 214 deletions(-) create mode 100644 SRC/mechant_tres_mechant150x150.xcf delete mode 100644 data/images/mechant_tres_mechant.png create mode 100644 data/images/mechant_tres_mechant150x150.png diff --git a/Misile.pde b/Misile.pde index b9ca896..db630f2 100644 --- a/Misile.pde +++ b/Misile.pde @@ -1,63 +1,63 @@ -//code des Misiles des méchants -class Misile { - - boolean show = false; - PImage misile; - int y,x,yStart; - float time; - - Misile(int xt,int yt,String misilet,float timet) { - x = xt; - y = yStart = yt; - time = timet; - misile = loadImage(misilet); - } - - void apparaitre() { - image(misile, x, y); - } - - void verifiercollisions() { - - // Si un missile est en cours - if (show) { - - // Si le missile sort en bas de l'écran - if (y > hauteur) { - //on supprime le missile - show = false; - //on remet le y du missile pour le prochain - y = yStart; - } - - if ( dist(ship.x, ship.y, x, y) < 130 ) { - // Averti le vaiseau de la collision avec le missile - ship.collision = true; - sonCollision.play(); - - // supprime le missile - show = false; - } - - } - - } - - void tomber() { - y += 16; - } - - void affiche_et_mets_a_jour_le_missile() { - if (show) { - tomber(); - verifiercollisions(); - apparaitre(); - } else { - //Si pas de missile actif on peut en lancer un de temps en temps si le ship et toujours en vie: - // 0.1% du temps - if ( ship.pv != 0 && random(1000) < 1 ) show = true; - } - } - -} - +//code des Misiles des méchants +class Misile { + + boolean show = false; + PImage misile; + int y,x,yStart; + float time; + + Misile(int xt,int yt,String misilet,float timet) { + x = xt; + y = yStart = yt; + time = timet; + misile = loadImage(misilet); + } + + void apparaitre() { + image(misile, x, y); + } + + void verifiercollisions() { + + // Si un missile est en cours + if (show) { + + // Si le missile sort en bas de l'écran + if (y > hauteur) { + //on supprime le missile + show = false; + //on remet le y du missile pour le prochain + y = yStart; + } + + if ( dist(ship.x, ship.y, x, y) < 130 ) { + // Averti le vaiseau de la collision avec le missile + ship.collision = true; + sonCollision.play(); + + // supprime le missile + show = false; + } + + } + + } + + void tomber() { + y += 14; //ont peut changer cette variable(le nombre de la variable)pour changer la vitesse des missiles enemis. + } + + void affiche_et_mets_a_jour_le_missile() { + if (show) { + tomber(); + verifiercollisions(); + apparaitre(); + } else { + //Si pas de missile actif on peut en lancer un de temps en temps si le ship et toujours en vie: + // 0.1% du temps + if ( ship.pv != 0 && random(1000) < 1 ) show = true; + } + } + +} + diff --git a/SRC/mechant_tres_mechant150x150.xcf b/SRC/mechant_tres_mechant150x150.xcf new file mode 100644 index 0000000000000000000000000000000000000000..4dd9aad88a54edf1863b728f5721012ff3512aa3 GIT binary patch literal 38876 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 K_V;4{H2)4!6Hm+l literal 0 HcmV?d00001 diff --git a/data/images/mechant_tres_mechant.png b/data/images/mechant_tres_mechant.png deleted file mode 100644 index b3d4959af17b070800507a5017b5b206d693a33f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61385 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

f;YA4!%F*c&M>uv2UNi|JQB0UsZsz8#f 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 z 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 diff --git a/data/images/mechant_tres_mechant150x150.png b/data/images/mechant_tres_mechant150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..82e2bffc2f1a5175ce3fd01db5a5d6a71622ddc1 GIT binary patch literal 41337 zcmeFYby!?qwk?XgLvShF-QC?KxI^LY!QI{6-Q9vikPzGg!Cit&a4t#r>HhV*=biid z``-PptG<%8)|g|?HP)PK*RHA^p`;**2!{&?0s?|4EhVP%{+jyx0R#2^%m?bY4FbYA z;HjqRqGIF@aB#9Wv$O#MTs}Df0YDE+GY}Aum4$4rMncZSl8uH)Z7?(F)S#Ja_v!KT za{vQ1wW?N%Z4M)SWY@0X5Qw`V_$G||>#w)Yv)!)k4iq|fz*T>GM7m3}Hp{bjfx#6h;zivWbqRl7fd!2{50N)(GZ@oP;zU$$q zL`XNzg~hay&%n3NLWA>>^O$%)yDe`)^XCVlryci3_wbFph2FJ1gVABC(}6OTXv&b? z2iDU29I7LCsht=6XAS`@l}~<(u|(7%8{p4rpwBOD7mWIEbM3ww^S%?o-TesrIA#2JoVj|Zp3|0eA_m_cdP~7y5H`C%uX*)+#_M3wzC9@QUHkfkmzNc7 z=DAV%%;Jl+f$uj{H(9qIW`OW~H?HVgGc9U5WIt*YhHA%kegGFG`|VOJly|s2yx*zo zJN6r)h6+NXZwMa!ZL=yVVbmzOeoSv2dDq;Xd*_#XyIxUe2p)&}e5SYFXQ#Kxuroc} z!p$G&4cncCS5Z|;yCMz(7tADRXH)s9oPE8%FFSsb)+B*@h|W7uVR<}YTY2Qq3A#s+ zJeU0gQ;a)7r+MH^V!Fax#v&wOJ&E57pzN7>-~$3|AS@h?nD@9~WvR&R7+Cg`Y5Fad z5B7O6*CkCNHpcsq0;noFO@~U$gzKFccH{OWkYW;L7)s`iOH%YD0tXpWFaZ~AZ z8m!DFIuVyt#%r2as#_L+95zs1)ZDDpw5>m3XS+D;_P0S3VVewRnB@W&Et@6;Mk4J> zQZ%$&m#wPm8g>-$V7|Nlu={-OI6$1DAh0)YQkLU8Ouk^(`H-qpx90Zw^N#zx@4%yC z?<->=rf(spLGg|769KzE`;%)pfQvd32Q`Wt#X%K9#EF^4tS2P9h@>q20ZF9cZp$GTG<~i*lx4hvBH%b2(`CsjC4NTQ9FGWVQhn z@y)xFZnQq69(IkFJAYT}5ZON1w)Ig_;Jjz`{9cR@h7|U!%epUs^D>kp&cNe9FrsZ? zzQ8@`p4aK@+iBqUaFEw@j+fXXAE>W*rO-HPe-(Cu*c2*n7VsKz6}PPHRj?LN$~4=l zd7e}?sR7_D8WyHTEU0G2ZgQa49UeQ2)Ce+5YcR1{#bXzE^_qWmo93FpQ!ll@nLBgjxPiZadhSmXDFmt{)OJ=mUYFBpt*geEiql%j`@)ZXb}n)7 zk}cm)PZ`S1K)qg$y)#Y!us&FWkceEBfOA9phL|qF0Qak7QQO4|{>F?EIWapc)!Uj0E?!Uy> za{837A*-P7h6iV+_;w&JnyjJ2tiT`}0aj*%(m15G*y@4huGFzwUQNeNupkA%g5825r4+5t zuSucBlIG*qTR}hGWGTgKt8=Le03{d-G=Z_4)g%`YK+}L>f0-IRW57osxO~Z8GHr(D zE=Rz_bBF|V4iSsvTMN^pB)D)I$d?UkSbU(`98$QME~QT_ev8C`Hmv>{fIYA`_=#;! zizS(d0|kp>Hq+gtun<`dH)-5_w;LnG!N!xT*Sx6F{?n}ht9z#o8Ej(SDk-I)AyAYU z)Sfn>XjgdZtRQzU=Tlh$wCM0l$`2zbJ1|0qd8O6)>CBQMS+@h3vD=iX*aN0{XK+s> z7-)G|bj`faiGYEtG}$PKVimpOiP4-sA^NZaR$6dxDgvLNGi-KM=!Fz)=*(YdHDprR z0`Z=@D&>cmjTkQeqF)DZzY*XCSI)fLA}P0dSDL^Wbvgtbd`%Gw-_w6A{M;G7CJYvNRr}FsRT|{n@kN3N~?$p zD+eb%(zWRPlYp&p`Qye6uBKwKj9wX-O_EMA#?=dHU)&Ce#}Qx{%?V21lcLIyT?pdD zg`Ba3N(bb+TqKOSTj>@>&rAFuKGtihY21j)(5BaUw-y~g=&S!SFEy1oFPMg+ONX+{ z9U)}PG&;&+0EkNK0yvV-CVYH&8$t$jU#mQ%3hyjWhw2XuGqDO7g|%U>DTKqXdQ+Pk z68_{Nm4kjc1)+PX7c(~`W5r)Z!HLKKODXj~Ewg`e;RRZ86k1i?j;N2Uyx!hcHqs2+>Xnu|MGAKphA1XXS<(j7Q&6E-`ve2Pecq!3Qw+cNf<=DfGeZ>Bv3rC^+rPw01P&y$S?tcI_O_i zL~;(Q61xyDx0L_`@L8XV=u=31UI>&_r3?l7Jb?y=7Y-Zxf#$`5lZ>m4DY-IxQ*q?iYmV^u3&tt`$)2}k zj9r!yXl0`}JQ!mmHAoiZK2n6xS{O$_ibU%!7ggsk5EB3_n#lnTvHvs3WGh1ixbV_v z5{dPWxZ217?49_tdO>E8xUP8)%g>wmB#?SV4{73XMBl{wBI8V*ymSt&!Q>i~&0~xw zq_hAcNhJ)4X??7&q3(gSh?`z!1RJJzq7{dLr6Y?kw<<*PvF^p3D8eyoQlul`Ql?ObRmTQJw!x3?FrjPzX z?m1vA2jv`kDy3fhtr!+HGLNP@+#H*rT%@Hae`{|>4_+h-(9A9eylgl1g!6jv(xt9{S4cV?P zot9iSG!+=TrnL{Zd_|rjnj2rLp^uow2L}kn3PZkDgP{;+yZMi6THmodc;d>T`0Ba3 zRhy-Ev4*fies*%~T#iC@QFue%cql=m9~CJ7WM9M#zQTZdMGiF&r^Be6aZK@we-$%x zPt>-1CMhsC<2unN{28FnJ==%0bEE7uQeVM8evfGiJ?W0<-WA)a-V+)w)+YUcfy|f4 zlq^$uZcMApj~y_-y^0S94xwpCs4Z~lMyqhGotdO-aUyPc+eQPb|IEy_W$r+Oohhxn z`6k0JoFOELf#~VUqSN$&kPTV`Qv^Q7BG7Z9RBN6MrZDA32sg+JX;{_1VH11od@a9|~y$cjucK_nC!B1oHYbElHa6BQ{#lNGC5dpuV5qJRcg zlnC*z+G9sI{t*U-loh=e7;l=N^o$<)A@ij1^x2ExYk@#{NVmzsL{zXy0E4`GzJob$ zMlmJbhwkK(6f{^QM4(cja35BFsX5cL;3#kxwfI*TnQ|zAGi0LWysv8qbT^I7#tquZtBS`pnEcy@WIqBsy|JL zf5Zl2eEqN|=?9;0eEbT|W1 z2!u+}=KhgjTHCpTQ(drFoB`h`gA9Dtl5MNyMZq*>zL~BL^wH%ZC8cc?F8oAC^;51v zU`c5Xc=Ad}Rl|C9Rg>>?`o25{ubBgu5uQl^&8IJ|w*>RXt_l-~H8FT8<|=%s;WmTz z^P^WG3fn`p*;rwPN}2(0z4ZdQhSiW|S8G&Q4KYFL2GufqcEqr`i> zefc#V(CGx6gmGeQ9kyus5ReMhOyKN73D#zL%@K3pwD7+??LC8Hs_iNw3@N1hA(d)j zQ8fFYwjo}ZB@aqi;8GIV-P8Jl{ap)qK&IjexY4>6>1nB>CxqXa9<{qq#Z{{hPZr8f zYUBC_rzzhqeJ;urhw-T81*~hMnS&_s2l-LS%Gs#9@98;a{L-!XC$fIaGHDA1x1CL?#qdbU+H$vr)y z0@m&re=r-NrhQFs%OX$@3i2z$qc1R?*A8_L|55?L2DF5js}FNaZXO<%0vzAymGuFN z1dOMxoLfyZ9_DB`<}0ol*Nb=j1&B>@6a*TtOvF%r@=SoZC6JVP(1t@HcUm&wg6rtWw6NojC206;rQ2b0s5S0zl){cRrdaNM7F$@fZ=4Qs+WEU=zp(S~xr2X=rjFv|| zT|-(Zc;C&Ue6VMQRFKH#zNxxt`4?9&m$-0&I6~Gt@LXAp_B|avheq^4>2j8WI1G5; zTg4rZgd7V-S=oR@DBF=H#*LcLn;I32HD7=(4*zo3L>kEN>CHG9|8CTUn&{>19!>b2 z;1TZG`V)!GYV+B%ly8wd_i6^x_DW_pk_@;!u`7S`k7OQ3l-Gq==N_>TbW?J8I4VlV*tqS7Nu_|2pxbaVOcf)N4Bnz;Hls{b1vNn_ z#Ay;*p6`el04_KXq1DByWJ0CGJW#KxDWRe*+GcWf>_`u z)#=zn37}{Qm=76IWcX5ugV-d2Xz-bBLO(6OKy&Pc#gKCV+fj%9K1f9HsS+W`NiABq-~$8v--2v(gxa460wCtrT(R=C@9 zx458_0?Y=_GNU=Cehu%giY;>NPqFPt{}j zut`4}1cNOjgk%xwRU+rVm(vo;LqHlEBcOXCR3`Lfi0Db5ZYk5k@-rNT?nR0nQ?WuU z1IQ%Ddcv$of5_f9Ab;z5s@c_(}hp42J{AZ{S;7rK}A-2W+>D%2b z=+P5Hu^#7LpmEA!DNov0*wFd-aP8zmqBIjw`bxkmc1ZvooJ=AL@v&+#EV)ImD4Y?6 z;=SJHxS2WCV}+_Fq}+k**aA=r=54vRNh zhHjY9u=Tr)Az5IrNY`*Y5RN!_@5+Pr8%o)Za;r-vt1YrcVY(ysk!8^A<$t`|CCZD% zuMU8(NDMt2AB+tV1G5V6+@q-S`PyfZU@E_cw41tb$V8!susWXx>4(Ogh+g7?kEWuU zoNjZhD;JHq@Mtd^SHFOsk28X<%ylbTl$Jms%#`o+U3&to(8lzU`66t{e3uXEa*)(` z?Eb8bxVw{jUzD62>?msiCxE+Hq$A{`?r1#D$Y|!VNDH_RCn&$Qf1hF3N-idO+~w>F zz$2LSF+}!=HzI!QLrqG7aYU#(MAIT-lC*L`6BXF-%Df0fRi7BY@vDTA>fr*;bg%~< z$`%(s5;f@+e>5ITv?|4I-*#zc>ClN9meiC`TW#FbBm2BRpn8-xB4v!YY|m)uvOtbY z=bJVJZ;`&3%+gg1oN`m6v}|5-)_aKsKRsAZ z0!;XPR!78hzE(_VE=0vqlffT7kn!d zN{k;gJ*=y14VsUGFYk2JGoMv4B(D+bZOo>El8pnsG55;g{DnTHbn~Gijs;5&A8=DG+3TWX7TZ0R*sD@_T&5UGj#Xtld}oskpagcubiw4Sr* zO9@3`FLZ`$b1bxbL4gB3$k9hU*m&m+k%pw`8g1PKu0Dc8@!-2xiZA`?QyP@I8|xR$ zVG`TsN)V2H4i!EOdR4K=77d9_l~Lt3M|_8g@Vl(z_H3q*6a^;vGPGb{Rmd>UQZG0y zD=XJA%(dxxgmTJE%e<-Dvv=i4G~u5tDbS8dKF<_kpNE*r2Kas4aXFM17~qB7>b9H-3UT;LidBca8clF^wP<;XX|MvYa6XkHChj1q+tbrD4a<&~YLO$wDgZ#cVU$Wj+S>Ciiq`(Ui^_P-kpk7eeq5n>W-YOpy+z%!683&PoAOE@gGsnUd~VEG_;_ zbPFq&p`DG%2gP1{mnpc(SLeoj|8Z15$V`Ytt+W1W!BT>7IqtPmh73(?K5SU!bDmOW z9ImCX6adY*d<*<5PX|z?mwgMq%RS|JXon6_$J@DV2AqPG&l7BkRr&h6(p=}zd}=W6 z41wt!kWb3GCJ>2_9--v5uA5rxnWHSQR^yj-MGP9glDizMS5sa0AVYLeeR8}K|1RMJ z_QaNEA7Y*BH-0I)WWg_5&D&WE$lUN|)Q+Bp(8dM(sEN6BqFO?uyI>u{9bB%j59!T6 z;{-A0l9r`kIEd}kz)8|OC!;D&bQ7k{$8NzThAO8xJGeD;k8d zt|Ai3Vwv@Yc+_36;#_Tyiz>9`u|FYE9~&{4q{!^8bnw>@jsQe!*AeZ+7jw5Y?C)vx z;a~lsIz7tg+_RlX)-ejVrzab-)HPV$&<~<4W_0)BrKNqDo0+9Yt_AGCeN`LMSF}NlA$U2J z3Sa}*#`cpIDx%*`fv7GjDnqs6;)$^P14TXRFjqI+Hu8;(E%?IAq47VgBEQa?Qy7Eo zmX}0lRJJlgfuPTgV_Lwvvx;Fu-6l-dACn zVqqO%uM&ifn4F49+L?*<_UbG_i1YQOBHjd>37-lx?fC$Wh7&sgYM3o!G4?q|+k0x1 z)K!ld2Z}pNxdOcx6B}BdS=CMr42T{z7l!R|A2za&eO{ z1~<9C*k+2fg4m%3#04b?4GnWM*0btbKCnOsOIrq9MJGWJDYedXm!;pg>>9x?4_1`2 zaJhqaXMx$MjG`23%;`mD0jyHDhrneJq~AuXGCj0xd2Vs0cH9Z46}9Kh{=IZ z`zK!4*+47U@HT!l4IgqYq#9hA*So{y1xyrZ55l)w@<}-fy+)j)B5@*!;9!XC=of!S zPxa5N-XXvd#00!@^O22a^-gC9!9c&z0Dwhq9PtlwYgkIF!r>jcBHX%1_MiL=5auRU zir+>*au$k+99{^i*0MjF*luX}I%)H)UF-1tDr9Yr*P-Slyz3w&d zK0{$<$DYbtO*92|h}v1;D+_&$rLv&u6k+ayNSramtkpIKxic^x>1`W-^P|e#G}XD) zr0>8l7BFl}3GUc45>RB_()y2F;aQ1w8YX7NE||ulv;ne_`^7lM4x)P3A3|p5?KnGw zHQWxd_15EKF06#NF=IYMX?L(^OIHi{vmkDsX3|VJ$%1ZXkl7H5;|cY(AroIRB;2GE z!t$)hv}@ulT5Eg66(qwi^jls)0(DBZZshR zYBZt|L>6TEFX>X0`2c`2I~1_8o8J%afy_d)o6ri~-#CfF!=L_B7kZWyO{WZQ5s885 zq&Vw*h`gP4M$SFgH1mW3%mPKhu!h44)1+|Tm8FWPH4zhi_O~>uwNwliF^vT#<&knl z??n_0Hi-V7;~Y`abli((>6l$((`H-wB)ZQ=rjq1P$F{3hsuF2S{wQ;}VoC=JL%rl* zOLYWsDO%WeaygxFR4K#Ub(!$DNi>HL03t8eAG-aiP7Fyqd8!lC!5=K1PHY+;Jx7UC zN#p=vpU`~eD3a%!6vo=Er=*0XUMN>^gQZdM>r-u#`GoCOztFVK z3Q*gQQBcUvEk&km(wKBCfV=P~a#h52TCNz(ajQ0fFn#SKmk-9Qb7SN6j!UNq&0wmO z7A@GzkN>GN7!aNhj*qE5C)820tY_<$?!iAJ7{%t z5z;Vj*1PYE5%c^<_Z?Q)&cYHKEmM+s(@~MDAI2%k5{|}!Y{%j3Z%gO1}o1i~E+2QATgdO$hp~Ij!1)qqdi_0Wr ziF)<+Ebe>FL&zju5t}=dXf9T;h#6L@R2IjY$TcOGff`EbwOm@luFMa!)yoDG9`2p% zOaQ)s}qIZdS_nKbuzwvnvc(lDH+GKy?7*o?Eh2ZnBC9{ z(uFABs7lYSF;Nm;G&u|WD zSTpeo||_r^;O1*~rQTJI4tsA^0j{8|@ntu9zyUS-w}WrDhK+1Fw`t`uVF$ z+@e{w@i;l-Q5CbZA^|JrBH0`j-6cvs+fL9*hpZ>M9EfL(nLy zu(9KSLDcMHO`DSWXA&=|ZG=AJq-vjmoyDa)Y-J)tqBi%Gx^~zS50L$oT1mijjq`acg8rX`zj))K-VOBu#=v#rl5gGER~x|N-BZFH_3p-oWe<2hRoyp$Z`owp&2Ou_gIH*1q~ z`Z+)gKmF8ajZ=+F@P4^laSg-KogKbr7q`sQ-{X7AAhBJXi-kO`jk)p{JwcZBg8DQO zQ&rP0ne)LAvsHDD_SfmGdRX?--E`Ih!L!{LYhl$UBOR|Uu$_5oY%cWvSb)9s53dHk zHsP6-n_Kl~oTSEPa3m!!q^tMr&1d&_qLt?Yz5E28B%or^ zb0_>?$%<+(9+)2B#i$`mA(p{tE0H%FTN@yw9;0PL3wKd-AqNY zgpAm@VvbA~`~pKma)?^RSM1ZGl2;qljmK6L!Im7p;aH)!eWJs^Ej~)Rf40C2H+!ksC^VJ_xS|IrtZjGV6dk${S0n+>j0^uOg!pezKA? zD=5}*_-;91^Fnx?#|4HZ}~|Aa_H7*bndc*?HWMNcVlq&|-; zXYMb^E-f?=>Tf=?URx2$VLL{tc&ThXK+}HS&4yK}u2l>pBK}f#*y>p_nXdxPZW7!$ zRKionjio|WXkB!N&0uBHwZ|DCGxHL!wNm98%k$<0jnaY#-d|f{=z4c?8oV+Qu2Hj3 z0D$;eel_HgS^~}22d=|g5ZNm1S`(p?vEs-q>iP_cTExeY8P@pPbfh20H%n8%L^wGY zBoM33-XYu~Bk!+{Y^uac7-szgRk0DVoSf9@R!V_*Wh#?=bO@&MQuBxK+ZQ_}`P70q zb*Nz$@K7Js^XqvRF765(4cq*udr zL)_}8lwfu(Yc(eo%<-@n^bc-*^2lhPm^sxWlwwLGVLPhno3u`%JO$zjVN1+jGZxCq ze7IKui;1PDOi~4AtInf-XVe zfjyre@vRw}FJ4M-{LZ^bc~#q$v{y=5%%+dj8ZBCQ$SP=B=jUel$EB;x)HoE^_}t6^ zNqY+G-0QYCN*ki)*xm$1E2fy^Zex%Z!%z^RLvGvlFT$<-Eo-tB9~mrI>iPwtes;tT~roZ^R1PnlK1Rbl5cSE8FkZST(h0 zMvYntWqNudk7kzv=#9{+m+wojhIJY_>dMgkt4z!7PS-9MhHXBi49n@6ACLE=vJEw+ z_3&eGe=O^^ePQ3U@&u>O?{MJHk(#O=G|wj{g!!^jl(hLER>*{cW`Ivob6@Ngo89E6 zW3lcWF%ONeOiF2SEJV;DOQyF`TG_Tm5d2LWzKbF)I`wGf*XOiODVuBdI`!Hr$|ch> z33M>Ij7>p)|3-Ft`70%d70{w?g=0-ZE6&UI(3~4Fh)8M=Tg~|(u#`%q_N%w%lQ$w? zmEw!2&P}lZEI+R%+>4#~y?hCiR9+UABmVB1BvLD?Dp?**YuLr+hw==Y^p!p<@fU^` zQYH+w>X9a)>=pBad2Mx&n;*?Cu{2axbNy#ZQ1(`M?l_ZbSQCq>xz+sAnkoVb^Dt4C z8R%ID>&`iMYu-CqV?8U{;Gik?M`vGG2XN0jm_6N=eykBT2j1nvk&l4J9S2*3#6slF)!~LaZXqGe-spjPh>1^>A1A++H|B zX!uJgAR<>8%rSnQ!I|zel_qnok&UV9;ZSx)2>eM$T}S#dk~*r=JtrdPrIMB_SiARFd}*hQt*teyOJ!zz?STyo0w>e| zV(nfw@Ua9EYWs6#Ui3w;^Y(bSy~L&>&Q{M$tbvFWz+3AKQMWuBBh zQKF(MhXn8<^^u=UxW?{SYliT&Jj~o*O%$&&8Gg{ZG<6lx6D4y+cJr*fqi{iqTsLyg zgtao50k)D2g%AFW)w4Ue$LmaFFnEMWv9tx8n7wJ%;Vf)<%9B%~< z5URvghJ9yMQyY4dL@Jg*`khZ8n^I#27qg6--=@&Vk-toS(`G;;D+|Y=&{YkMNkWg> znwpY7i2Cx435hd?bes8m296f~mJ^8C)Uy`GCtI9G65j7z++0ky^tL@z^L~2IS&6^g zQuTxV&Tzzt?g#HQd@~S1>Pvww%a38UmLEX$PC%7Dzl2Q~GJ-@l_P8SXI1+Yx>#GcH z)0xv&t*+|Ig63IMGajBl<{|ls8hB5s^sJrl8F^eMaV5Gii|TXQnR%9q4UJB2J3Jul z=Y`!9LBF~ZVxm5i^@KAfi;Iny$^qn3TXaUz!yz+7LWS=0GVhTGUyGMJQX^LGQKwTi z!Agj6g?tG?sAy0DuwJIL)8{_$!;;_+6Hzl6={ZkRfv-Lq?Q*Z9m}GvjCX!+-?P$uA zKQo`T!Po#G;zHoZLU@PZ=zS2aeW>jq$eZ9`!c^f9j)u&eff(_iVgM`*|CW60R>>Li!&?9CBuIu`Vg{Rm|CD-z)@7G46T$? zE-?Rbp2`aD7FAxtx^QA<@({#@jt3_via|mnKWm!cu;~!>hU@VIR8WCQG;=JrpBz5L zhbFKloF=@vSnd#<;b^1M2F+@oMf{UU#4k?u#x~5Ya9${0XkL)Ku|7eh+b#~RTn4&) z3gNUvA2+ofC>=B$(A#mk(AH7TqmjQ{UyNS@?mqg(dBhu(y~_DCnlunp7Z~ca^HeT0y2>7<;TmjeH)^`o>2;a~9%7DCmlbIG zV^R?{L(1AEYDF$;N1?OLEFYI8xYf8tKQ%c;T|w?iV$gjF-xl3cj-+~`GN&?83$9cI zs&>q~&PyC?9djXyvX(+lt5}va+gk)RQ-6qz%#mr9$(4!u>iB`0pa5?M{P5_8<cZ~&;!56m+Zoi!>N)JG>>1*D>iO#i z_L1&|?1kX5`%x8&2Z|U95~>EO4e>IRZV+QoFZ3m}E+#t0IGO|76^EZiofU~`lGBd8 z$6AELkyFcT*3fAJ!{jTAJnNdR=Q09E6Q?Y56*C@7*aX2h$oi&HbPfMnd$ZKG#m>| zg{&j#CK)F=7t0WnF7zz=P=sEXRb(*YF_JtYWm03TF{~ds7mhyUI%2X@^!_t&8P+4+ zYKH?~zd!-k)+5P|_@^iax<$?Gp8I>WFXY+el4vs#%n|ev=iCL^P?I;a{v|E4W$iX+ z3}@)M(Du;wiRWJ#4;0BdC{if-W!&V~bNMp1b5#h;B(6!%N9#|6yW85*L4i%91Ki zjgvYCZT_BN`-y;-;1)}3KdNR1I!5mf1~Way1ofHB!iHPl6P>6Jk>X!CIofT?e}u14 zedlVoJS(k~CzACb$C9m)rIp#R-?!_zPnpn2G4NSQYzEeUE3lbT|E9jRc=BVljetsn zVTzIH2VrBkGqj21SZo?^+RrW}BMs%YsCwB(S#2EMWj&x$OUtp3tIVxbjE1~djoE4G z%F^dgpX+{JexFk>`>3J)%dXDwe8RK$aT2O1G}0&Chx>_;LxS_pZ{o4DL%OJ<`DoC0 z%l9ZC9NcFjc4C4)lO9;(P*v=DWjN43zTx3Fw>E53Wnb2oMhF&07Dniob$@z0C>-V$ zS0CH#V}7q^3*AywjDD=U&b^Q_OMV)ALMVXi(cCstQnuqYe*TMSj$hqbch6%Pb|9h< zJx^gjFIynR_4w#$ch00+*7H0&g5SA@vCIC#W_tPhz+D9jy@-BohUEa zuS>NPcaMF3I8=YEIcRgXn_AU!#`0;~&7JLze9HWV=gaoepmz-57dYnUxiIVx;x$=q zpcDkY-S~DL5D%tId#}ec3)2T) z_E+7T=efEpgYw?*Z?k8>bC>ToFB&*?X8LJe%6`t9^e47&pVQsZSv$@f&S?eHeGeb7 zZ!XWuq80Oe!G8r`KXK>(=l}shjp8_mchu>-WbT>Ve9aIsp$K~qJka{ zMkdxk7l1L)+|rJp>@e^;A$Z@w7JKHYE`hfaCMv zc_*+1x)=dGY;EkEc|7<@{_yg=zyICMNCNl+ak1tn(UeyLh}t^=0c;Fx3{3Rm9+qw_ zBm!^%J||N%9u+Z(zf-)o_(?2WTpV~98QtC88QfVJ?48URnYp>S8JSoZSy<@b5%kWV z>|BgI=2Vy$9w1B9sF+p zp?7vMWt4tzu)WXc9l*%K#Kc9<#6r))&G=XQ_fdKIe^}c&|6Rp*JsCZW92l7ym>6ws z|HZ=DMcnP5{{CAFXSMe$av4>C&i1ZOCO~mFpq&fpU!6MGxH|vUr>isYch{e|ZA{G= z--G(&`L8yT((+3Gu=y>cxuvbcAB*4UzamXd{(*CFb+Y+`F*RWX+5m0e195(5X8sqv zi>28=7wBK+^Lylf3*_D1KluLz{a+E+7-Vktr89JsX!96FoNzmnl6vGdC+cGpjKtJ15s)sHE+jU5xBZfWN8U$r&u) zdCa((*_lnaS?D=9SlQ{>*txmsjo5)^^xVuGEZkh&M$D${z`sx^I$6F~f|1Q%qxwx{ z`c4Jp<}fw^zOyi!nE~n9OgP@DSUG_7Ml5VxOlBrrKyFUfKUBZhfk#+LnxBM)f$5(; zN;XC=X7*0D{3LRgcCH@(98j~g1**Cj{T7XxgPDzum7R;3jfsnijhp?SAa$UV^Lvv2 z=457KU}5<)Vrs%8@y=-Uo@|!3M&>|92RrjW1HYGr=Y2Bo!W#Xqjd$ih{qJ+(5p@C@ zx!60Y+1uOjll+bq@SE~aNdfr&UMxIv_9lM}|A2v}zw7Pq6(?e3&iJRv$M`>i|2HO8 z3ww9F|8G41g#Lp?*vZA+-pN|gNzvE}XyWoe^Za+MRgBa^?$?`-4-H2t##?>hc%$i%|P&K&r@ z+y1@O{;S{eze!^*R#SEkW)@a@ZZk8M_e$XApf}>;W};^`W;5bsGI_5DGq!(aceXck zaW`@T3Y)*@!23GCm)4(k22lOUKI(r(yITO?bA*dflmJ_%zq`y{|oLf_J2>x|C9M&VSlq0wRiaRUbGf2 zitcv*qx=5`_%{YQOB0}-v;F@R`d=Y`ljSeRo%fjk*7trqdp|rf{^R)g_q6z3IsX@L ze^0mniyq#o|KsG}()T}d{YS2UOM!n2{GaUlk6izj0{<5HKiT#Fn_O`JJi`Xsy?@Yi ze?Ncbj*B#ZKlg?*mX#C(dHa3O?=DMv?}2rY(sBj?fk*%S00qg+#(wXFc9E7Bhu#Cj zL&74dxtGNP0RezWiwUcFto-cusy5efJ$TTvK6jox_c6Hj{fyrm6Ei-1)@3mVfd*F0 z&My`ayg0247KuTeU~0w|gyJ|#mLWG^lRp-n=*Ux}Ai^0eG|PRH=zF&^x7Wv5*` z=}(S-;{Nv=f?5gAt~>7CCwdPnD=Uc5$b_rD3m-MQeO+B|x#LQfPA>0v;x_Iwm%2(B z#;;P5eJ_G`(tZSe`t^BZ&4MG#{_&+Vz@kLz(MG@*wfmcJBkXoipEhKZT3=TQlz+u7=apZ7L;-hHnD zL%!!A-ulJ(NF0&hxhOJ!v%DBnQ`yoXx1c7fakQ@Emk)~cbaY*Bi#ql%zZi84Uykx# zD^`7j?>msLZ)oI+zIQlBbs?1N$ zINIs$<(I*<1>4Q*)A?K7Mpa*Bb>d%M_zqU`6g~q zDgKnR@sRVdu(05VXOfJ)6Xg`=b=Gm9Vb^(7TC)+A?|JUE@p*4FfwcG4*vBtgnb7xs zD{KAj_17c2<@4E!2d5&zFlq$O89uJy-#^7lX)eaf*EZ3w%I> zzwt!p#aJIR!_0W_!3Sp_ee}^cy{v#`W)DUyi zQOh?Oh-VDk7~`wH7lD=M`KzC?J_0I&BB+3vq_q(c1u+Ft%z=qZhD};5M4t&zRmC~? zqc6pL{7bcPF~%)t*EAXN!UJ%_k5jcl8sIxhU5p5ns7x^1Ky8FD!DLMK*~bW<`#N4L zEIz}d-2OdkU(KFP3p@3Mi+_;GbvI%jT-T^N0h0m97_>$hqcS1d5Kq8=`fC(-9A=CV z#lH1E3ok2RecLU})!3!4roQ$UfEvpkRnuWP2!=Tj2hjme@jFUt_e<#Kj_`694T?E~ z%YO{6`k#PEEF9Ky;B5K>I3ucn3bwbT8vG*ml_!azI%i`)_rQum7#ndIaTjetdnL9> zu(=8;))Bvf$Ow~lqrt2V7rHzHsTFTsg7KT9#AAIMvu~E2qi@M{sfj{Sd5@KHc@Ewkdt65 zW2~#htc$x~jBFpEx}Bg7wYjGa|Fd~O--~iK$HuvuC=Lq%j;i*E?_i5H3<7iU-^|^`S~+mkeSi#cI}p1Zn^c^Yp)&t;UE6t%DI~BJKy=vxqI%pr}f4+zVY>g z!Qkm2v6=D6BaiI*Hu@Z*fjS5R=82;kP6a4(B<~R0J#5niLIcF3WeXD!v*c-iKLRTV zxDW{{Q-BGkInv6Jj>qj$qy;)`Vl_xEgvF_LI?MOncH3=Ne(F=7`r~iaV!d9E)z#Jh zkN)V7{?|Qw_Pqbk|NPJId8y|3j(5D{n!|?=-}Kqfe)cs>OG};K_>JFqhKBOqKjU}N ze1b)c>2J}9Ch3LCT4>wj_Xy?%Mjm$}VJof*h!90MS1RkA0}G~rLLpWl4)G4%p5d<< zBfFo(*0vB%cF_^oCb0fLzNKVYb~a7M(W6H@M~@zT^W%>{{<`Bi?C*}-D4Y|wIK*5->1gAU_>kh{bG$cgC58w9=4A$Stc?DzZEN6NZVle{1?m2 zSXx?Y{MBFm)o-3Ub?R>5Z(ppree|OrechdR-uau$%gge7*9Jf=q_9G$5L0v>^g_k9 zk5SgBJxH;MIBwwD0qGlt137o$20honaxqfJ8p$jL`(_2=fOuq`>UO36;zig)+mQJq z5c-%uh1Jg=RA=PGi4$`A^yz>9M}PE3trufnzx>O;oZWx_{l9nO#EIukxC@c=(SWKU zROqZ>;|;1Ked^B{)qmeld~6QsJ&M*7#Gk@S!)f`9;OO_2#;RSiA#!h&)euod<~%kd z;K$%f@D*}&fpWP==8r*@EUaXlDk5i$)H9~4A(re50iveA$hSP;FMjch+xPF^eZxgmsb78?+<=x`dTHN~KC zHAI)}p(tR24+aX71zfCQPOv?j&`n_51ZkFtMoju31B4-d-=iR1vKT2{1~%bbVe6a& zE0aih`Uv5p|ADB2IEOezoF^h64pk$f>Ft#zZ1Eu`mt9ZHAomb_ius7v)L}xD3XzBj zcnQd3eX^(4DbL~}g%I|=81u^W{Iau$R~$C8h4Ib{ku2goSi_Q!D-)EOU=H;PaPec|bj6d?f(*2#! z5$%~2$9J0Y`<>WxXS1zbgvo3FHTGlgB6=gV9JCFxkhV54L?dL85Cd`3I{fGNqQCQA z8m=NnP1%_?eRyYvZ|VP%UPnr^XMjpXXf~VSWd*GD_4Uuj7=P|tAEYsLr_ZdB{o`Je znSN=8@z#2#&VV!XBM$EUdDCvQnL?Ck%ksxM%HELp!*qB!E%q1_p@*FZNpbVr5GuHY{?N_NRo8xggNY- zLuzW%Nlet0dTcD{>>RFJ;AcI$WsJ_RlI?p6zxycB7O+?#-v!cLRasbA_`REMy6M=< z&Uim?;K2JfZ{GaokAM8*S3a+|UBDy~&8FO#Z+8ukd$&_jkkZ{oe2WGc&vS;~)R{TfbAo zIjRvQkjzpCmb^u@3GEhAWVjhc6=FSuoDd`jmcjCXgl8`N?YH0l<6r&iS08*4!VTYU z5~Oqmfe_R9vnIG4X%@(wLn2TwV2c7du%5jjV7>a)ul|3pyY9OG`PY8!*TPHntY7kQ zL%-kukwb?L{qXbg#>@o8NNlt~2q`>~Ii!~%mxI4#i8yY<@d6zfajPa7N|vn^AKuKMZ8C6a`a-sUA{!PbUaSSqVuxig+bBYMZjvaf` z%F4=L1D}4$;*&2WsNVkew_kMYt+)QoV~;(y`*|%?aO5E%789_jaZ=)X5q}N%1FJ~y zZfG7xnteh!LS{zTP{{ugkMPB;jCsbJY>_B|X>|l55uJ;;1K_Sbf%NW1n-3%T60sUV zdqf;P|1rcEdGygocYo$HpZS}&z3pumz3hN>%PqGQPd@qNpWJ)zz1a(Xkiify2muPC zUR|R+xX$Fi2$N4;Px!)KXe|=!36h`0N|>lSXSqq=6t`1NX)qpy2~tGj@*4HM>r6h` zV*Iz)QQozmn4JI{fiA)1h2QtS`|isY7Z?BI7ryX?mt>cE$+p5%f}R(*FimX(ziPM$pZ>X#L;vMjs)tXfDsP93I3m?*eNt!EP3Qc&Jh zDX4MLBPzJ{lZ1n}V;zq+9HD8DC(<@ZjgTImNg#$MZg3128w80+RDz2{nU+=s#hWFM zQ3Xd#&OjXq0is6g=+dqNB85LY2;#C9M1$RWb+ zw?H0|u0y&4SqVA@sVQZQIH)xc8*A|4`v`k}7HJ1!SD+=Rk3>Jl7^dt6sZusVa|8RE z2Vs6Y6ajjMbX*FHNFNhLoFGysF0rwSF7KfF**nligqA{=>3D`jjcJWEfCi*JCfxk{ z6o2w1V)%Z}Ae}gHGt_G{xE(E|?TGUZS|gMJCVd{cKfs0Rt4No;)v-r6N zVJ<^vz&a(!0F^$%D5bn;LA`V>)?J3x9U|M`VmK!r25wu+>W`Xa1O` z7(vcmXT5U{EK`U9kep~ujg%~?bvQVNX&U!pwWh#|*l;HrY^@EUT`LAQYJCTIxaYA7T5^>~j?kihbQ$RtSj!>ZO;`iW1zZ{MH#|()Z(?

a}TcSE%oQI7^k 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 literal 0 HcmV?d00001 diff --git a/mechant.pde b/mechant.pde index f7a371b..23a5484 100644 --- a/mechant.pde +++ b/mechant.pde @@ -1,89 +1,89 @@ -//ça c'est TOUT le code qui dit ce que c'est un enemy -class Alien { - - int x,y,enemypv; - PImage enemy_explo; - boolean show; - float time; - int NUMEROXEPLO = 0; - - Alien(int xt,int yt,int pv, PImage enemyt /*float timet*/){ - x = xt; - y = yt; - enemy_explo = enemyt; - show = true; - enemypv = pv; - /*time = timet;*/ - } - - void apparaitre() { - - //affiche l'anime de explosion : - if ( !show && NUMEROXEPLO<50 ) { - - //// Methode avec calcul du nombre de zeros: - //// 4 - le nb de carateres de l'entier NUMEROXEPLO [4 correspond au nb de zero du nom des fichiers] - //int nbCarateres = String.valueOf(NUMEROXEPLO).length(); - //int nbZeros = 4 - nbCarateres; - //String chainDeZero = new String(new char[nbZeros]).replace("\0", "0"); - //enemy = loadImage("images/explosion/explosion"+chainDeZero+NUMEROXEPLO+".png"); - - // Ou Methode avec un if : - if ( String.valueOf(NUMEROXEPLO).length()==1 ) enemy_explo = loadImage("data/images/explosion/explosion000"+NUMEROXEPLO+".png"); - else enemy_explo = loadImage("data/images/explosion/explosion00"+NUMEROXEPLO+".png"); - - NUMEROXEPLO += 1; - - } - - if (NUMEROXEPLO == 1 && son) { - sonExposion.play(); - nombreEnemiReste -= 1; - - } - - //Affiche le mechant ou explosion s'il n'est pas détruis (l'anime de explosion est pas finie) - if (NUMEROXEPLO < 50) image(enemy_explo, x, y); - - - } - - - void verifiercollisions() { - - // Avec le missile - if ( show && !( xm < x-40 || xm > x+40 ) && ym < y) { - - // on luis enleve un point de vie - enemypv = enemypv - 1; - y = y - 20; - - //suprime le missile - lancermisile = false; - } - - // Avec le ship - // DEBUG : Affiche x et y dans la console - //println(dist(ship.x, ship.y, x, y) + "ship.x : " + ship.x + " < " + (x-75) + " : > " + (x+75) + " ship.y : " + ship.y + " <> " +y); - if ( dist(ship.x, ship.y, x, y) < 130 ) { - // Averti le vaiseau de la collision - ship.collision = true; - - // on luis enleve un point de vie - enemypv = enemypv - 1; - y = y - 20; - } - - //le mechant disparait si il a plus de vie : - if ( enemypv == 0 ) { - show = false; - } - } - - - void affiche_et_mets_a_jour_les_mechants() { - verifiercollisions(); - apparaitre(); - } - -} +//ça c'est TOUT le code qui dit ce que c'est un enemy +class Alien { + + int x,y,enemypv; + PImage enemy_explo; + boolean show; + float time; + int NUMEROXEPLO = 0; + + Alien(int xt,int yt,int pv, String imgEenemyt /*float timet*/){ + x = xt; + y = yt; + enemy_explo = loadImage("data/images/" + imgEenemyt); + show = true; + enemypv = pv; + /*time = timet;*/ + } + + void apparaitre() { + + //affiche l'anime de explosion : + if ( !show && NUMEROXEPLO<50 ) { + + //// Methode avec calcul du nombre de zeros: + //// 4 - le nb de carateres de l'entier NUMEROXEPLO [4 correspond au nb de zero du nom des fichiers] + //int nbCarateres = String.valueOf(NUMEROXEPLO).length(); + //int nbZeros = 4 - nbCarateres; + //String chainDeZero = new String(new char[nbZeros]).replace("\0", "0"); + //enemy = loadImage("images/explosion/explosion"+chainDeZero+NUMEROXEPLO+".png"); + + // Ou Methode avec un if : + if ( String.valueOf(NUMEROXEPLO).length()==1 ) enemy_explo = loadImage("data/images/explosion/explosion000"+NUMEROXEPLO+".png"); + else enemy_explo = loadImage("data/images/explosion/explosion00"+NUMEROXEPLO+".png"); + + NUMEROXEPLO += 1; + + } + + if (NUMEROXEPLO == 1 && son) { + sonExposion.play(); + nombreEnemiReste -= 1; + + } + + //Affiche le mechant ou explosion s'il n'est pas détruis (l'anime de explosion est pas finie) + if (NUMEROXEPLO < 50) image(enemy_explo, x, y); + + + } + + + void verifiercollisions() { + + // Avec le missile + if ( show && !( xm < x-40 || xm > x+40 ) && ym < y) { + + // on luis enleve un point de vie + enemypv = enemypv - 1; + y = y - 20; + + //suprime le missile + lancermisile = false; + } + + // Avec le ship + // DEBUG : Affiche x et y dans la console + //println(dist(ship.x, ship.y, x, y) + "ship.x : " + ship.x + " < " + (x-75) + " : > " + (x+75) + " ship.y : " + ship.y + " <> " +y); + if ( dist(ship.x, ship.y, x, y) < 130 ) { + // Averti le vaiseau de la collision + ship.collision = true; + + // on luis enleve un point de vie + enemypv = enemypv - 1; + y = y - 20; + } + + //le mechant disparait si il a plus de vie : + if ( enemypv == 0 ) { + show = false; + } + } + + + void affiche_et_mets_a_jour_les_mechants() { + verifiercollisions(); + apparaitre(); + } + +} diff --git a/mechant_tres_mechant.pde b/mechant_tres_mechant.pde index 6543ea3..908f028 100644 --- a/mechant_tres_mechant.pde +++ b/mechant_tres_mechant.pde @@ -1,19 +1,96 @@ -//ici il faut faire un enemie qui te fonce dessus - -class Alien2 { - -int pv = 2; -double random; -public double random(){ -random = Math.random()*(10-3); -return random; -} - -double cooldown_fonce = random(); - -//le if doit etre dans une fonction ou une class ou void ... - -void affichebob() { - image(mechant2, largeur/2, hauteur/2); - } -} +//ici il faut faire un enemie qui te fonce dessus + + + +class Alien2 { + + int x,y; + int enemypv = 2; + boolean show; + double random; + int NUMEROXEPLO = 0; + PImage enemy_explo; + + Alien2(int xt,int yt,int pv, String imgEenemyt){ + x = xt; + y = yt; + enemy_explo = loadImage("data/images/" + imgEenemyt); + show = true; + enemypv = pv; + } + + void apparaitre() { + + //affiche l'anime de explosion : + if ( !show && NUMEROXEPLO<50 ) { + // Ou Methode avec un if : + if ( String.valueOf(NUMEROXEPLO).length()==1 ) enemy_explo = loadImage("data/images/explosion/explosion000"+NUMEROXEPLO+".png"); + else enemy_explo = loadImage("data/images/explosion/explosion00"+NUMEROXEPLO+".png"); + NUMEROXEPLO += 1; + } + + if (NUMEROXEPLO == 1 && son) { + sonExposion.play(); + nombreEnemiReste -= 1; + } + + //Affiche le mechant ou explosion s'il n'est pas détruis (l'anime de explosion est pas finie) + if (NUMEROXEPLO < 50) image(enemy_explo, x, y); + + } + + void verifiercollisions() { + + // Avec le missile + if ( show && !( xm < x-40 || xm > x+40 ) && ym < y) { + + // on luis enleve un point de vie + enemypv = enemypv - 1; + y = y - 20; + + //suprime le missile + lancermisile = false; + } + + // Avec le ship + // DEBUG : Affiche x et y dans la console + //println(dist(ship.x, ship.y, x, y) + "ship.x : " + ship.x + " < " + (x-75) + " : > " + (x+75) + " ship.y : " + ship.y + " <> " +y); + if ( dist(ship.x, ship.y, x, y) < 130 ) { + // Averti le vaiseau de la collision + ship.collision = true; + + // on luis enleve un point de vie + enemypv = enemypv - 1; + y = y - 20; + } + + //le mechant disparait si il a plus de vie : + if ( enemypv == 0 ) { + show = false; + } + } + + public double random(){ + random = Math.random()*(10-3); + return random; + } + + double cooldown_fonce = random(); + +/* + //le if doit etre dans une fonction ou une class ou void ... + void setup() { + mechant2 = loadImage("data/images/mechant_tres_mechant150x150.png"); + } + + void draw() { + image(mechant2, 0, 0); + } +*/ + + void affiche_et_mets_a_jour_les_mechants() { + verifiercollisions(); + apparaitre(); + } + +} diff --git a/space_inviders.pde b/space_inviders.pde index 9a5eae6..fcdab63 100644 --- a/space_inviders.pde +++ b/space_inviders.pde @@ -16,7 +16,7 @@ SoundFile sonLaser_boss; boolean test = false; int largeur = 1600; int hauteur = 900; -PImage space, img_ship, misile, mechant, imgGameover, imgWin, imgboss1, laserboss1, mechant2; +PImage space, img_ship, misile, imgGameover, imgWin, imgboss1, laserboss1; String misileMechant1 = "data/images/misile - mechant.png"; int x = largeur/2; int y = hauteur-100; @@ -62,17 +62,16 @@ void setup() { imageMode(CENTER); - //là, ça charge les image dans leur varible - space = loadImage("data/images/space.jpg"); - img_ship = loadImage("data/images/redfighter_200x200.png"); - misile = loadImage("data/images/misile.png"); + //là, ça charge les images dans leurres varibles + space = loadImage("data/images/space.jpg"); + img_ship = loadImage("data/images/redfighter_200x200.png"); + misile = loadImage("data/images/misile.png"); //2 pour le skin 2 - mechant = loadImage("data/images/mechant_rouge_150x150.png"); imgGameover = loadImage("data/images/gameover.png"); - imgWin = loadImage("data/images/Win_game.png"); - imgboss1 = loadImage("data/images/vaiseau_enemi.png"); - laserboss1 = loadImage("data/images/laser_boss1.png"); - mechant2 = loadImage("data/images/mechant_tres_mechant.png"); + imgWin = loadImage("data/images/Win_game.png"); + imgboss1 = loadImage("data/images/vaiseau_enemi.png"); + laserboss1 = loadImage("data/images/laser_boss1.png"); + //on crée le ship ship = new Ship(x, y, 3, img_ship); @@ -87,8 +86,11 @@ void setup() { j = i; k =1; } - a[i] = new Alien (100+(j*150), k*100, 3, mechant); + a[i] = new Alien (100+(j*150), k*100, 3, "mechant_rouge_150x150.png"); + //a[i] = new Alien (100+(j*150), k*100, 3, "mechant_tres_mechant150x150.png"); } + + c[0] = new Alien2(800,350,10,"mechant_tres_mechant150x150.png"); //on crée des misiles for (int i = 0; i Date: Sat, 13 Mar 2021 15:32:05 +0100 Subject: [PATCH 6/8] Modification du samedi 13/03/21 --- mechant_tres_mechant.pde | 20 +- space_inviders.pde | 774 +++++++++++++++++++-------------------- 2 files changed, 403 insertions(+), 391 deletions(-) diff --git a/mechant_tres_mechant.pde b/mechant_tres_mechant.pde index 908f028..140cd8a 100644 --- a/mechant_tres_mechant.pde +++ b/mechant_tres_mechant.pde @@ -1,9 +1,8 @@ -//ici il faut faire un enemie qui te fonce dessus - - +//ici il faut faire un enemie qui bouge class Alien2 { + int blob, blob2; int x,y; int enemypv = 2; boolean show; @@ -19,6 +18,19 @@ class Alien2 { enemypv = pv; } + + void alea_bouge(){ + + random = Math.random()*(0-20)-10; + frameRate(500); + if (frameCount % 500 == 0) { + x = blob; + y = blob; + println ("blob = "+blob); + } + } + + void apparaitre() { //affiche l'anime de explosion : @@ -71,7 +83,7 @@ class Alien2 { } public double random(){ - random = Math.random()*(10-3); + random = Math.random()*(10-4); return random; } diff --git a/space_inviders.pde b/space_inviders.pde index fcdab63..8673049 100644 --- a/space_inviders.pde +++ b/space_inviders.pde @@ -1,387 +1,387 @@ -// ajouter le son ? -boolean son = true; -boolean boss_start = false; - - - // ----------------------- \\ - - -// Importation librairies pour la gestion du sons -import processing.sound.*; -SoundFile sonLancemissile; -SoundFile sonExposion; -SoundFile sonCollision; -SoundFile sonLaser_boss; - -boolean test = false; -int largeur = 1600; -int hauteur = 900; -PImage space, img_ship, misile, imgGameover, imgWin, imgboss1, laserboss1; -String misileMechant1 = "data/images/misile - mechant.png"; -int x = largeur/2; -int y = hauteur-100; -int xm = x; -int ym = y; -int timerGameOver = 1500; // milliseconds d'attente avant affichage "Gameover" -int timer = 0; -int win; -float time; -boolean lancermisile = false; -String touchePresse = null; -//int nombreEnemiRestek = nombreEnemik; - -Ship ship; - -boolean[] level = new boolean[3]; - -int nombreEnemi = 20; -int nombreEnemik = 20; -int nombreEnemiReste = nombreEnemi; -Alien [] a = new Alien[nombreEnemi]; -Misile [] b = new Misile[nombreEnemi]; -Alien2 [] c = new Alien2[1]; - -//Etat de deplacement: 0 = aucun deplacement en cours -int moveXp = 0; // 1 si deplacement vers le bas -int moveXn = 0; // 1 si deplacement vers le haut -int moveYp = 0; // 1 si deplacement vers la droite -int moveYn = 0; // 1 si deplacement vers la gauche -int moveBoost = 1; - -boolean pause = false; - - - -void setup() { - - stroke(#000000); - strokeWeight(1); - textAlign(LEFT, TOP); - textSize(12); - size(1600, 900); - imageMode(CENTER); - - - //là, ça charge les images dans leurres varibles - space = loadImage("data/images/space.jpg"); - img_ship = loadImage("data/images/redfighter_200x200.png"); - misile = loadImage("data/images/misile.png"); - //2 pour le skin 2 - imgGameover = loadImage("data/images/gameover.png"); - imgWin = loadImage("data/images/Win_game.png"); - imgboss1 = loadImage("data/images/vaiseau_enemi.png"); - laserboss1 = loadImage("data/images/laser_boss1.png"); - - //on crée le ship - ship = new Ship(x, y, 3, img_ship); - - //on crée des ennemis - for (int i = 0; i 9) { - j = i-10; - k =2; - } else { - j = i; - k =1; - } - a[i] = new Alien (100+(j*150), k*100, 3, "mechant_rouge_150x150.png"); - //a[i] = new Alien (100+(j*150), k*100, 3, "mechant_tres_mechant150x150.png"); - } - - c[0] = new Alien2(800,350,10,"mechant_tres_mechant150x150.png"); - - //on crée des misiles - for (int i = 0; i 9) { - j = i-10; - k =2; - } else { - j = i; - k =1; - } - b[i] = new Misile (100+(j*150), k*100, misileMechant1, time); - } - - // Sons - if (son) { - sonLancemissile = new SoundFile(this, "data/sons/lancemissile.mp3"); - sonExposion = new SoundFile(this, "data/sons/SFB-explosion2.mp3"); - sonCollision = new SoundFile(this, "data/sons/collision avec le vaisseau.mp3"); - sonLaser_boss = new SoundFile(this, "data/sons/Laser_boss.mp3"); - } - - //Vitesse : frame par seconde - frameRate(60); - } - - void draw() { - - // if ( nombreEnemiReste == 0 && ship.pv > 0) { - // - // - // } - //debug: - //println(nombreEnemiReste); - - - miseAJourDuDeplacement(); - - //Affiche l'image de fond (l'espace) - background(space); - - // Si un missile du ship est en cours (actif) - if (lancermisile) { - //on le fait avencer - ym = ym - 20; - // Si le missile sort en haut de l'écran - if (ym < 0) { - ym = y; - xm = x; - lancermisile = false; - } - // Affiche l'image du missile - image(misile, xm, ym); - } else { - //Sinon (missile non actif) - //on le affiche en dessous du vaiseau si encore vivant - if (ship.show) { - ym = y; - xm = x; - } - } - - // Fait une boucle sur tout le tableau d'ennemies - for ( int i = 0; i 0) { - // image(imgWin, largeur/2, hauteur/2); - if (boss_start == false) { - boss_start = true; - boss_time = millis()/1000; - } - boss(); - } - - // Mise à jour du texte de l'écran : - text("frame: " + frameCount, 10, 20); - text("Time: " + millis() / 1000, 10, 35); - text("PV: " + ship.pv, width - 60, 20); - - if (ship.pv == - 0) { - // Installation du timer - if (timer == 0) timer = millis() + timerGameOver; - - // Vérification du temps par rapport au timer - //println(millis() + " / timer : " + timer); - if ( millis() > timer ) { - image(imgGameover, largeur/2, hauteur/2); - println("GAME OVER"); - noLoop(); - - } - } - - //Affiche le "WIN" Du niveau 1 - if ( nombreEnemiReste == 0 && boss_pv == 0) { - //image(imgWin, largeur/2, hauteur/2); - } - - - - - if ( nombreEnemiReste == 0 && boss_pv == 0) { - //on load la deuxièmme vague de vaisseau - //on crée des ennemis - // Fait une boucle sur tout le tableau d'ennemies - //for ( int i = 0; i 9) { - // j = i-10; - // k =2; - // } else { - // j = i; - // k =1; - // } - // a[i] = new Alien (100+(j*150), k*100, 3, mechant); - //} - - ////on crée des misiles - //for (int i = 0; i 9) { - // j = i-10; - // k =2; - // } else { - // j = i; - // k =1; - // } - // b[i] = new Misile (100+(j*150), k*100, misileMechant1, time); - //} - } - - // // Fait une boucle sur tout le tableau d'ennemies - //for ( int i = 0; i height - 100 ) y = height - 100; - } - - if (moveXp - moveXn == -1) { - x = x- deplacement; - if (x < 100) x = 100; - } - - if (moveXp - moveXn == 1) { - x = x+ deplacement; - if (x > width - 100 ) x = width - 100; - } - } - - //Truc a faire à la fin... - void stop() { - } +// ajouter le son ? +boolean son = true; +boolean boss_start = false; + + + // ----------------------- \\ + + +// Importation librairies pour la gestion du sons +import processing.sound.*; +SoundFile sonLancemissile; +SoundFile sonExposion; +SoundFile sonCollision; +SoundFile sonLaser_boss; + +boolean test = false; +int largeur = 1600; +int hauteur = 900; +PImage space, img_ship, misile, imgGameover, imgWin, imgboss1, laserboss1; +String misileMechant1 = "data/images/misile - mechant.png"; +int x = largeur/2; +int y = hauteur-100; +int xm = x; +int ym = y; +int timerGameOver = 1500; // milliseconds d'attente avant affichage "Gameover" +int timer = 0; +int win; +float time; +boolean lancermisile = false; +String touchePresse = null; +//int nombreEnemiRestek = nombreEnemik; + +Ship ship; + +boolean[] level = new boolean[3]; + +int nombreEnemi = 20; +int nombreEnemik = 20; +int nombreEnemiReste = nombreEnemi; +Alien [] a = new Alien[nombreEnemi]; +Misile [] b = new Misile[nombreEnemi]; +Alien2 [] c = new Alien2[1]; + +//Etat de deplacement: 0 = aucun deplacement en cours +int moveXp = 0; // 1 si deplacement vers le bas +int moveXn = 0; // 1 si deplacement vers le haut +int moveYp = 0; // 1 si deplacement vers la droite +int moveYn = 0; // 1 si deplacement vers la gauche +int moveBoost = 1; + +boolean pause = false; + + + +void setup() { + + stroke(#000000); + strokeWeight(1); + textAlign(LEFT, TOP); + textSize(12); + size(1600, 900); + imageMode(CENTER); + + + //là, ça charge les images dans leurres varibles + space = loadImage("data/images/space.jpg"); + img_ship = loadImage("data/images/redfighter_200x200.png"); + misile = loadImage("data/images/misile.png"); + //2 pour le skin 2 + imgGameover = loadImage("data/images/gameover.png"); + imgWin = loadImage("data/images/Win_game.png"); + imgboss1 = loadImage("data/images/vaiseau_enemi.png"); + laserboss1 = loadImage("data/images/laser_boss1.png"); + + //on crée le ship + ship = new Ship(x, y, 3, img_ship); + + //on crée des ennemis + for (int i = 0; i 9) { + j = i-10; + k =2; + } else { + j = i; + k =1; + } + a[i] = new Alien (100+(j*150), k*100, 3, "mechant_rouge_150x150.png"); + //a[i] = new Alien (100+(j*150), k*100, 3, "mechant_tres_mechant150x150.png"); + } + + c[0] = new Alien2(800,350,10,"mechant_tres_mechant150x150.png"); + + //on crée des misiles + for (int i = 0; i 9) { + j = i-10; + k =2; + } else { + j = i; + k =1; + } + b[i] = new Misile (100+(j*150), k*100, misileMechant1, time); + } + + // Sons + if (son) { + sonLancemissile = new SoundFile(this, "data/sons/lancemissile.mp3"); + sonExposion = new SoundFile(this, "data/sons/SFB-explosion2.mp3"); + sonCollision = new SoundFile(this, "data/sons/collision avec le vaisseau.mp3"); + sonLaser_boss = new SoundFile(this, "data/sons/Laser_boss.mp3"); + } + + //Vitesse : frame par seconde + frameRate(60); + } + + void draw() { + + // if ( nombreEnemiReste == 0 && ship.pv > 0) { + // + // + // } + //debug: + //println(nombreEnemiReste); + + + miseAJourDuDeplacement(); + + //Affiche l'image de fond (l'espace) + background(space); + + // Si un missile du ship est en cours (actif) + if (lancermisile) { + //on le fait avencer + ym = ym - 20; + // Si le missile sort en haut de l'écran + if (ym < 0) { + ym = y; + xm = x; + lancermisile = false; + } + // Affiche l'image du missile + image(misile, xm, ym); + } else { + //Sinon (missile non actif) + //on le affiche en dessous du vaiseau si encore vivant + if (ship.show) { + ym = y; + xm = x; + } + } + + // Fait une boucle sur tout le tableau d'ennemies + for ( int i = 0; i 0) { + // image(imgWin, largeur/2, hauteur/2); + if (boss_start == false) { + boss_start = true; + boss_time = millis()/1000; + } + boss(); + } + + // Mise à jour du texte de l'écran : + text("frame: " + frameCount, 10, 20); + text("Time: " + millis() / 1000, 10, 35); + text("PV: " + ship.pv, width - 60, 20); + + if (ship.pv == - 0) { + // Installation du timer + if (timer == 0) timer = millis() + timerGameOver; + + // Vérification du temps par rapport au timer + //println(millis() + " / timer : " + timer); + if ( millis() > timer ) { + image(imgGameover, largeur/2, hauteur/2); + println("GAME OVER"); + noLoop(); + + } + } + + //Affiche le "WIN" Du niveau 1 + if ( nombreEnemiReste == 0 && boss_pv == 0) { + //image(imgWin, largeur/2, hauteur/2); + } + + + + + if ( nombreEnemiReste == 0 && boss_pv == 0) { + //on load la deuxièmme vague de vaisseau + //on crée des ennemis + // Fait une boucle sur tout le tableau d'ennemies + //for ( int i = 0; i 9) { + // j = i-10; + // k =2; + // } else { + // j = i; + // k =1; + // } + // a[i] = new Alien (100+(j*150), k*100, 3, mechant); + //} + + ////on crée des misiles + //for (int i = 0; i 9) { + // j = i-10; + // k =2; + // } else { + // j = i; + // k =1; + // } + // b[i] = new Misile (100+(j*150), k*100, misileMechant1, time); + //} + } + + // // Fait une boucle sur tout le tableau d'ennemies + //for ( int i = 0; i height - 100 ) y = height - 100; + } + + if (moveXp - moveXn == -1) { + x = x - deplacement; + if (x < 100) x = 100; + } + + if (moveXp - moveXn == 1) { + x = x+ deplacement; + if (x > width - 100 ) x = width - 100; + } + } + + //Truc a faire à la fin... + void stop() { + } From 457ae004c4bba8c78026912cd437fdceab40191c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A8ve=20Oriol?= Date: Sat, 20 Mar 2021 13:15:51 +0100 Subject: [PATCH 7/8] Modification du samedi 20/03/21 (Ani d'Arthaud) --- Misile.pde | 2 +- mechant_tres_mechant.pde | 35 +- space_inviders.pde | 778 ++++++++++++++++++++------------------- 3 files changed, 413 insertions(+), 402 deletions(-) diff --git a/Misile.pde b/Misile.pde index db630f2..716978a 100644 --- a/Misile.pde +++ b/Misile.pde @@ -44,7 +44,7 @@ class Misile { } void tomber() { - y += 14; //ont peut changer cette variable(le nombre de la variable)pour changer la vitesse des missiles enemis. + y += 4; //ont peut changer cette variable(le nombre de la variable)pour changer la vitesse des missiles enemis. } void affiche_et_mets_a_jour_le_missile() { diff --git a/mechant_tres_mechant.pde b/mechant_tres_mechant.pde index 140cd8a..fe82fbe 100644 --- a/mechant_tres_mechant.pde +++ b/mechant_tres_mechant.pde @@ -4,9 +4,9 @@ class Alien2 { int blob, blob2; int x,y; - int enemypv = 2; + int enemypv; boolean show; - double random; + int randomy,randomx; int NUMEROXEPLO = 0; PImage enemy_explo; @@ -21,15 +21,17 @@ class Alien2 { void alea_bouge(){ - random = Math.random()*(0-20)-10; - frameRate(500); - if (frameCount % 500 == 0) { - x = blob; - y = blob; - println ("blob = "+blob); + randomy = (int) random(0,900); + randomx = (int) random(0,1600); + frameRate(600); + if (frameCount % 600 == 0) { + x = randomx; + y = randomy; + println ("random = "+randomy); } } + void apparaitre() { @@ -58,7 +60,7 @@ class Alien2 { // on luis enleve un point de vie enemypv = enemypv - 1; - y = y - 20; + y = y - 50; //suprime le missile lancermisile = false; @@ -76,18 +78,22 @@ class Alien2 { y = y - 20; } + if ( nombreEnemiReste == 0 && boss_pv == 0) { + + } + //le mechant disparait si il a plus de vie : if ( enemypv == 0 ) { show = false; } } - public double random(){ - random = Math.random()*(10-4); - return random; - } + //public int random(){ + // random = (int) Math.random()*(10-4); + // return random; + //} - double cooldown_fonce = random(); + int cooldown_fonce = (int)random(10); /* //le if doit etre dans une fonction ou une class ou void ... @@ -103,6 +109,7 @@ class Alien2 { void affiche_et_mets_a_jour_les_mechants() { verifiercollisions(); apparaitre(); + alea_bouge(); } } diff --git a/space_inviders.pde b/space_inviders.pde index 8673049..bca6ea9 100644 --- a/space_inviders.pde +++ b/space_inviders.pde @@ -1,387 +1,391 @@ -// ajouter le son ? -boolean son = true; -boolean boss_start = false; - - - // ----------------------- \\ - - -// Importation librairies pour la gestion du sons -import processing.sound.*; -SoundFile sonLancemissile; -SoundFile sonExposion; -SoundFile sonCollision; -SoundFile sonLaser_boss; - -boolean test = false; -int largeur = 1600; -int hauteur = 900; -PImage space, img_ship, misile, imgGameover, imgWin, imgboss1, laserboss1; -String misileMechant1 = "data/images/misile - mechant.png"; -int x = largeur/2; -int y = hauteur-100; -int xm = x; -int ym = y; -int timerGameOver = 1500; // milliseconds d'attente avant affichage "Gameover" -int timer = 0; -int win; -float time; -boolean lancermisile = false; -String touchePresse = null; -//int nombreEnemiRestek = nombreEnemik; - -Ship ship; - -boolean[] level = new boolean[3]; - -int nombreEnemi = 20; -int nombreEnemik = 20; -int nombreEnemiReste = nombreEnemi; -Alien [] a = new Alien[nombreEnemi]; -Misile [] b = new Misile[nombreEnemi]; -Alien2 [] c = new Alien2[1]; - -//Etat de deplacement: 0 = aucun deplacement en cours -int moveXp = 0; // 1 si deplacement vers le bas -int moveXn = 0; // 1 si deplacement vers le haut -int moveYp = 0; // 1 si deplacement vers la droite -int moveYn = 0; // 1 si deplacement vers la gauche -int moveBoost = 1; - -boolean pause = false; - - - -void setup() { - - stroke(#000000); - strokeWeight(1); - textAlign(LEFT, TOP); - textSize(12); - size(1600, 900); - imageMode(CENTER); - - - //là, ça charge les images dans leurres varibles - space = loadImage("data/images/space.jpg"); - img_ship = loadImage("data/images/redfighter_200x200.png"); - misile = loadImage("data/images/misile.png"); - //2 pour le skin 2 - imgGameover = loadImage("data/images/gameover.png"); - imgWin = loadImage("data/images/Win_game.png"); - imgboss1 = loadImage("data/images/vaiseau_enemi.png"); - laserboss1 = loadImage("data/images/laser_boss1.png"); - - //on crée le ship - ship = new Ship(x, y, 3, img_ship); - - //on crée des ennemis - for (int i = 0; i 9) { - j = i-10; - k =2; - } else { - j = i; - k =1; - } - a[i] = new Alien (100+(j*150), k*100, 3, "mechant_rouge_150x150.png"); - //a[i] = new Alien (100+(j*150), k*100, 3, "mechant_tres_mechant150x150.png"); - } - - c[0] = new Alien2(800,350,10,"mechant_tres_mechant150x150.png"); - - //on crée des misiles - for (int i = 0; i 9) { - j = i-10; - k =2; - } else { - j = i; - k =1; - } - b[i] = new Misile (100+(j*150), k*100, misileMechant1, time); - } - - // Sons - if (son) { - sonLancemissile = new SoundFile(this, "data/sons/lancemissile.mp3"); - sonExposion = new SoundFile(this, "data/sons/SFB-explosion2.mp3"); - sonCollision = new SoundFile(this, "data/sons/collision avec le vaisseau.mp3"); - sonLaser_boss = new SoundFile(this, "data/sons/Laser_boss.mp3"); - } - - //Vitesse : frame par seconde - frameRate(60); - } - - void draw() { - - // if ( nombreEnemiReste == 0 && ship.pv > 0) { - // - // - // } - //debug: - //println(nombreEnemiReste); - - - miseAJourDuDeplacement(); - - //Affiche l'image de fond (l'espace) - background(space); - - // Si un missile du ship est en cours (actif) - if (lancermisile) { - //on le fait avencer - ym = ym - 20; - // Si le missile sort en haut de l'écran - if (ym < 0) { - ym = y; - xm = x; - lancermisile = false; - } - // Affiche l'image du missile - image(misile, xm, ym); - } else { - //Sinon (missile non actif) - //on le affiche en dessous du vaiseau si encore vivant - if (ship.show) { - ym = y; - xm = x; - } - } - - // Fait une boucle sur tout le tableau d'ennemies - for ( int i = 0; i 0) { - // image(imgWin, largeur/2, hauteur/2); - if (boss_start == false) { - boss_start = true; - boss_time = millis()/1000; - } - boss(); - } - - // Mise à jour du texte de l'écran : - text("frame: " + frameCount, 10, 20); - text("Time: " + millis() / 1000, 10, 35); - text("PV: " + ship.pv, width - 60, 20); - - if (ship.pv == - 0) { - // Installation du timer - if (timer == 0) timer = millis() + timerGameOver; - - // Vérification du temps par rapport au timer - //println(millis() + " / timer : " + timer); - if ( millis() > timer ) { - image(imgGameover, largeur/2, hauteur/2); - println("GAME OVER"); - noLoop(); - - } - } - - //Affiche le "WIN" Du niveau 1 - if ( nombreEnemiReste == 0 && boss_pv == 0) { - //image(imgWin, largeur/2, hauteur/2); - } - - - - - if ( nombreEnemiReste == 0 && boss_pv == 0) { - //on load la deuxièmme vague de vaisseau - //on crée des ennemis - // Fait une boucle sur tout le tableau d'ennemies - //for ( int i = 0; i 9) { - // j = i-10; - // k =2; - // } else { - // j = i; - // k =1; - // } - // a[i] = new Alien (100+(j*150), k*100, 3, mechant); - //} - - ////on crée des misiles - //for (int i = 0; i 9) { - // j = i-10; - // k =2; - // } else { - // j = i; - // k =1; - // } - // b[i] = new Misile (100+(j*150), k*100, misileMechant1, time); - //} - } - - // // Fait une boucle sur tout le tableau d'ennemies - //for ( int i = 0; i height - 100 ) y = height - 100; - } - - if (moveXp - moveXn == -1) { - x = x - deplacement; - if (x < 100) x = 100; - } - - if (moveXp - moveXn == 1) { - x = x+ deplacement; - if (x > width - 100 ) x = width - 100; - } - } - - //Truc a faire à la fin... - void stop() { - } +// ajouter le son ? +boolean son = true; +boolean boss_start = false; + + + // ----------------------- \\ + + +// Importation librairies pour la gestion du sons +import processing.sound.*; +SoundFile sonLancemissile; +SoundFile sonExposion; +SoundFile sonCollision; +SoundFile sonLaser_boss; + +boolean test = false; +int largeur = 1600; +int hauteur = 900; +PImage space, img_ship, misile, imgGameover, imgWin, imgboss1, laserboss1; +String misileMechant1 = "data/images/misile - mechant.png"; +int x = largeur/2; +int y = hauteur-100; +int xm = x; +int ym = y; +int timerGameOver = 1500; // milliseconds d'attente avant affichage "Gameover" +int timer = 0; +int win; +float time; +boolean lancermisile = false; +String touchePresse = null; +//int nombreEnemiRestek = nombreEnemik; + +Ship ship; + +boolean[] level = new boolean[3]; + +int nombreEnemi = 20; +int nombreEnemik = 20; +int nombreEnemiReste = nombreEnemi; +Alien [] a = new Alien[nombreEnemi]; +Misile [] b = new Misile[nombreEnemi]; +Alien2 [] c = new Alien2[3]; + +//Etat de deplacement: 0 = aucun deplacement en cours +int moveXp = 0; // 1 si deplacement vers le bas +int moveXn = 0; // 1 si deplacement vers le haut +int moveYp = 0; // 1 si deplacement vers la droite +int moveYn = 0; // 1 si deplacement vers la gauche +int moveBoost = 1; + +boolean pause = false; + + + +void setup() { + + stroke(#000000); + strokeWeight(1); + textAlign(LEFT, TOP); + textSize(12); + size(1600, 900); + imageMode(CENTER); + + + //là, ça charge les images dans leurres varibles + space = loadImage("data/images/space.jpg"); + img_ship = loadImage("data/images/redfighter_200x200.png"); + misile = loadImage("data/images/misile.png"); + //2 pour le skin 2 + imgGameover = loadImage("data/images/gameover.png"); + imgWin = loadImage("data/images/Win_game.png"); + imgboss1 = loadImage("data/images/vaiseau_enemi.png"); + laserboss1 = loadImage("data/images/laser_boss1.png"); + + //on crée le ship + ship = new Ship(x, y, 3, img_ship); + + //on crée des ennemis + for (int i = 0; i 9) { + j = i-10; + k =2; + } else { + j = i; + k =1; + } + a[i] = new Alien (100+(j*150), k*100, 3, "mechant_rouge_150x150.png"); + //a[i] = new Alien (100+(j*150), k*100, 3, "mechant_tres_mechant150x150.png"); + } + + c[0] = new Alien2(800,350,20,"mechant_tres_mechant150x150.png"); + c[1] = new Alien2(1200,350,20,"mechant_tres_mechant150x150.png"); + c[2] = new Alien2(400,350,20,"mechant_tres_mechant150x150.png"); + + //on crée des misiles + for (int i = 0; i 9) { + j = i-10; + k =2; + } else { + j = i; + k =1; + } + b[i] = new Misile (100+(j*150), k*100, misileMechant1, time); + } + + // Sons + if (son) { + sonLancemissile = new SoundFile(this, "data/sons/lancemissile.mp3"); + sonExposion = new SoundFile(this, "data/sons/SFB-explosion2.mp3"); + sonCollision = new SoundFile(this, "data/sons/collision avec le vaisseau.mp3"); + sonLaser_boss = new SoundFile(this, "data/sons/Laser_boss.mp3"); + } + + //Vitesse : frame par seconde + frameRate(60); + } + + void draw() { + + // if ( nombreEnemiReste == 0 && ship.pv > 0) { + // + // + // } + //debug: + //println(nombreEnemiReste); + + + miseAJourDuDeplacement(); + + //Affiche l'image de fond (l'espace) + background(space); + + // Si un missile du ship est en cours (actif) + if (lancermisile) { + //on le fait avencer + ym = ym - 20; + // Si le missile sort en haut de l'écran + if (ym < 0) { + ym = y; + xm = x; + lancermisile = false; + } + // Affiche l'image du missile + image(misile, xm, ym); + } else { + //Sinon (missile non actif) + //on le affiche en dessous du vaiseau si encore vivant + if (ship.show) { + ym = y; + xm = x; + } + } + + // Fait une boucle sur tout le tableau d'ennemies + for ( int i = 0; i 0) { + // image(imgWin, largeur/2, hauteur/2); + if (boss_start == false) { + boss_start = true; + boss_time = millis()/1000; + } + boss(); + } + + // Mise à jour du texte de l'écran : + text("frame: " + frameCount, 10, 20); + text("Time: " + millis() / 1000, 10, 35); + text("PV: " + ship.pv, width - 60, 20); + + if (ship.pv == - 0) { + // Installation du timer + if (timer == 0) timer = millis() + timerGameOver; + + // Vérification du temps par rapport au timer + //println(millis() + " / timer : " + timer); + if ( millis() > timer ) { + image(imgGameover, largeur/2, hauteur/2); + println("GAME OVER"); + noLoop(); + + } + } + + //Affiche le "WIN" Du niveau 1 + if ( nombreEnemiReste == 0 && boss_pv == 0) { + //image(imgWin, largeur/2, hauteur/2); + } + + + + + if ( nombreEnemiReste == 0 && boss_pv == 0) { + //on load la deuxièmme vague de vaisseau + //on crée des ennemis + // Fait une boucle sur tout le tableau d'ennemies + //for ( int i = 0; i 9) { + // j = i-10; + // k =2; + // } else { + // j = i; + // k =1; + // } + // a[i] = new Alien (100+(j*150), k*100, 3, mechant); + //} + + ////on crée des misiles + //for (int i = 0; i 9) { + // j = i-10; + // k =2; + // } else { + // j = i; + // k =1; + // } + // b[i] = new Misile (100+(j*150), k*100, misileMechant1, time); + //} + } + + // // Fait une boucle sur tout le tableau d'ennemies + //for ( int i = 0; i height - 100 ) y = height - 100; + } + + if (moveXp - moveXn == -1) { + x = x - deplacement; + if (x < 100) x = 100; + } + + if (moveXp - moveXn == 1) { + x = x+ deplacement; + if (x > width - 100 ) x = width - 100; + } + } + + //Truc a faire à la fin... + void stop() { + } From 6f331a90b6f1cce10d035cf7d540e015a3ef8e4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A8ve=20Oriol?= Date: Sun, 4 Apr 2021 12:45:37 +0200 Subject: [PATCH 8/8] =?UTF-8?q?Modification=20du=20samedi=2003/04/2021=20:?= =?UTF-8?q?=20Cr=C3=A9ation=20d'une=20Classe=20pour=20le=20boss?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Boss.pde | 248 +++++++--------------- Bosss.pde | 179 ++++++++++++++++ Misile.pde | 4 +- mechant.pde | 178 ++++++++-------- mechant_tres_mechant.pde => mechant_2.pde | 3 +- space_inviders.pde | 42 ++-- 6 files changed, 368 insertions(+), 286 deletions(-) create mode 100644 Bosss.pde rename mechant_tres_mechant.pde => mechant_2.pde (97%) diff --git a/Boss.pde b/Boss.pde index d74d930..7ed3885 100644 --- a/Boss.pde +++ b/Boss.pde @@ -1,176 +1,72 @@ -boolean boss_d_ou_g = false; -int boss_bouge = 800; -int boss_y = 171; -int boss_vitesse = 8; -boolean collision_laser = false; -float boss_cooldown = 5; -float boss_time; -int boss_stop = 4; -int pv_baseboss = 5; -int boss_pv = pv_baseboss; -int Xa, Xb, Xc, Ya, Yb, Yc, Xd, Yd, Xe, Ye; -float time_game = millis()/1000; -float ABC, DBC, ACB, DCB, EBC, ECB; -int H_jpv = 25, W_jpv = 650, x_jpv, y_jpv = 20; -int largeur_bar_vie_T = W_jpv; -int largeur_bar_vie_cible = W_jpv; -boolean invincible = false, son_Laser = false, clignote = false; -int invisi_time = 1000; // temps de d'invincibilité en millisecondes (2 secondes) -int deta_time, time_inv_boss; -int deta_cligno_time = 150; // temps de clignotage en millisecondes -int time_cligno_boss; - -void boss() { - - time_game = millis()/1000; - println("second : "+ time_game); - println("boss_time + boss_cooldown : " + boss_time + boss_cooldown); - if (boss_time + boss_cooldown < time_game && !invincible){ - boss_vitesse = 0; - image(laserboss1, boss_bouge, 380 + boss_y); - //joue le son du laser une seul fois - if(!son_Laser){ - son_Laser = true; - sonLaser_boss.play(); - } - //calcul dimension laser: - //coordonnées point haut - Xa = boss_bouge; - Ya = -100 + boss_y; - - Xb = boss_bouge - 566; - Yb = -100 + boss_y + 981; - - Xc = boss_bouge + 566; - Yc = Yb; - - //triangle(Xa, Ya, Xb, Yb, Xc, Yc); - - //coordonnées base du vaisseau: - Xd = x - 100; - Yd = y + 100; - - Xe = x + 100; - Ye = Yd; - - //calcul des angles - ABC = acos( ( ((Xc-Xb)*(Xa-Xb)) + ((Yc-Yb)*(Ya-Yb)) )/( sqrt(sq(Xc-Xb)+sq(Yc-Yb)) * sqrt(sq(Xa-Xb)+sq(Ya-Yb)) ) ); - ACB = ABC; - //println("ABC : "+ ABC); - //DBC = acos( ( ((Xc-Xb)*(Xd-Xb)) + ((Yc-Yb)*(Yd-Yb)) )/( sqrt(sq(Xc-Xb)+sq(Yc-Yb)) * sqrt(sq(Xd-Xb)+sq(Yd-Yb)) ) ); - DCB = acos( ( ((Xb-Xc)*(Xd-Xc)) + ((Yb-Yc)*(Yd-Yc)) )/( sqrt(sq(Xb-Xc)+sq(Yb-Yc)) * sqrt(sq(Xd-Xc)+sq(Yd-Yc)) ) ); - EBC = acos( ( ((Xc-Xb)*(Xe-Xb)) + ((Yc-Yb)*(Ye-Yb)) )/( sqrt(sq(Xc-Xb)+sq(Yc-Yb)) * sqrt(sq(Xe-Xb)+sq(Ye-Yb)) ) ); - //println("DCB : "+ DCB + " / EBC : "+ EBC); - - //line(Xd, Yd, Xe, Ye); - //println("Xb, Xe : " + Xb + " <> " + Xe); - //test collisions avec le laser: - if (EBC > ABC || ACB < DCB) { - collision_laser = false; - } else { - collision_laser = true; - ship.collision = true; - println("collision : " + collision_laser); - } - - - // boucle fin d'attaque - if (boss_time + boss_cooldown + boss_stop < time_game){ - boss_cooldown = random(1, 7); - boss_vitesse = 8; - boss_time = time_game; - son_Laser = false; - } - - //println("boss_time + boss_cooldown + boss_stop : "+ boss_time + boss_cooldown + boss_stop); - } - - if(!clignote){ - image(imgboss1, boss_bouge, boss_y); - } - - if (boss_d_ou_g == true){ //si le boss vas vers la gauche - if (boss_bouge > 0){ //si le boss il n'est pas tout a gauche - boss_bouge -= boss_vitesse; //on le fais aller a gauche - } else { //sinon - boss_d_ou_g = false; //on lui dit d'aller a gauche - } - } - - if (boss_d_ou_g == false && boss_bouge < width){ - boss_bouge += boss_vitesse; - } else { - boss_d_ou_g = true; - } - - - - - //largeur en pixels en fonction des pv courants du boss - largeur_bar_vie_cible = W_jpv * boss_pv / pv_baseboss; - println ("T : " + largeur_bar_vie_T + " C : " + largeur_bar_vie_cible); - - if (time_inv_boss + deta_time <= millis()){ - if (largeur_bar_vie_T > largeur_bar_vie_cible){ - largeur_bar_vie_T -- ; - invincible = true; - } else { - invincible = false; - } - time_inv_boss = millis(); - } - - // clignotement : - if (invincible && time_cligno_boss + deta_cligno_time <= millis()) { - time_cligno_boss = millis(); - clignote = !clignote; - } else if (!invincible) { - clignote = false; - } - - //jauge des pv du boss - x_jpv = width/2-W_jpv/2; - fill(255, 255, 255, 40); - noStroke(); - rect(x_jpv, y_jpv, W_jpv, H_jpv, H_jpv / 2); - fill(#AE0202, 230); - noStroke(); - rect( - x_jpv + (W_jpv - largeur_bar_vie_T)/2, // coordonnées X de la bar de vie - y_jpv, // coordonnées Y de la bar de vie - largeur_bar_vie_T, - H_jpv, // hauteur de la bar de vie - H_jpv / 2 // pour arrondir les angles de la bar de vie du boss - ); - fill(255); - textSize(H_jpv / 1.5); - textAlign(CENTER, CENTER); - text(boss_pv + " / " + pv_baseboss , x_jpv + W_jpv / 2 , y_jpv + H_jpv /2); - textAlign(LEFT, BOTTOM); - textSize(12); - strokeWeight(2); - stroke(#ffffff); - noFill(); - rect(x_jpv, y_jpv, W_jpv, H_jpv, H_jpv / 2); - fill(255, 255, 255); - strokeWeight(1); - stroke(#000000); - - if ( dist(ship.x, ship.y, boss_bouge, boss_y) < 200 ) { - // en gros le vaisseau éclate quand il touche le boss - ship.collision = true; - } else { - //si le missile est en contact avec le boss et qu'il n'est pas invincible le boss perd un point de vie - if ( dist(xm, ym, boss_bouge, boss_y) < 114 && !invincible ){ - boss_pv = boss_pv - 1; - sonCollision.play(); - time_inv_boss = time_cligno_boss = millis(); - //calcul delai en miliseconds pour chaque pixels a supprimer de la bars de vie en fonction du temps d'invincibilité du boss - // temps / pixels a suprimmer de la barre : - deta_time = invisi_time / (W_jpv - (W_jpv * boss_pv / pv_baseboss)); - //println("boss_pv : " + boss_pv + " :: deta_time : " + deta_time); - lancermisile = false; - clignote = false; - } - } -} +class Boss { + int pv; + float boss_time; + int boss_vitesse; + PImage visu_boss; + int boss_y; + int boss_x; //égale à ancien "boss_bouge" + boolean show = true; + int NUMEROXEPLO = 0; + + //var à récup + boolean boss_d_ou_g = false; + boolean collision_laser = false; + float boss_cooldown = 5; + int boss_stop = 4; + int pv_baseboss = 5; + int boss_pv = pv_baseboss; + int Xa, Xb, Xc, Ya, Yb, Yc, Xd, Yd, Xe, Ye; + float time_game = millis()/1000; + float ABC, DBC, ACB, DCB, EBC, ECB; + int H_jpv = 25, W_jpv = 650, x_jpv, y_jpv = 20; + int largeur_bar_vie_T = W_jpv; + int largeur_bar_vie_cible = W_jpv; + boolean invincible = false, son_Laser = false, clignote = false; + int invisi_time = 1000; // temps de d'invincibilité en millisecondes (2 secondes) + int deta_time, time_inv_boss; + int deta_cligno_time = 150; // temps de clignotage en millisecondes + int time_cligno_boss; + + + Boss (int pvboss, String visuboss, int xb, int yb, int bv){ + boss_vitesse = bv; + boss_x = xb; + boss_y = yb; + pv = pvboss; + boss_time = millis()/1000; + visu_boss = loadImage("data/images/" + visuboss); + + } + + void verifiercollisions(){ + + } + + void bouge_boss(){ + + } + + void apparaitre(){ + //affiche l'anime de explosion : + if ( !show && NUMEROXEPLO<50 ) { + // Ou Methode avec un if : + if ( String.valueOf(NUMEROXEPLO).length()==1 ) visu_boss = loadImage("data/images/explosion/explosion000"+NUMEROXEPLO+".png"); + else visu_boss = loadImage("data/images/explosion/explosion00"+NUMEROXEPLO+".png"); + NUMEROXEPLO += 1; + } + + if (NUMEROXEPLO == 1 && son) sonExposion.play(); + + //Affiche le ship ou explosion s'il n'est pas détruis (l'anime de explosion est pas finie) + if (NUMEROXEPLO < 50) image(visu_boss, boss_x, boss_y); + println("boss .."); + } + + void affiche_et_mets_a_jour_le_boss(){ + verifiercollisions(); + bouge_boss(); + apparaitre(); + + } + +} diff --git a/Bosss.pde b/Bosss.pde new file mode 100644 index 0000000..4f64e93 --- /dev/null +++ b/Bosss.pde @@ -0,0 +1,179 @@ +boolean boss_d_ou_g = false; +int boss_bouge = 800; +int boss_y = 171; +int boss_vitesse = 8; +boolean collision_laser = false; +float boss_cooldown = 5; +float boss_time; +int boss_stop = 4; +int pv_baseboss = 5; +int boss_pv = pv_baseboss; +int Xa, Xb, Xc, Ya, Yb, Yc, Xd, Yd, Xe, Ye; +float time_game = millis()/1000; +float ABC, DBC, ACB, DCB, EBC, ECB; +int H_jpv = 25, W_jpv = 650, x_jpv, y_jpv = 20; +int largeur_bar_vie_T = W_jpv; +int largeur_bar_vie_cible = W_jpv; +boolean invincible = false, son_Laser = false, clignote = false; +int invisi_time = 1000; // temps de d'invincibilité en millisecondes (2 secondes) +int deta_time, time_inv_boss; +int deta_cligno_time = 150; // temps de clignotage en millisecondes +int time_cligno_boss; + + + + +void bosss() { + + time_game = millis()/1000; + println("second : "+ time_game); + println("boss_time + boss_cooldown : " + boss_time + boss_cooldown); + if (boss_time + boss_cooldown < time_game && !invincible){ + boss_vitesse = 0; + image(laserboss1, boss_bouge, 380 + boss_y); + //joue le son du laser une seul fois + if(!son_Laser){ + son_Laser = true; + sonLaser_boss.play(); + } + //calcul dimension laser: + //coordonnées point haut + Xa = boss_bouge; + Ya = -100 + boss_y; + + Xb = boss_bouge - 566; + Yb = -100 + boss_y + 981; + + Xc = boss_bouge + 566; + Yc = Yb; + + //triangle(Xa, Ya, Xb, Yb, Xc, Yc); + + //coordonnées base du vaisseau: + Xd = x - 100; + Yd = y + 100; + + Xe = x + 100; + Ye = Yd; + + //calcul des angles + ABC = acos( ( ((Xc-Xb)*(Xa-Xb)) + ((Yc-Yb)*(Ya-Yb)) )/( sqrt(sq(Xc-Xb)+sq(Yc-Yb)) * sqrt(sq(Xa-Xb)+sq(Ya-Yb)) ) ); + ACB = ABC; + //println("ABC : "+ ABC); + //DBC = acos( ( ((Xc-Xb)*(Xd-Xb)) + ((Yc-Yb)*(Yd-Yb)) )/( sqrt(sq(Xc-Xb)+sq(Yc-Yb)) * sqrt(sq(Xd-Xb)+sq(Yd-Yb)) ) ); + DCB = acos( ( ((Xb-Xc)*(Xd-Xc)) + ((Yb-Yc)*(Yd-Yc)) )/( sqrt(sq(Xb-Xc)+sq(Yb-Yc)) * sqrt(sq(Xd-Xc)+sq(Yd-Yc)) ) ); + EBC = acos( ( ((Xc-Xb)*(Xe-Xb)) + ((Yc-Yb)*(Ye-Yb)) )/( sqrt(sq(Xc-Xb)+sq(Yc-Yb)) * sqrt(sq(Xe-Xb)+sq(Ye-Yb)) ) ); + //println("DCB : "+ DCB + " / EBC : "+ EBC); + + //line(Xd, Yd, Xe, Ye); + //println("Xb, Xe : " + Xb + " <> " + Xe); + //test collisions avec le laser: + if (EBC > ABC || ACB < DCB) { + collision_laser = false; + } else { + collision_laser = true; + ship.collision = true; + println("collision : " + collision_laser); + } + + + // boucle fin d'attaque + if (boss_time + boss_cooldown + boss_stop < time_game){ + boss_cooldown = random(1, 7); + boss_vitesse = 8; + boss_time = time_game; + son_Laser = false; + } + + //println("boss_time + boss_cooldown + boss_stop : "+ boss_time + boss_cooldown + boss_stop); + } + + if(!clignote){ + image(imgboss1, boss_bouge, boss_y); + } + + if (boss_d_ou_g == true){ //si le boss vas vers la gauche + if (boss_bouge > 0){ //si le boss il n'est pas tout a gauche + boss_bouge -= boss_vitesse; //on le fais aller a gauche + } else { //sinon + boss_d_ou_g = false; //on lui dit d'aller a gauche + } + } + + if (boss_d_ou_g == false && boss_bouge < width){ + boss_bouge += boss_vitesse; + } else { + boss_d_ou_g = true; + } + + + + + //largeur en pixels en fonction des pv courants du boss + largeur_bar_vie_cible = W_jpv * boss_pv / pv_baseboss; + println ("T : " + largeur_bar_vie_T + " C : " + largeur_bar_vie_cible); + + if (time_inv_boss + deta_time <= millis()){ + if (largeur_bar_vie_T > largeur_bar_vie_cible){ + largeur_bar_vie_T -- ; + invincible = true; + } else { + invincible = false; + } + time_inv_boss = millis(); + } + + // clignotement : + if (invincible && time_cligno_boss + deta_cligno_time <= millis()) { + time_cligno_boss = millis(); + clignote = !clignote; + } else if (!invincible) { + clignote = false; + } + + //jauge des pv du boss + x_jpv = width/2-W_jpv/2; + fill(255, 255, 255, 40); + noStroke(); + rect(x_jpv, y_jpv, W_jpv, H_jpv, H_jpv / 2); + fill(#AE0202, 230); + noStroke(); + rect( + x_jpv + (W_jpv - largeur_bar_vie_T)/2, // coordonnées X de la bar de vie + y_jpv, // coordonnées Y de la bar de vie + largeur_bar_vie_T, + H_jpv, // hauteur de la bar de vie + H_jpv / 2 // pour arrondir les angles de la bar de vie du boss + ); + fill(255); + textSize(H_jpv / 1.5); + textAlign(CENTER, CENTER); + text(boss_pv + " / " + pv_baseboss , x_jpv + W_jpv / 2 , y_jpv + H_jpv /2); + textAlign(LEFT, BOTTOM); + textSize(12); + strokeWeight(2); + stroke(#ffffff); + noFill(); + rect(x_jpv, y_jpv, W_jpv, H_jpv, H_jpv / 2); + fill(255, 255, 255); + strokeWeight(1); + stroke(#000000); + + if ( dist(ship.x, ship.y, boss_bouge, boss_y) < 200 ) { + // en gros le vaisseau éclate quand il touche le boss + ship.collision = true; + } else { + //si le missile est en contact avec le boss et qu'il n'est pas invincible le boss perd un point de vie + if ( dist(xm, ym, boss_bouge, boss_y) < 114 && !invincible ){ + boss_pv = boss_pv - 1; + sonCollision.play(); + time_inv_boss = time_cligno_boss = millis(); + //calcul delai en miliseconds pour chaque pixels a supprimer de la bars de vie en fonction du temps d'invincibilité du boss + // temps / pixels a suprimmer de la barre : + deta_time = invisi_time / (W_jpv - (W_jpv * boss_pv / pv_baseboss)); + //println("boss_pv : " + boss_pv + " :: deta_time : " + deta_time); + lancermisile = false; + clignote = false; + } + } + } diff --git a/Misile.pde b/Misile.pde index 716978a..2f8c555 100644 --- a/Misile.pde +++ b/Misile.pde @@ -6,7 +6,7 @@ class Misile { int y,x,yStart; float time; - Misile(int xt,int yt,String misilet,float timet) { + Misile(int xt,int yt,String misilet,float timet) { x = xt; y = yStart = yt; time = timet; @@ -44,7 +44,7 @@ class Misile { } void tomber() { - y += 4; //ont peut changer cette variable(le nombre de la variable)pour changer la vitesse des missiles enemis. + y += 6; //ont peut changer cette variable(le nombre de la variable)pour changer la vitesse des missiles enemis. } void affiche_et_mets_a_jour_le_missile() { diff --git a/mechant.pde b/mechant.pde index 23a5484..830680d 100644 --- a/mechant.pde +++ b/mechant.pde @@ -1,89 +1,89 @@ -//ça c'est TOUT le code qui dit ce que c'est un enemy -class Alien { - - int x,y,enemypv; - PImage enemy_explo; - boolean show; - float time; - int NUMEROXEPLO = 0; - - Alien(int xt,int yt,int pv, String imgEenemyt /*float timet*/){ - x = xt; - y = yt; - enemy_explo = loadImage("data/images/" + imgEenemyt); - show = true; - enemypv = pv; - /*time = timet;*/ - } - - void apparaitre() { - - //affiche l'anime de explosion : - if ( !show && NUMEROXEPLO<50 ) { - - //// Methode avec calcul du nombre de zeros: - //// 4 - le nb de carateres de l'entier NUMEROXEPLO [4 correspond au nb de zero du nom des fichiers] - //int nbCarateres = String.valueOf(NUMEROXEPLO).length(); - //int nbZeros = 4 - nbCarateres; - //String chainDeZero = new String(new char[nbZeros]).replace("\0", "0"); - //enemy = loadImage("images/explosion/explosion"+chainDeZero+NUMEROXEPLO+".png"); - - // Ou Methode avec un if : - if ( String.valueOf(NUMEROXEPLO).length()==1 ) enemy_explo = loadImage("data/images/explosion/explosion000"+NUMEROXEPLO+".png"); - else enemy_explo = loadImage("data/images/explosion/explosion00"+NUMEROXEPLO+".png"); - - NUMEROXEPLO += 1; - - } - - if (NUMEROXEPLO == 1 && son) { - sonExposion.play(); - nombreEnemiReste -= 1; - - } - - //Affiche le mechant ou explosion s'il n'est pas détruis (l'anime de explosion est pas finie) - if (NUMEROXEPLO < 50) image(enemy_explo, x, y); - - - } - - - void verifiercollisions() { - - // Avec le missile - if ( show && !( xm < x-40 || xm > x+40 ) && ym < y) { - - // on luis enleve un point de vie - enemypv = enemypv - 1; - y = y - 20; - - //suprime le missile - lancermisile = false; - } - - // Avec le ship - // DEBUG : Affiche x et y dans la console - //println(dist(ship.x, ship.y, x, y) + "ship.x : " + ship.x + " < " + (x-75) + " : > " + (x+75) + " ship.y : " + ship.y + " <> " +y); - if ( dist(ship.x, ship.y, x, y) < 130 ) { - // Averti le vaiseau de la collision - ship.collision = true; - - // on luis enleve un point de vie - enemypv = enemypv - 1; - y = y - 20; - } - - //le mechant disparait si il a plus de vie : - if ( enemypv == 0 ) { - show = false; - } - } - - - void affiche_et_mets_a_jour_les_mechants() { - verifiercollisions(); - apparaitre(); - } - -} +//ça c'est TOUT le code qui dit ce que c'est un enemy +class Alien { + + int x,y, enemypv; + PImage enemy_explo; + boolean show; + float time; + int NUMEROXEPLO = 0; + + Alien(int xt,int yt,int pv, String imgEenemyt /*float timet*/){ + x = xt; + y = yt; + enemy_explo = loadImage("data/images/" + imgEenemyt); + show = true; + enemypv = pv; + /*time = timet;*/ + } + + void apparaitre() { + + //affiche l'anime de explosion : + if ( !show && NUMEROXEPLO<50 ) { + + //// Methode avec calcul du nombre de zeros: + //// 4 - le nb de carateres de l'entier NUMEROXEPLO [4 correspond au nb de zero du nom des fichiers] + //int nbCarateres = String.valueOf(NUMEROXEPLO).length(); + //int nbZeros = 4 - nbCarateres; + //String chainDeZero = new String(new char[nbZeros]).replace("\0", "0"); + //enemy = loadImage("images/explosion/explosion"+chainDeZero+NUMEROXEPLO+".png"); + + // Ou Methode avec un if : + if ( String.valueOf(NUMEROXEPLO).length()==1 ) enemy_explo = loadImage("data/images/explosion/explosion000"+NUMEROXEPLO+".png"); + else enemy_explo = loadImage("data/images/explosion/explosion00"+NUMEROXEPLO+".png"); + + NUMEROXEPLO += 1; + + } + + if (NUMEROXEPLO == 1 && son) { + sonExposion.play(); + nombreEnemiReste -= 1; + + } + + //Affiche le mechant ou explosion s'il n'est pas détruis (l'anime de explosion est pas finie) + if (NUMEROXEPLO < 50) image(enemy_explo, x, y); + + + } + + + void verifiercollisions() { + + // Avec le missile + if ( show && !( xm < x-40 || xm > x+40 ) && ym < y) { + + // on luis enleve un point de vie + enemypv = enemypv - 1; + y = y - 20; + + //suprime le missile + lancermisile = false; + } + + // Avec le ship + // DEBUG : Affiche x et y dans la console + //println(dist(ship.x, ship.y, x, y) + "ship.x : " + ship.x + " < " + (x-75) + " : > " + (x+75) + " ship.y : " + ship.y + " <> " +y); + if ( dist(ship.x, ship.y, x, y) < 130 ) { + // Averti le vaiseau de la collision + ship.collision = true; + + // on luis enleve un point de vie + enemypv = enemypv - 1; + y = y - 20; + } + + //le mechant disparait si il a plus de vie : + if ( enemypv == 0 ) { + show = false; + } + } + + + void affiche_et_mets_a_jour_les_mechants() { + verifiercollisions(); + apparaitre(); + } + +} diff --git a/mechant_tres_mechant.pde b/mechant_2.pde similarity index 97% rename from mechant_tres_mechant.pde rename to mechant_2.pde index fe82fbe..81b4b87 100644 --- a/mechant_tres_mechant.pde +++ b/mechant_2.pde @@ -107,9 +107,10 @@ class Alien2 { */ void affiche_et_mets_a_jour_les_mechants() { + println("affiche_et_mets_a_jour_les_mechants :"); verifiercollisions(); apparaitre(); - alea_bouge(); + alea_bouge(); } } diff --git a/space_inviders.pde b/space_inviders.pde index bca6ea9..b7a5e07 100644 --- a/space_inviders.pde +++ b/space_inviders.pde @@ -31,6 +31,7 @@ String touchePresse = null; //int nombreEnemiRestek = nombreEnemik; Ship ship; +Boss boss; boolean[] level = new boolean[3]; @@ -50,8 +51,6 @@ int moveBoost = 1; boolean pause = false; - - void setup() { stroke(#000000); @@ -60,18 +59,23 @@ void setup() { textSize(12); size(1600, 900); imageMode(CENTER); - + + c[0] = new Alien2(800,350,10,"mechant_tres_mechant150x150.png"); + c[1] = new Alien2(1200,350,10,"mechant_tres_mechant150x150.png"); + c[2] = new Alien2(400,350,10,"mechant_tres_mechant150x150.png"); + //là, ça charge les images dans leurres varibles space = loadImage("data/images/space.jpg"); img_ship = loadImage("data/images/redfighter_200x200.png"); misile = loadImage("data/images/misile.png"); - //2 pour le skin 2 imgGameover = loadImage("data/images/gameover.png"); imgWin = loadImage("data/images/Win_game.png"); imgboss1 = loadImage("data/images/vaiseau_enemi.png"); laserboss1 = loadImage("data/images/laser_boss1.png"); + //création du boss + boss = new Boss(5, "vaiseau_enemi.png", 800, 171, 8); //on crée le ship ship = new Ship(x, y, 3, img_ship); @@ -86,13 +90,12 @@ void setup() { j = i; k =1; } - a[i] = new Alien (100+(j*150), k*100, 3, "mechant_rouge_150x150.png"); - //a[i] = new Alien (100+(j*150), k*100, 3, "mechant_tres_mechant150x150.png"); + a[i] = new Alien (100+(j*150), k*100, 1, "mechant_rouge_150x150.png"); + // a[i] = new Alien (100+(j*150), k*100, 3, "mechant_tres_mechant150x150.png"); } + println("Affichage mechant"); + - c[0] = new Alien2(800,350,20,"mechant_tres_mechant150x150.png"); - c[1] = new Alien2(1200,350,20,"mechant_tres_mechant150x150.png"); - c[2] = new Alien2(400,350,20,"mechant_tres_mechant150x150.png"); //on crée des misiles for (int i = 0; i