From 76063a3b54aa799a493c61ba824c53e182970fe4 Mon Sep 17 00:00:00 2001 From: Christos Houtouridis Date: Wed, 10 Jan 2018 19:28:29 +0200 Subject: [PATCH] Init commit: The code from eTHMMY --- .classpath | 11 + .gitignore | 1 + .project | 17 ++ .settings/org.eclipse.jdt.core.prefs | 11 + GameLog.txt | 5 + bin/gr/auth/ee/dsproject/node/Node.class | Bin 0 -> 1398 bytes .../auth/ee/dsproject/pacman/Creature.class | Bin 0 -> 4656 bytes ghosts.gif | Bin 0 -> 3615 bytes lib/pacman.jar | Bin 0 -> 30304 bytes pacman.gif | Bin 0 -> 5345 bytes src/gr/auth/ee/dsproject/node/Node.java | 52 ++++ src/gr/auth/ee/dsproject/pacman/Creature.java | 289 ++++++++++++++++++ 12 files changed, 386 insertions(+) create mode 100755 .classpath create mode 100644 .gitignore create mode 100755 .project create mode 100755 .settings/org.eclipse.jdt.core.prefs create mode 100755 GameLog.txt create mode 100755 bin/gr/auth/ee/dsproject/node/Node.class create mode 100755 bin/gr/auth/ee/dsproject/pacman/Creature.class create mode 100755 ghosts.gif create mode 100755 lib/pacman.jar create mode 100755 pacman.gif create mode 100755 src/gr/auth/ee/dsproject/node/Node.java create mode 100755 src/gr/auth/ee/dsproject/pacman/Creature.java diff --git a/.classpath b/.classpath new file mode 100755 index 0000000..a876c4a --- /dev/null +++ b/.classpath @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ + diff --git a/.project b/.project new file mode 100755 index 0000000..65382e8 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + Pacman Part C + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100755 index 0000000..3a21537 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/GameLog.txt b/GameLog.txt new file mode 100755 index 0000000..6250f3a --- /dev/null +++ b/GameLog.txt @@ -0,0 +1,5 @@ +Team 0.00 Mine 0 Team 0.00 Mine 1 4 +Team 0.00 Mine 0 Team 0.00 Mine 1 4 +Team 0.00 Mine 0 Team 0.00 Mine 1 25 +Team 0.00 Mine 0 Team 0.00 Mine 1 25 +Team 0.00 Mine 0 Team 0.00 Mine 1 11 diff --git a/bin/gr/auth/ee/dsproject/node/Node.class b/bin/gr/auth/ee/dsproject/node/Node.class new file mode 100755 index 0000000000000000000000000000000000000000..fbfa9397e3eacd972d0a887c869de4aec50f6319 GIT binary patch literal 1398 zcmb_cT~8B16g^X*rE4wUpn$me0R@#sA)*u!6;P9c#sU!<9)|7EE^K$2=`0Dq%J^U~ zlIXiX%6NC!fDeryiG7$mclOM=_uPA@-+z4h3SbsXDI^$1D$3!Zt~x?EK2v*YSRvY+2NGm7zWQwkD4RLpIv39C1J7 z+LHm{ml- zJ5Oo2RnIRIoT0B^6olIIoo7n%Ukt>y&r&{N3jR(#K3vo71Kd`r4NJwmz;4+Y5AQ zx3p_n7{i^Y40ovsxw8tJIVx)91(keMuXH3N>U1Q^tqS)rc5;6yYNs9d88-i8`g>CP zf(Imk#z>rvFSUdEyPRC|==IRg!W zhhP<(_42npQ6?U-+t&_V)Q5UkknEi~0hrP&GUX6b^S7I5B4%K1WF!dWh8>`8X_k?;we|K0kcb@(P D`q3{0 literal 0 HcmV?d00001 diff --git a/bin/gr/auth/ee/dsproject/pacman/Creature.class b/bin/gr/auth/ee/dsproject/pacman/Creature.class new file mode 100755 index 0000000000000000000000000000000000000000..5e2700a06e49042e8bdedcb053a7b8a5c67f18bd GIT binary patch literal 4656 zcmb_geQ;D)760A$v2PQW5JFza5)%TXkZh7o2{fey!dC#pM?#x4lmwK`=8-HUyXo!* zgcdukK}T(8>{v(P4<{*|X4Fn?nL?|B#cI{T(XqDL5r*m1)~YjB)bXX49Kv_?+CNh}rt#O>1?$kgsanOmTYX&0G z{z$xLQ__i~2a}EkLm>BHFB0#mY3Y(u7JLF#H`~9VE0s=0qUnqt0V9=m1_VTt zfG^U&E9o5NONW5fdBu)NORec-EZ$SkjhhnPjvsS4+8K*eZq5!qng{#4 zoMc<1tB*5zI}*`IUwb4OlkeW7k?xJ91eWf&8O{to+VQQ4#bfCPnknz7XwQa@`2pmk zP(UxQXwQPcf&eV|<>(^;WFeb-Vk!3|MYJCs?2DwGX6F;>UCN2O5~)}^mWT^fly`RC z6vkbNM1Or}Qw5!4?2H`ak;-PWLm&_xOeQA{X`R$CFDirQv<`N)B^}4bBCxHz>4PD} z>E4=V-s)#!k|5g!%x-5O-OKY2M3PQCEl~Plx)~$|^#;#O$GWvQkxDaW+y75kU9ifq zt9sH?dZ%<%7Rg5kaay2!MnS6RY|6%RtgukaQ{RkQGNu7$+ie1V(nK9xafzhQ8p!y8 zNf6_8P+)dzIubp!Gcus~YhelZMHBrS4l8uw8KL8$I-8m*Iy)>>XA$PQ0M<)I=8;HW zUn(0L(P&|lK;_MVyHM{=$NETLCl$bEY$4MQ^hJ6$CHi71Md{GY@DL1-n=M06o~VuC;yVR8E-{_=VOgAlxUF}XX9b;xT#ts~C2p}q}M|Uihj&Rs|?;y$BEikJ;7H{+>-M0(^ru?+LR!}Dw zD`(~d0+gf?xF>)xYUHRRfO@QvqrCw%qlNgRy-xHH{hM(x57)$SGM1!EbaGxCq8C~d zgUP6~B_@mC>`V;{%i@VeRI2kbq4CRl#gebdYQ?8CI12&ZXY;L^Pr;|2m-CDg%H`ds zrWRr@$5N2X$iqB7S)gI_F1NNQ<-nZK^C$=zXAuk)okh{JT+$%biKUzd8Wm%eRXnL4u9XiXT>BgvY%6>UfuLzydfTYDtORW9 z1#CDuIs3A0oPuvuoVTs76A(Wq-G_>0DaY%0eT>)fpidfbt+c2Y!?k5}w~S)n)MaD; zGyyI*OkJL~NZC;=oVrYXQ`NWFhS6Q;9~F7kwm+;;ewldWNAj(N*IHhCdELi-eu$5~>AN!+Czf4|le=B~Vb^|m7{zMBa3>5-Wa5A(Pt*lD zj5|C@7w0f4JRPp1hY?ioM%eZBFtXf$4*ADzzjk`;>X0RD%NiNeg61TJ&oM)QT`Wd- zv3j(Tgzco&Zj$yM61fw1(p|f;4;}b8zx&aJD2CwRQ5?W9dT<&soWVg{z#)7O{rDN; zcmoOi8u#MQNa8vU3m=Y%avT-6;h1Q|ePSz)i*|fcMDc()fCohi4~d8HDRBZP#AEoh z7{TYn_wlf}h)2Xv@C8!-Q7wQkYI!)U6`@Tl!zqz=sYhBPV_PP{Z6f|@WCEp6%Svj2L&N44d z+sAQOUcFrBzzFxcB3znlXe~oNVf(C+@y`TJJzOV?gTdrM5jUF5pC^!`o^?!)I%~); zY(ItHu`St1-1--1wF7BjVuY>maRm8Xj3-#@pQKwy3HfWJ)Hg_>r%0Zs(SvW2D$kM@ zXE2E8a2(I$OLzfa!MCX8NlKrm#CN!QfwSKwpL=N6L3zm$56 zVQhAH=FWS3x++=SrrCf=6(D<^?t%Ojs3D7BwZcMTH8m@$>OezxD&EX z_^WO9c2BIzlUn6T$#*GK?(KJx52H}M%N8NSlTo4y0YQyFG6Cn<6v92tUuVD-#{3Qb zDtVKndW)I6RGh=KQ<6<6vO&17FEM!5h5`M89Z;E;`OKcZ& z#GN9S|Ld45?x)m)lzK@NiXU?B6|P+tC6lc|T*)K=N0RK!QI5O>5Wiwg+RiEw5U;2< zVDR4}Rc-=^2GV~&Q`QvC#4qcBDR$$iY7IWs8p@D2hCHt|gbSC?Up{}CZ3VP|Y!6G{ ON2B)}EkfUE==u*P&wwBR literal 0 HcmV?d00001 diff --git a/ghosts.gif b/ghosts.gif new file mode 100755 index 0000000000000000000000000000000000000000..010ec993e80ebfde6bd53bc2049de0b6a29f85ab GIT binary patch literal 3615 zcmeIz_fr!H76cXuY4%uEF{saOVs(fXXpEGuI+ z$1_`7nIp|pQ%vSmFLP>Yb93{rdH>Pmj`=N(?ClKntc_3zH4e5vLOE8rp%LB+>}X_b zXJ%yy#(?#2-UuLpBW{pXw@U>uK6gZdwHZd~>_1CC3yco?wJNz{=iT^?>_Zt7GXLraOK98yLvYCskPiZ;Wb>B#}c%(L+6^yRh+$f@7%^yl1(yGjk77nd6@-;>AJ=F=&~YoWyxIwfm4#SQv%@+Xp&8C7jU9tbTQHB zXKfvh7wQ}6^e3*(y^Rlp?aV-fG*IZ9v0u87`T}Ev!&dL7=^su!HJhXRF4KNf)0$nA zT-f?T`|wF;Px8uvA4;p|%c%-xjFY0Vkl&X^Wj(5;=S!*2%Y6pIJC`p?TvVKM`wCm^ z2cD+?DnVsqPXKVTzz}|=q#Cn)Xc}GSP7V*kOVv)1R`rR{ScVK6@3!TTVgs1+Vx_%K zDFf~g^0lvyYba}+b*Q|uWRTCz09bOs#db9}ol8{f6*aV#hhVggL+OOx4^l^eI!w< z(vB06clt9=M?LQc<(BJ`)!h~dlhHf|VSMHD{8!#y$ZbxvXPIiA=%pUZDkoasdqJbadHwq zB)B!Yroai>QdOuwC$W@nN@;@>>zBAdN^}|y6-u?*ixtY$hR_P-(D(1;DqA3*ODr3vr!%jlMc@Ph8ZL;KF8kL?V~ z#Odq~$y;UY4lApU?2f3wfP14NFpIsPL9>*-H|U=3y|Igr*!IU|OZE1Df!s;hf9t8H zq6xBcicOwyzG|a6Ve4`6rl^}+Y|?Ko(jwm`jkC9&zPldwBk{e@%9z%Bbk~cP8JRP} zdT)RV?Groi~1=2MF7vKi>m-GB@V0Y&X1X@X{@jYBU!CL znYwG;qqWy%69>L*&P0zR12WzWKfyH~_8p9rY4_I{1Vmw|VayJ6_aYIwx|WJS?Jg_L z9`*2$A(6e~!5Tl-#oeA|E`t1p1b(Lu7<%h{+P3LQ6%dlqH1zDF@(6-=iL%%vmK?{5o;HemG){c_ z!_b7OuJH03nR=Yb$QZSs)cSK)wOiGpqElO-y-gZiLUIwa(pw;aA|;dMfY#g>q%4K5 zXO3WJEo=L-PoqN8IZi8@DE7CdWoCsRmB?N^9OO&M4Jd~!jYFe`?%%g9(7omZyYtQ5 z`J+YQlNlG4z(bV#awwtW)7i5T2RJ8$Efu@xgG5JJcrREK506w!mq+2ejO~g>YY3`M zQFsr6U1<-e&v}0>b7DBKWD!`49)E|wc{{KCH&UI}yd*x#Hm_osQK!D+Vi7B!SNU?k zPK~Vum#~{#^+cmyMdZDC@~hmtb)?S=9etxQ+*b+-J$*ZU?v(yJgc#>}o$@Fj!jO+`hET6*k)J^YQCyU168vl4eI`LTJNaNSM+maEm}`Pb zQ^?mdS5_#{b{&*2)bzU{U!)q%D^FFXJdi6^C^3^OIo+QP$U(oF1LWZ@%qf-`LWFzR zNl!UIZbdMBL3mX-DXY0&oL8fvyE=#E;VUEvufp>3!PV+O#X%VTx=I2c z=Y6;iroM(4`5jvi&!#-6{YxhQ|1MJ(f5+}RjXq|q4SzhuYOmS=ba7YxQ>M9FFaVp1 zdud?nYAx+^>(XxY!}jfdno0+pdPIAE@DPW1(jgDqdU?DqW$=W>9zdkC|1Ze&n%#w4 ze5TBDUGFt`S6jO@NYa9qA=}g6E7LMGe83Pi82H1eBM)UdMW=+S>c z^)>88LBiJ>12PuX{zyKucQ#m~b305#HIW+uLHAj2{OfzkYFk8Hf7n z#`XIr9{Nw4f)U*LR2DRajf2vda3*b*U!Kqf%ts`cRa5(*2N)i$z}sBCU@oK7OWe`h zUcxh}oR`&fnIC?VU>m`*G@OyFzOgt><^VwNpm}%x8u=r~nH{f?PA*4_RD8nE1D9TP zF3Jg=8BLc#K7Oq;`xNXw6~>Pw9=wb?c#|eaX7POS66qWnCnkE!cyTA47n-JT-(I%< z09^+?QNM@e_?mthzd*-FsE|u={*CkVspdo`s(q%qnOm zR^etAP=fEkH7=^Lyy_m@c|JW5#i5L-k({%3#f2JP>dBHgUvayVw}u4GrZ$TJ!rS8MPXrB{ zL;U$$wq>f<2x!S|3z8JJd@0}@X8sT#Maipp$2fO>2aS()&8r;UKc~SKZIJ-YtLoNJ zLW;EGlE3HPeM(Y7$bC0Y8_K=+V6!4d`@ADyv`MrKsnj)$fwJewX4WV!`F>!a*=utE zH7HZ%UQ-HtacD-ZzWNF;!SQj$_X!|p%w%`UcbK2bu$j)u xF}&CY=OytM4eN+{f*8%sA;IBg$*;|mum@I`*R4hSANeagGy!nVCjbELe*gf#oGt(W literal 0 HcmV?d00001 diff --git a/lib/pacman.jar b/lib/pacman.jar new file mode 100755 index 0000000000000000000000000000000000000000..533ec81ffc4ecf2a82fd32695ef561fa4cccb794 GIT binary patch literal 30304 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 children = new ArrayList(); + + // Constructor + public Node () + { + // TODO Fill This + } + + private int[][] findGhosts (Room[][] Maze) + { + // TODO Fill This + } + + private int[][] findFlags (Room[][] Maze) + { + // TODO Fill This + } + + private boolean[] checkFlags (Room[][] Maze) + { + + // TODO Fill This + } + + private double evaluate () + { + + double evaluation = (200 * Math.random()) - 100; + return evaluation; + + } + +} diff --git a/src/gr/auth/ee/dsproject/pacman/Creature.java b/src/gr/auth/ee/dsproject/pacman/Creature.java new file mode 100755 index 0000000..b31979e --- /dev/null +++ b/src/gr/auth/ee/dsproject/pacman/Creature.java @@ -0,0 +1,289 @@ +package gr.auth.ee.dsproject.pacman; + +import gr.auth.ee.dsproject.node.Node; + +/** + *

