From 07036c8e5ab57ec247226145d23b3619ee5c1a3f Mon Sep 17 00:00:00 2001
From: endurance21 <43696525+endurance21@users.noreply.github.com>
Date: Wed, 3 Apr 2019 21:53:40 +0530
Subject: [PATCH 1/3] added collision
---
index.html | 3 +++
js/Lib/Enemy.js | 3 +++
js/Lib/ReactangleCollision.js | 8 ++++++++
js/Lib/RectangleCollision.js | 36 ++++++++++++++++++++++++++++++++++
js/Lib/TankCollision.js | 7 +++++++
js/init.js | 4 ++--
js/main.js | 23 ++++++++++++++++++----
js/players.js | 20 +++++++++++++++++++
res/sounds/onFire.mp3 | Bin 0 -> 7941 bytes
test.htm | 9 +++++++++
10 files changed, 107 insertions(+), 6 deletions(-)
create mode 100644 js/Lib/ReactangleCollision.js
create mode 100644 js/Lib/RectangleCollision.js
create mode 100644 js/Lib/TankCollision.js
create mode 100644 res/sounds/onFire.mp3
create mode 100644 test.htm
diff --git a/index.html b/index.html
index b6fbe64..8d5cb3c 100644
--- a/index.html
+++ b/index.html
@@ -12,6 +12,7 @@
+
@@ -24,6 +25,8 @@
+
+
diff --git a/js/Lib/Enemy.js b/js/Lib/Enemy.js
index 5cd11cb..a0ca26a 100644
--- a/js/Lib/Enemy.js
+++ b/js/Lib/Enemy.js
@@ -21,6 +21,9 @@ class Enemy extends Tank{
if(this.position.y + this.height >=HEIGHT || this.position.y <= 0){
this.velocity.y = -this.velocity.y;
}
+
+
+
this.move(this.velocity);
}
}
\ No newline at end of file
diff --git a/js/Lib/ReactangleCollision.js b/js/Lib/ReactangleCollision.js
new file mode 100644
index 0000000..92c7e6c
--- /dev/null
+++ b/js/Lib/ReactangleCollision.js
@@ -0,0 +1,8 @@
+function RectangleCollision(rect1, rect2){
+ let nearToOrigin = rect1.position.x < rect2.position.x ? rect1:rect2 ;
+ let farToOrigin = rect1.position.x < rect2.position.x ? rect2 :rect1 ;
+ if(farToOrigin.position.x - nearToOrigin.position.x <= nearToOrigin.width &&farToOrigin.position.y - nearToOrigin.position.y<= nearToOrigin.height)
+ return true
+ else return false
+}
+alert();
\ No newline at end of file
diff --git a/js/Lib/RectangleCollision.js b/js/Lib/RectangleCollision.js
new file mode 100644
index 0000000..5a1b77a
--- /dev/null
+++ b/js/Lib/RectangleCollision.js
@@ -0,0 +1,36 @@
+function RectangleCollision(rect1, rect2){
+ let x1 = rect1.position.x;
+ let x2 = rect2.position.x;
+ let y1 = rect1.position.y;
+ let y2 = rect2.position.y;
+ let w1 = rect1.width;
+ let w2 = rect2.width;
+ let h1 = rect1.height;
+ let h2 = rect2.height;
+ let collisionData = {
+ collided : false,
+ collisionDistance : new Vec2(),
+ };
+
+
+ if(x2 + w2 > x1 && x2 < x1 + w1){
+ if(y2 + h2 > y1 && y2 < y1 + h1){
+ if(x1 < x2){
+ collisionData.collisionDistance.x = x1 + w1 - x2;
+ }
+ else{
+ collisionData.collisionDistance.x = x2 + w2 - x1;
+ }
+ if(y1 < y2){
+ collisionData.collisionDistance.y = y1 + h1 - y2;
+ }
+ else{
+ collisionData.collisionDistance.y = y2 + h2 - y1;
+ }
+ collisionData.collided = true;
+ }
+ }
+ return collisionData;
+}
+
+
diff --git a/js/Lib/TankCollision.js b/js/Lib/TankCollision.js
new file mode 100644
index 0000000..e9c6308
--- /dev/null
+++ b/js/Lib/TankCollision.js
@@ -0,0 +1,7 @@
+function RectangleCollision(rect1, rect2){
+ let nearToOrigin = rect1.position.x < rect2.position.x ? rect1:rect2 ;
+ let farToOrigin = rect1.position.x < rect2.position.x ? rect2 :rect1 ;
+ if(farToOrigin.position.x - nearToOrigin.position.x <= nearToOrigin.width &&farToOrigin.position.y - nearToOrigin.position.y<= nearToOrigin.height)
+ return true
+ else return false
+}
\ No newline at end of file
diff --git a/js/init.js b/js/init.js
index 875b2ed..a24f2f7 100644
--- a/js/init.js
+++ b/js/init.js
@@ -32,7 +32,7 @@ let WorldSpace = {
const ImageLoader = new ImageLoaderClass();
const audioloader = new AudioLoader();
-const blastSound = audioloader.load('res/sounds/blast.mp3');
+//const destroySound = audioloader.load('res/sounds/destroy.mp3');
const fireSound = audioloader.load('res/sounds/fire.wav');
let playerIsAlive = true;
@@ -40,4 +40,4 @@ let playerIsAlive = true;
const playerImage = ImageLoader.load('res/images/Tanks/tankBlue.png');
const bulletImage = ImageLoader.load('res/images/Bullets/bulletBlue.png');
const enemyImageRed = ImageLoader.load('res/images/Tanks/tankRed.png');
-const enemyImageBlack = ImageLoader.load('res/images/Tanks/tankBlack.png');
\ No newline at end of file
+const enemyImageBlack = ImageLoader.load('res/images/Tanks/tankBlack.png');
diff --git a/js/main.js b/js/main.js
index de52cc9..16949e1 100644
--- a/js/main.js
+++ b/js/main.js
@@ -8,17 +8,32 @@ Game.update = ()=>{
}
//Check for collisions
+
for(let i = 0; i{
}
//Ending the game
- if(!playerIsAlive)
- Game.pause();
+ // if(!playerIsAlive) console.log("dead");
+ // Game.pause();
}
\ No newline at end of file
diff --git a/js/players.js b/js/players.js
index 12a2b12..5509b80 100644
--- a/js/players.js
+++ b/js/players.js
@@ -21,6 +21,26 @@ ImageLoader.onEveryImageLoaded = () => {
enemies[i].loadBullet(bulletImage);
}
+ for(let i = 0; iflEcRZp>;l&sxh+R
zHc+y)t|Ma0a6x)XvfrIGO5HjRHmKW^yb8`3MRuBNPBi&q+zh#yygCd>2hw8B$VqmE
zV2mPnCa-o3j64sX?@$I4QAWz~D2$mP9U%Xkf+alRP=??y5^Y-J{_lX0a#%$o27>ed
zQb=H|vLr+dDaxd4a={cJ(L3=}ecfO<*vSCF7#9xVPQdA7T#ZCz6=J58N!MQ~*l18T
zzRpWS)u6m@hEfNAYFJocV6t*}f()N3IrP$xoXl}`N-#+p?!l?)`Zm<^I6ZMnE#g-j
z)}1WE`IeX@*WSHZR4g=E%de(wi*qtbMg6DK(K|iiSEDP!`PA~0@T>LU90)J+tI4Vv
zu1wazYh9gEgHzLkGb8OxJzY!wpG5)y==!O!?DXsi%M-ylX3B%KihUD1Whxsk@^^N(
zm8EYN(mG?eq@WLRVF`SS3@YE%jk?2!uq?8DRmSN*xZ)eFVeE$B69Hoe1&=irM6-gs
z(lYVqG)D%Nt~JR>?^rC$%5^r=Q-G$5lo*uANK_Q$rT(EaK;#{OdJd%orT-&@j~V?x
zLx@fzKUg*+wqrv?Cj^>)4#H;Y5DjxPa-ny?6
zSr%Ca6nxtch#Lmfr{V+NNU_j=VO!Hujyc$@IMGY}0{#v_(1frwx?mDVeQH^JaFU}k
z{5VbgC))9=IaN3i%K16ZV$i}tIs9xkQAd_t5DDamfIXR&nT#XfZRDK**miKcVXl?@
zyPDC5+;sd4Q4tHD1>6N1tjN$S5)QNsb~crY)av57mF@FnMxDYY$-bkSTFIjV#_+g=
zwfIde0=q?p)r2}!7P*iNkI87njF>L6t;B$)NidnLD@*iHW7dgKB)v&gc-but*Ah}S
zL4~m)D!6O4FnFfsrRjIDg`EZfMH53QmDw%LDDCL6BP{YVAjHl7JUsr&S$skZkH4g>
z$en7pBq41l%oI=|oJ4=l=ZAdqs7}%9s;7MJSi6D9yrtFhwl}V~JA0RZPkGUuhO2jW
zK*^^X3mlWBJZoHSX`H9ibt1!{+8b^6kd?-bHo29{u^!o-N(^q(z8w{CNWRaxbnw0
zjtvptD?_lPBDqXDr4}m(rD`a3p9zJ6`!U0qP_bDvO9qRIMWXLe%WzEi*PrzJ8|o5P
z0#VS713?Q@choCRaBs?&rADRsaXVjhNWIW!NR5~8{Mpb&ki5LHE)3M3ke0dWfBHr3
zB1r7X*Ihl)KW@~4KZ7O)@!6GCe>hjGR`bOn_Z?A7L7y)0VGrJ3wMDV;rPEdoXQ}bM
zz~d<|LWA^Pel4|JKnyu2_bK@6l3gP6vkfIAf0
z%7av7hV~EXQ&Nnrsw#PDlKK*inR$66^tdu4^;G-e>*DWz>JN4b>B;%TyQymadP<59J1BuV<18QSGh
z(Q4CMn-B3hZ>%={ek4!#tSVVr8}F`b+5L-~q9mh@j*-KZ2qsojF+@r-rX*xOUPUsMK7f;x~
zf{D#)Z-}e}dSNxwxJYF`%fVh7l}Dua@o&{2>L|X;gT#5LL-^S3xq12cLW>%I~5nX
zq~1iPVMaZkSc7Y&(vO7Aep-P6;F@>ULRh5#i7u3QVccne_pvl5udy+W56l;`fi9+pcfPs)mFxKG;Su0WmBt_s6eBqGyuYE)ry8A2~N
z*o!tB4^8JJd6G17_4(;*Tz6FM*^tUvQKDfbds2zM**%xKn}0(xpPZOC#$iFmTMeB{d--XU#Kfaf)ZP&|7Zkfch
z$v3HwZkozLphMl(qWBN(oa?vNKEJR(0&(
zcFtiiv{r#3LJuZ8id?{4
zVN&B^akj|Y_iCVsP!4ttC;ZjW%U^BJAA9}6Z@OLue2c!Ca|)XIays$$YX0LHf3sV|
zMcIq_#nyKk52SY?a@VhEV8G$`g;5#GIBW8B-&D4;+cS0SwU6#EX3d7g+8ovdy)@uS
zQ2ldf#dBKf(Olfywx2)D<+dr1Up3B7O>3MzzNyHmiK@kVi_pU)PSC?0Jt1hX(&X
zxOcIH&zd)g`f*fu#H{wHso8k?UD{Kdt7I1j8o`IwWY^ecIWju!9+So7b7ySxkq9~i0+N*1)hpw!CHGa;xY4;Tu
zmvPcARyd>Oq-^HeAgrp?UREBLKt_!}$zkw>=iTP}4o5SF(x);>j1^_Dky3b9z}9j_
z8|4ZN9W&jYeK48ItZ6da-8tsMy-^*yn)+5-R~xary}L^rJ94N#-69YAh88Cax2dWC
z!^znzp_h^D-~wH_(Un3!nm5Sw#1QL(RdzPrqB`78jMIYoQLG*F2N~g{x5C+`g;FT<
zO@vXe7N6(Ri?FQ9-qGxU!H#bw3kM&vTaK>pF+TYg4>kb&k6Y5xcT6z%G>w4L2dS}Ul;qcKP}+ive%Rh4a;yF4~nuQ1zQoi~}Y%`JY+
z8!m>52-1lM{)-_ktoO3{!ee4PHXa0>A^{03MazW}H4QBV5c&i&u&q+%BfZz-qRPpD
z6I0Z?D09O(nuo1>)APcC&(wn46e5!}0yC$=0TSAPL+PmzzeYWiuB^sy3m+++5%IYV
z$nO%&OAPVXsEVoep82zznjO_ozwp`=zPeuY+n?XDbY$qH?f`*?fw2T{3P}FGI7bvw
zys8mYrIcDu=dcd}MJ1(Oe5(ulZCIW4N1zFnapLEnE*H*{cr6N17!z6T8I$u&FLTcX
zl}N`atJ@VvXF(S~ulSSb-qQ8F7f)5V9B1{T3>IA%2L-JX=;8C{eyiI%c}bcg0=d`p
z%eTtCmZT0zZ)m-T0F(eK(sdc0m8FCYz3DYProsG56f{Cdl+^)x#j4*HURN)SUrq`>
zJ*}qOSl1u7Ww_^_3xLoS5b{uPE(*>HR?#lyd{;L6YbHb>N=g^n+5=-c?WJ-}N5nC&6Ob3V?BLiQ-lL2e0cMe=AR-&6-c#
z$Cf01=8}bsE{HI^>ZfzP&bsEE#U-<|+PZ!1uk`W)t2m+}L%)F3)~rgVaWS7JOJ4Fr
z(K@HFb^OLtu1&2sO|%jNHWs7$QzU$MmOPXnocnU(zyezIV5l`hqv0WK79G!^3-)
zX*#3*#DA(7Jh){mI&UHtf7eq#6p329Grx_7p>I6jbLkvcx^$b7^z`OzA27{andxJ@
zkdJx@dyn5o*MmXaV2gG&5?vX|&x3YpUJFKwuqhH|UF*TinONBn#3)->FSAKz(nD;T
zBIi|kpH;;m4+T#{6zG_`cf;`tkLWtI+sv(QR$at%{o)G*C>^NTnCr^?N@un^aOYY4lL?-vS}A+I
z=XlD0gv>C94l>^yMi^lz44nnQ22iUAzbHkzL23X?Gy&MFSzOSsZ4i(bpI!+=Kxu^W
zLZZt#%ZnjIq53c|*rue^i}xboIeW*KUborjl0VNHbA@a9r4#eAQ*Z0AcB2eIjolw3
zU#7J>JQuLK47h}+?fC4pJ^fMmx?wlAMyL7KNG)42r5mo?F4iWn87|Yy*%mmJ>}K1~
zCdtX=a=z7S5=Iz?2tedywtk5V^<8{F5O9w?*H;@|xK=fnm^13sw(xs?jLv~?mRHny
z!~SG_p&b-S6yv9Uep`n;5ouV=`+;%r&xLIMpU|Q%TRovS38qyk59(FaGToQ;hXYh@
zF3idGfB9%bE5oWWQoF)cF$Vy=J0=0Se^9L%p**{hxEqcME(xxsHfEo{s{E3t7QNbO
z@i&ZF*#1!$dG3q>CRo9`nz}62#XbwbDv3^V+jPU`SoOWYADxrRJg$cfndFbp*$j?c)~HPYOfw6?*tdluog9q+*%}*(2-vT89xMY@H6di4>I^xw8=kY
z_(v!ZIDGwN;ewn|n=cn)3uZT^rgg!-Pk-7_0kF0c2<4^m;FQFK^2K(06^>b*{8THC
zI1z?FG$_8A?Ol}gjeZp`C^s=#I|DC1l`W!;eI{}{wx~(5&15mH%&%_R10X^}RW;RQ
znvKlYpZhpX=!b131aZSqk*jN+7%YHPpDe1~`T94fJ+HWLcgos)r|?6|goIZTc|w8ml?X|hn2d*|642GZkT4>!&F
z2bC#hQ#{lB#YOs}t>^Q8P4OD`U0X2bID6ZlJ74LWt?%_?ktBLw*Bk2KmxP$Shpby#
z@n{@DQxI3(w1bmZ;yvwY*odeYeinJ7^D(L)DW=#rl=9LA_ndl%3=!LKb+Pxd5qC|~
zq!U76(aSnj*6NwXhMW>@^<;X8J~iI`{i4bg4vje7`R%`kd2$7&+a1bvj~P_Ne$iJ(
zVZQzMGf23s2K^l1M?w&)%9i!nHmIaHwswG=GWfBpn*2@t{3vAXsWP0_49@zGP%g0Q
zZD+be&Tu4vfw&WpP;+=i6{XuZxB=D>ARJ`Z#(tZc$|li1CIyA*0x|Cxee<+)6aDd8
z5Nvx?Y(>H>#;q{-(VmE$qLcLs&sX9N8zg%>35|9b=x*X1C{4#c_&h`no&cE5-
zEKXrsObnj@A|g$*x_6cH)H8ZvS08#z#k#9vdUJ>Yj|{$&H;UfJ-VlHkRM)lcC2u*@
zao@p;%$W6yU~DL|I#h!qJ%j)0H@&-P7|wDc&`IoU(GJhNU*mY&44sk8au~Kt{M#!7
zhVSa5x{O5ZtsTxVwBZ-=9QgB~+QG=n6(00Fcx_0C^}a3dvqGyh!DNQf-qeat8i2m;
zJXPef5Je|~(xnzEl%^*BS{Ne72uV}U*3s8EyiTE}fbZJpT{v%}N|~2?{j$SZThpx4
zbN#e?Xzx~SPi{wkuS7=1+g@w9_s6ArMGs=;mXL{O{qc!GVZR)TZH$xu5gGtiu?`D6
z9|lM@_!^W8C>O@bAooavpJwB@s_X?J$a{iZ$(-(L!3oZ&s(G;DHq$RWwZbJ#t8
z3YGkwVd@!QU-ZzSPkB)GyL0oG{;}iNS-s`yIDG%M#_UpauQ~O#J8l21>w}93HF8Cy
zVvWFf%kS*1Aj!C+S(bDV{!BOQ6<|$0Qr-Ss*aCb=LTE`o3S|TYqI4+2He^CM709iA
zJ{e}Z&)4yet-+LxD}%I;X^qxgTcjoQ-lJzb=S=zfUxkyWzSx}@)CTsw7{dya(sl9N
zRg^)DE@mo3DA&f_6AH|7vayS{wS3!I6oORvLNnD`r1bHd&JW)~x_^ZBDc4wyCK($U
zJcZlof(iQ&jUuD6YlU~X8wLphAYi=s`mEF~=@Lh>Q81od=WX*cn)qz^jd5r~*0j(q
zl^B=)8`5Vvfu|V(OXe3D_9Xj^AL+$wa{?sXYnOaGPoH09bndAC`e8t3^h-$Ct%=2L
z(wg!8HJ4aSmZu6_PZ$iQEdM5|;NF#=1OV}x2<~#`LrCtT0SaX3G~>W~|5(Q(*ABs8
zvEaW(efR?!xR?R9eo^rrOx?_#S*olgNY3~8v3lIXAxiN_XMc&a|4UJ!mpPYR-f_a($&zZv->{4-g)Iq~+GsVkdAU
zY8GnHs-c173Fj%UB{4~s0s#jYZq4-GDwPCOa5@hW3IgpxueBq
zc_^WvIhDn9mu<95$x<;9p=;q=2A+zpD_zyUjL`bql3hprj}Sh3E!$K(se#c-G1^E6
z%$}n?CadJ?VE@@3uvG`b!R>JWH^l8)POrt=b|JSU?1h{ff7vjcVK8Kbsg-zuA+A46
zE_NDcrGD7Tk4uVS8)YAA*RZ4iMBblj;nz37(5EX#-{Q0T^N?QzWI)3tE~3DTHGcC}
z>N+L4HiI8+ssI8&Q}{LXR^`OT)^?ZJ#HTWTxUMgB7LVbQ)6iM67jAO;^+LIQYuQNm
zji`-|IFffMh)mUXBH;AbGZVXabjoiixxARt3RE6QaIn8LvZvi@)KDgIX4I?wHsUDLz@B?=UM0
zC!P$C{-*!>;b2M%SycNd|B&E7`_|gRkXRSGeV=TI4fB}+-~@kvZl!#uS1^xH8I)^j
z5B-eDc=bf4)JBN(hA?_kf(@4jN0N8D)4@hn7{6rY{SCHTvE<5Tg=>g23KV2;^~EFX~`naME#JeVz!Mc
zI@7x`fzAMVv0Xp(9x;{-k%-M}B8Agh6g=|CJ^Z>{K(3H$(xVoM#iGJVgunh2P^9Y?
zJEmZTH+-f%H0rc}9Vfn*N($Y=m<+&paueVo)HMbl4DtDYK!9n7x8*P(k7BB`=&3HX3ZDlD)iq_U
zAv13IAIei+W}X?8yI4UB<66qbzw9a1>=>?@X+8Nl67ZK#se-*VUq0a}Pnv2_K5eQs
z$bt)HPmG4eGn|F#gzPh?cw^T@N9!7wX$e?Sf28%)n78K<8K)i<4
zCBVO_qMjjBN0_I)WL#W>!??vV$5tmnbd;|_!0LYznrd(ux;7^?t_aZS0PFy?eOX$|
zh4?d}FV{{W6f>Z~65e$)7j?-aJenpPD5%V8^XOcIs?50{eFsr-=WcQE1H;u(#n1S-
zYCGpJap*?w9Yl=F3zxmU3@wpkFVA2m=Z2kwwB#@I4K^jMT)0BkR_LQQg(p^2hc9(&W0aZ|ZaBFDfO~GZT
zC4?@WiAWhtqD}!A_1dsff-p=#IJ}|bCiEdOkHG0D$17^_xS8Hn-d0dVZ;|c-ZgW3w
zsoXR<;n)N#x-B(Jv5
zNZ&`o;L$qX$&+U<2NpkunJ@P~yUiop(wCa19&znv`$?Fwhfy%nmx%ahnUeHm!B}sh
zY^j=W(ev4>-pQK3(|!y!jV)q#YNj+~DolF}z(4}F*zwKah>=GY9aRWTa5xPS8r-g*
zNIf~)6COjzCLo7uQYWyv*KGt_YGo7F8A-NB!C$7eA+c6z4t?Ompvu%tRn!CB24Ubn@
zf|eEu%^BCt#@JX=W{x{AB*%0;+t1Ok@7&n^3OfiXqWXkPJw1Jw{H_%v_lS^Oug)X!
z_yRoMw^yv_c+@^&Ol4A;v|T^By@rwUI=T1oK}$4C=gaPB%e=Ahl(2onBBHSNm0V)_
zydlgrCZeM8LzIyUyoi!f;|S7gp0)sk!MMd;3XJbSnK(>-J5lrJ9fs#|WN7v;h&4&_
zYuvEh<=|5`jZKQaU`veV2u%>`m5VSQvNwz~bbWJQprtW!d#WQe$0t!dTu!-$I#aIT
z*7QFB?I3}!
literal 0
HcmV?d00001
diff --git a/test.htm b/test.htm
new file mode 100644
index 0000000..ffbef23
--- /dev/null
+++ b/test.htm
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
From 617a58c0b4d7483b4a3807bc3e24fc1e4502be89 Mon Sep 17 00:00:00 2001
From: endurance21 <43696525+endurance21@users.noreply.github.com>
Date: Wed, 3 Apr 2019 23:32:21 +0530
Subject: [PATCH 2/3] updated enemy.js
---
js/Lib/Enemy.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/js/Lib/Enemy.js b/js/Lib/Enemy.js
index a0ca26a..7027e30 100644
--- a/js/Lib/Enemy.js
+++ b/js/Lib/Enemy.js
@@ -12,6 +12,7 @@ class Enemy extends Tank{
this.angle = (Direction[a].getAngle() + PI/2)%(2*PI);
this.counter = 0;
this.fireBullet();
+
}
if(this.position.x + this.width >= WIDTH || this.position.x <= 0){
From 587a95356576e70d45c6097584bf5c529c8d7209 Mon Sep 17 00:00:00 2001
From: endurance21 <43696525+endurance21@users.noreply.github.com>
Date: Wed, 3 Apr 2019 23:44:59 +0530
Subject: [PATCH 3/3] minor bug fixes
---
index.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/index.html b/index.html
index 74b186c..7a3ec2c 100644
--- a/index.html
+++ b/index.html
@@ -25,8 +25,8 @@
-
-
+
+