+ * Title: DataStructures2011 + *

+ * + *

+ * Description: Data Structures project: year 2011-2012 + *

+ * + *

+ * Copyright: Copyright (c) 2011 + *

+ * + *

+ * Company: A.U.Th. + *

+ * + * @author Michael T. Tsapanos + * @version 1.0 + */ + +public class Creature implements gr.auth.ee.dsproject.pacman.AbstractCreature +{ + + public String getName () + { + return "Mine"; + } + + private int step = 1; + private boolean amPrey; + + public Creature (boolean isPrey) + { + amPrey = isPrey; + + } + + public int calculateNextPacmanPosition (Room[][] Maze, int[] currPosition) + { + // TODO Fill This + + return 0; + } + + void createSubTreePacman (int depth, Node parent, Room[][] Maze, int[] currPacmanPosition) + { + + // TODO Fill This + + } + + void createSubTreeGhosts (int depth, Node parent, Room[][] Maze, int[][] currGhostsPosition) + { + // TODO Fill This + } + + public int[] getPacPos (Room[][] Maze) + { + int[] pacmanPos = new int[2]; + for (int i = 0; i < PacmanUtilities.numberOfRows; i++) { + for (int j = 0; j < PacmanUtilities.numberOfColumns; j++) { + if (Maze[i][j].isPacman()) { + pacmanPos[0] = i; + pacmanPos[1] = j; + return pacmanPos; + } + } + } + return pacmanPos; + } + + public boolean[] comAvPos (Room[][] Maze, int[][] currentPos, int[] moves, int currentGhost) + { + + boolean[] availablePositions = { true, true, true, true }; + + int[][] newPos = new int[4][2]; + + for (int i = 0; i < 4; i++) { + + if (Maze[currentPos[currentGhost][0]][currentPos[currentGhost][1]].walls[i] == 0) { + availablePositions[i] = false; + continue; + } + + if (PacmanUtilities.flagColision(Maze, currentPos[currentGhost], i)) { + availablePositions[i] = false; + } + + else if (currentGhost == 0) + continue; + + else { + switch (i) { + case Room.WEST: + newPos[currentGhost][0] = currentPos[currentGhost][0]; + newPos[currentGhost][1] = currentPos[currentGhost][1] - 1; + break; + case Room.SOUTH: + newPos[currentGhost][0] = currentPos[currentGhost][0] + 1; + newPos[currentGhost][1] = currentPos[currentGhost][1]; + break; + case Room.EAST: + newPos[currentGhost][0] = currentPos[currentGhost][0]; + newPos[currentGhost][1] = currentPos[currentGhost][1] + 1; + break; + case Room.NORTH: + newPos[currentGhost][0] = currentPos[currentGhost][0] - 1; + newPos[currentGhost][1] = currentPos[currentGhost][1]; + + } + + for (int j = (currentGhost - 1); j > -1; j--) { + switch (moves[j]) { + case Room.WEST: + newPos[j][0] = currentPos[j][0]; + newPos[j][1] = currentPos[j][1] - 1; + break; + case Room.SOUTH: + newPos[j][0] = currentPos[j][0] + 1; + newPos[j][1] = currentPos[j][1]; + break; + case Room.EAST: + newPos[j][0] = currentPos[j][0]; + newPos[j][1] = currentPos[j][1] + 1; + break; + case Room.NORTH: + newPos[j][0] = currentPos[j][0] - 1; + newPos[j][1] = currentPos[j][1]; + // break; + } + + if ((newPos[currentGhost][0] == newPos[j][0]) && (newPos[currentGhost][1] == newPos[j][1])) { + + availablePositions[i] = false; + continue; + } + + if ((newPos[currentGhost][0] == currentPos[j][0]) && (newPos[currentGhost][1] == currentPos[j][1]) && (newPos[j][0] == currentPos[currentGhost][0]) + && (newPos[j][1] == currentPos[currentGhost][1])) { + + availablePositions[i] = false; + + } + } + } + } + + return availablePositions; + } + + public int comBestPos (boolean[] availablePositions, int[] pacmanPosition, int[] currentPos) + { + + int[] newVerticalDifference = new int[2]; + for (int i = 0; i < 2; i++) + newVerticalDifference[i] = currentPos[i] - pacmanPosition[i]; + + int[] distanceSquared = new int[4]; + + for (int i = 0; i < 4; i++) { + if (availablePositions[i] == true) { + + switch (i) { + case Room.WEST: + newVerticalDifference[1]--; + break; + case Room.SOUTH: + newVerticalDifference[0]++; + break; + case Room.EAST: + newVerticalDifference[1]++; + break; + case Room.NORTH: + newVerticalDifference[0]--; + break; + } + distanceSquared[i] = newVerticalDifference[0] * newVerticalDifference[0] + newVerticalDifference[1] * newVerticalDifference[1]; + } else + distanceSquared[i] = PacmanUtilities.numberOfRows * PacmanUtilities.numberOfRows + PacmanUtilities.numberOfColumns * PacmanUtilities.numberOfColumns + 1; + } + + int minDistance = distanceSquared[0]; + int minPosition = 0; + + for (int i = 1; i < 4; i++) { + if (minDistance > distanceSquared[i]) { + minDistance = distanceSquared[i]; + minPosition = i; + } + + } + + return minPosition; + } + + public int[] calculateNextGhostPosition (Room[][] Maze, int[][] currentPos) + { + + int[] moves = new int[PacmanUtilities.numberOfGhosts]; + + int[] pacmanPosition = new int[2]; + + pacmanPosition = getPacPos(Maze); + for (int i = 0; i < PacmanUtilities.numberOfGhosts; i++) { + moves[i] = comBestPos(comAvPos(Maze, currentPos, moves, i), pacmanPosition, currentPos[i]); + } + + return moves; + + } + + public boolean[] checkCollision (int[] moves, int[][] currentPos) + { + boolean[] collision = new boolean[PacmanUtilities.numberOfGhosts]; + + int[][] newPos = new int[4][2]; + + for (int i = 0; i < moves.length; i++) { + + if (moves[i] == 0) { + if (currentPos[i][1] > 0) { + newPos[i][0] = currentPos[i][0]; + newPos[i][1] = currentPos[i][1] - 1; + } else { + newPos[i][0] = currentPos[i][0]; + newPos[i][1] = PacmanUtilities.numberOfColumns - 1; + } + + } else if (moves[i] == 1) { + if (currentPos[i][0] < PacmanUtilities.numberOfRows - 1) { + newPos[i][0] = currentPos[i][0] + 1; + newPos[i][1] = currentPos[i][1]; + } else { + newPos[i][0] = 0; + newPos[i][1] = currentPos[i][1]; + } + } else if (moves[i] == 2) { + if (currentPos[i][1] < PacmanUtilities.numberOfColumns - 1) { + newPos[i][0] = currentPos[i][0]; + newPos[i][1] = currentPos[i][1] + 1; + } else { + newPos[i][0] = currentPos[i][0]; + newPos[i][1] = 0; + + } + } else { + if (currentPos[i][0] > 0) { + newPos[i][0] = currentPos[i][0] - 1; + newPos[i][1] = currentPos[i][1]; + } else { + + newPos[i][0] = PacmanUtilities.numberOfRows - 1; + newPos[i][1] = currentPos[i][1]; + + } + } + + collision[i] = false; + } + + for (int k = 0; k < moves.length; k++) { + + } + + for (int i = 0; i < moves.length; i++) { + for (int j = i + 1; j < moves.length; j++) { + if (newPos[i][0] == newPos[j][0] && newPos[i][1] == newPos[j][1]) { + + collision[j] = true; + } + + if (newPos[i][0] == currentPos[j][0] && newPos[i][1] == currentPos[j][1] && newPos[j][0] == currentPos[i][0] && newPos[j][1] == currentPos[i][1]) { + + collision[j] = true; + } + + } + + } + return collision; + } + +}