Index: code/branches/3DPacman_FS19/src/modules/pacman/Pacman.cc
===================================================================
--- code/branches/3DPacman_FS19/src/modules/pacman/Pacman.cc	(revision 12337)
+++ code/branches/3DPacman_FS19/src/modules/pacman/Pacman.cc	(revision 12338)
@@ -140,5 +140,5 @@
     //Check for collisions between to objects (compare float numbers)
     bool Pacman::collis(Vector3 one, Vector3 other){
-        if((abs(one.x-other.x)<10) && (abs(one.y-other.y)<10) && (abs(one.z-other.z)<10))
+        if((abs(one.x-other.x)<19) && (abs(one.y-other.y)<10) && (abs(one.z-other.z)<19))
             return true;
         return false;
Index: code/branches/3DPacman_FS19/src/modules/pacman/PacmanBrown.cc
===================================================================
--- code/branches/3DPacman_FS19/src/modules/pacman/PacmanBrown.cc	(revision 12337)
+++ code/branches/3DPacman_FS19/src/modules/pacman/PacmanBrown.cc	(revision 12338)
@@ -151,319 +151,4 @@
 
 
-        /*void PacmanBrown::findNeighboorPositions(Vector3 actuelposition, Vector3 adjacentPositions[], Vector3 positionArray[]){      
-            //this function should put in adjacentPosition[] the neighboors of lastPlayerPastPoint
-
-            if(findpos(actuelposition,possibleposition[0])){
-                
-
-                adjacentPositions[0]=positionArray[1]; //graphVertex(possibleposition[1]);  //need to do it everywhere !!!
-                adjacentPositions[1]=positionArray[17]; //graphVertex(possibleposition[17]);
-                adjacentPositions[2]=positionArray[19]; //graphVertex(possibleposition[19]); //maybe a vector would be more suitable ?
-            }
-            else if(findpos(actuelposition,possibleposition[1])){
-                adjacentPositions[0]=positionArray[0]; //graphVertex(possibleposition[0]);
-                adjacentPositions[1]=positionArray[2]; //graphVertex(possibleposition[2]);
-            }
-            else if(findpos(actuelposition,possibleposition[2])){
-                adjacentPositions[0]=positionArray[1]; //graphVertex(possibleposition[1]);
-                adjacentPositions[1]=positionArray[3]; //graphVertex(possibleposition[3]);
-            }
-            else if(findpos(actuelposition,possibleposition[3])){
-                adjacentPositions[0]=positionArray[2]; //graphVertex(possibleposition[2]);
-                adjacentPositions[1]=positionArray[4]; //graphVertex(possibleposition[4]);
-                adjacentPositions[2]=positionArray[5]; //graphVertex(possibleposition[5]);
-            }
-            else if(findpos(actuelposition,possibleposition[4])){
-                adjacentPositions[0]=positionArray[3]; //graphVertex(possibleposition[3]);
-                adjacentPositions[1]=positionArray[6]; //graphVertex(possibleposition[6]);
-            }
-            else if(findpos(actuelposition,possibleposition[5])){
-                adjacentPositions[0]=positionArray[3]; //graphVertex(possibleposition[3]);
-                adjacentPositions[1]=positionArray[7]; //graphVertex(possibleposition[7]);
-            }
-            else if(findpos(actuelposition,possibleposition[6])){
-                adjacentPositions[0]=positionArray[4]; //graphVertex(possibleposition[4]);
-                adjacentPositions[1]=positionArray[9]; //graphVertex(possibleposition[9]);
-                adjacentPositions[2]=positionArray[26]; //graphVertex(possibleposition[26]);
-            }
-            else if(findpos(actuelposition,possibleposition[7])){
-                adjacentPositions[0]=positionArray[5]; //graphVertex(possibleposition[5]);
-                adjacentPositions[1]=positionArray[8]; //graphVertex(possibleposition[8]);
-            }
-            else if(findpos(actuelposition,possibleposition[8])){
-                adjacentPositions[0]=positionArray[7]; //graphVertex(possibleposition[7]);
-                adjacentPositions[1]=positionArray[9]; //graphVertex(possibleposition[9]);
-            }
-            else if(findpos(actuelposition,possibleposition[9])){
-                adjacentPositions[0]=positionArray[6]; //graphVertex(possibleposition[6]);
-                adjacentPositions[1]=positionArray[8]; //graphVertex(possibleposition[8]);
-                adjacentPositions[2]=positionArray[10]; //graphVertex(possibleposition[10]);
-                adjacentPositions[3]=positionArray[38]; //graphVertex(possibleposition[38]);
-            }
-            else if(findpos(actuelposition,possibleposition[10])){
-                adjacentPositions[0]=positionArray[9]; //graphVertex(possibleposition[9]);
-                adjacentPositions[1]=positionArray[11]; //graphVertex(possibleposition[11]);
-                adjacentPositions[2]=positionArray[45]; //graphVertex(possibleposition[45]);
-            }
-            else if(findpos(actuelposition,possibleposition[11])){
-                adjacentPositions[0]=positionArray[10]; //graphVertex(possibleposition[10]);
-                adjacentPositions[1]=positionArray[12]; //graphVertex(possibleposition[12]);
-                adjacentPositions[2]=positionArray[13]; //graphVertex(possibleposition[13]);
-            }
-            else if(findpos(actuelposition,possibleposition[12])){
-                adjacentPositions[0]=positionArray[11]; //graphVertex(possibleposition[11]);
-                adjacentPositions[1]=positionArray[14]; //graphVertex(possibleposition[14]);
-            }
-            else if(findpos(actuelposition,possibleposition[13])){
-                adjacentPositions[0]=positionArray[11]; //graphVertex(possibleposition[11]);
-                adjacentPositions[1]=positionArray[14]; //graphVertex(possibleposition[14]);
-                adjacentPositions[2]=positionArray[16]; //graphVertex(possibleposition[16]);
-                adjacentPositions[3]=positionArray[61]; //graphVertex(possibleposition[61]);
-            }
-            else if(findpos(actuelposition,possibleposition[14])){
-                adjacentPositions[0]=positionArray[12]; //graphVertex(possibleposition[12]);
-                adjacentPositions[1]=positionArray[13]; //graphVertex(possibleposition[13]);
-                adjacentPositions[2]=positionArray[15]; //graphVertex(possibleposition[15]);
-            }
-            else if(findpos(actuelposition,possibleposition[15])){
-                adjacentPositions[0]=positionArray[14]; //graphVertex(possibleposition[14]);
-                adjacentPositions[1]=positionArray[16]; //graphVertex(possibleposition[16]);
-            }
-            else if(findpos(actuelposition,possibleposition[16])){
-                adjacentPositions[0]=positionArray[13]; //graphVertex(possibleposition[13]);
-                adjacentPositions[1]=positionArray[15]; //graphVertex(possibleposition[15]);
-                adjacentPositions[2]=positionArray[62]; //graphVertex(possibleposition[62]);
-            }
-            else if(findpos(actuelposition,possibleposition[17])){
-                adjacentPositions[0]=positionArray[0]; //graphVertex(possibleposition[0]);
-                adjacentPositions[1]=positionArray[25]; //graphVertex(possibleposition[25]);
-            }
-            else if(findpos(actuelposition,possibleposition[18])){
-                adjacentPositions[0]=positionArray[19]; //graphVertex(possibleposition[19]);
-                adjacentPositions[1]=positionArray[24]; //graphVertex(possibleposition[24]);                
-            }
-            else if(findpos(actuelposition,possibleposition[19])){
-                adjacentPositions[0]=positionArray[0]; //graphVertex(possibleposition[0]);
-                adjacentPositions[1]=positionArray[18]; //graphVertex(possibleposition[18]);
-                adjacentPositions[2]=positionArray[20]; //graphVertex(possibleposition[20]);
-                         }
-            else if(findpos(actuelposition,possibleposition[20])){
-                adjacentPositions[0]=positionArray[19]; //graphVertex(possibleposition[19]);
-                adjacentPositions[1]=positionArray[21]; //graphVertex(possibleposition[21]);
-                       }
-            else if(findpos(actuelposition,possibleposition[21])){
-                adjacentPositions[0]=positionArray[20]; //graphVertex(possibleposition[20]);
-                adjacentPositions[1]=positionArray[22]; //graphVertex(possibleposition[22]);
-                       }
-            else if(findpos(actuelposition,possibleposition[22])){
-                adjacentPositions[0]=positionArray[21]; //graphVertex(possibleposition[21]);
-                adjacentPositions[1]=positionArray[23]; //graphVertex(possibleposition[23]);
-                adjacentPositions[2]=positionArray[31]; //graphVertex(possibleposition[31]);
-                          }
-            else if(findpos(actuelposition,possibleposition[23])){
-                adjacentPositions[0]=positionArray[22]; //graphVertex(possibleposition[22]);
-                adjacentPositions[1]=positionArray[30]; //graphVertex(possibleposition[30]);
-                       }
-            else if(findpos(actuelposition,possibleposition[24])){
-                adjacentPositions[0]=positionArray[18]; //graphVertex(possibleposition[18]);
-                adjacentPositions[1]=positionArray[29]; //graphVertex(possibleposition[29]);
-                       }
-            else if(findpos(actuelposition,possibleposition[25])){
-                adjacentPositions[0]=positionArray[17]; //graphVertex(possibleposition[17]);
-                adjacentPositions[1]=positionArray[26]; //graphVertex(possibleposition[26]);
-                       }
-            else if(findpos(actuelposition,possibleposition[26])){
-                adjacentPositions[0]=positionArray[6]; //graphVertex(possibleposition[6]);
-                adjacentPositions[1]=positionArray[25]; //graphVertex(possibleposition[25]);
-                adjacentPositions[2]=positionArray[27]; //graphVertex(possibleposition[27]);
-                         }
-            else if(findpos(actuelposition,possibleposition[27])){
-                adjacentPositions[0]=positionArray[26]; //graphVertex(possibleposition[26]);
-                adjacentPositions[1]=positionArray[28]; //graphVertex(possibleposition[28]);
-                adjacentPositions[2]=positionArray[37]; //graphVertex(possibleposition[37]);
-                          }
-            else if(findpos(actuelposition,possibleposition[28])){
-                adjacentPositions[0]=positionArray[27]; //graphVertex(possibleposition[27]);
-                adjacentPositions[1]=positionArray[29]; //graphVertex(possibleposition[29]);
-                adjacentPositions[2]=positionArray[36]; //graphVertex(possibleposition[36]);
-                          }
-            else if(findpos(actuelposition,possibleposition[29])){
-                adjacentPositions[0]=positionArray[24]; //graphVertex(possibleposition[24]);
-                adjacentPositions[1]=positionArray[28]; //graphVertex(possibleposition[28]);
-                adjacentPositions[2]=positionArray[30]; //graphVertex(possibleposition[30]);
-                          }
-            else if(findpos(actuelposition,possibleposition[30])){
-                adjacentPositions[0]=positionArray[23]; //graphVertex(possibleposition[23]);
-                adjacentPositions[1]=positionArray[29]; //graphVertex(possibleposition[29]);
-                adjacentPositions[2]=positionArray[34]; //graphVertex(possibleposition[34]);
-                          }
-            else if(findpos(actuelposition,possibleposition[31])){
-                adjacentPositions[0]=positionArray[22]; //graphVertex(possibleposition[22]);
-                adjacentPositions[1]=positionArray[32]; //graphVertex(possibleposition[32]);
-                       }
-            else if(findpos(actuelposition,possibleposition[32])){
-                adjacentPositions[0]=positionArray[31]; //graphVertex(possibleposition[31]);
-                adjacentPositions[1]=positionArray[33]; //graphVertex(possibleposition[33]);
-                       }
-            else if(findpos(actuelposition,possibleposition[33])){
-                adjacentPositions[0]=positionArray[32]; //graphVertex(possibleposition[32]);
-                adjacentPositions[1]=positionArray[34]; //graphVertex(possibleposition[34]);
-                       }
-            else if(findpos(actuelposition,possibleposition[34])){
-                adjacentPositions[0]=positionArray[30]; //graphVertex(possibleposition[30]);
-                adjacentPositions[1]=positionArray[33]; //graphVertex(possibleposition[33]);
-                adjacentPositions[2]=positionArray[35]; //graphVertex(possibleposition[35]);
-                adjacentPositions[3]=positionArray[42]; //graphVertex(possibleposition[42]);
-                
-            }
-            else if(findpos(actuelposition,possibleposition[35])){
-                adjacentPositions[0]=positionArray[34]; //graphVertex(possibleposition[34]);
-                adjacentPositions[1]=positionArray[36]; //graphVertex(possibleposition[36]);
-                adjacentPositions[2]=positionArray[41]; //graphVertex(possibleposition[41]);
-                          }
-            else if(findpos(actuelposition,possibleposition[36])){
-                adjacentPositions[0]=positionArray[28]; //graphVertex(possibleposition[28]);
-                adjacentPositions[1]=positionArray[35]; //graphVertex(possibleposition[35]);
-                       }
-            else if(findpos(actuelposition,possibleposition[37])){
-                adjacentPositions[0]=positionArray[27]; //graphVertex(possibleposition[27]);
-                adjacentPositions[1]=positionArray[38]; //graphVertex(possibleposition[38]);
-                       }
-            else if(findpos(actuelposition,possibleposition[38])){
-                adjacentPositions[0]=positionArray[9]; //graphVertex(possibleposition[9]);
-                adjacentPositions[1]=positionArray[37]; //graphVertex(possibleposition[37]);
-                adjacentPositions[2]=positionArray[39]; //graphVertex(possibleposition[39]);
-                         }
-            else if(findpos(actuelposition,possibleposition[39])){
-                adjacentPositions[0]=positionArray[38]; //graphVertex(possibleposition[38]);
-                adjacentPositions[1]=positionArray[40]; //graphVertex(possibleposition[40]);
-                adjacentPositions[2]=positionArray[45]; //graphVertex(possibleposition[45]);
-                          }
-            else if(findpos(actuelposition,possibleposition[40])){
-                adjacentPositions[0]=positionArray[39]; //graphVertex(possibleposition[39]);
-                adjacentPositions[1]=positionArray[41]; //graphVertex(possibleposition[41]);
-            }
-            else if(findpos(actuelposition,possibleposition[41])){
-                adjacentPositions[0]=positionArray[35]; //graphVertex(possibleposition[35]);
-                adjacentPositions[1]=positionArray[43]; //graphVertex(possibleposition[43]);
-                       }
-            else if(findpos(actuelposition,possibleposition[42])){
-                adjacentPositions[0]=positionArray[34]; //graphVertex(possibleposition[34]);
-                adjacentPositions[1]=positionArray[43]; //graphVertex(possibleposition[43]);
-                adjacentPositions[2]=positionArray[54]; //graphVertex(possibleposition[54]);
-                          }
-            else if(findpos(actuelposition,possibleposition[43])){
-                adjacentPositions[0]=positionArray[41]; //graphVertex(possibleposition[41]);
-                adjacentPositions[1]=positionArray[46]; //graphVertex(possibleposition[46]);
-                       }
-            else if(findpos(actuelposition,possibleposition[44])){
-                adjacentPositions[0]=positionArray[40]; //graphVertex(possibleposition[40]);
-                adjacentPositions[1]=positionArray[66]; //graphVertex(possibleposition[66]);
-                       }
-            else if(findpos(actuelposition,possibleposition[45])){
-                adjacentPositions[0]=positionArray[10]; //graphVertex(possibleposition[10]);
-                adjacentPositions[1]=positionArray[39]; //graphVertex(possibleposition[39]);
-                adjacentPositions[2]=positionArray[49]; //graphVertex(possibleposition[49]);
-                          }
-            else if(findpos(actuelposition,possibleposition[46])){
-                adjacentPositions[0]=positionArray[43]; //graphVertex(possibleposition[43]);
-                adjacentPositions[1]=positionArray[47]; //graphVertex(possibleposition[47]);
-                       }
-            else if(findpos(actuelposition,possibleposition[47])){
-                adjacentPositions[0]=positionArray[46]; //graphVertex(possibleposition[46]);
-                adjacentPositions[1]=positionArray[52]; //graphVertex(possibleposition[52]);
-                adjacentPositions[2]=positionArray[66]; //graphVertex(possibleposition[66]);
-                          }
-            else if(findpos(actuelposition,possibleposition[48])){
-                adjacentPositions[0]=positionArray[49]; //graphVertex(possibleposition[49]);
-                adjacentPositions[1]=positionArray[51]; //graphVertex(possibleposition[51]);
-                adjacentPositions[2]=positionArray[66]; //graphVertex(possibleposition[66]);
-                          }
-            else if(findpos(actuelposition,possibleposition[49])){
-                adjacentPositions[0]=positionArray[45]; //graphVertex(possibleposition[45]);
-                adjacentPositions[1]=positionArray[48]; //graphVertex(possibleposition[48]);
-                       }
-            else if(findpos(actuelposition,possibleposition[50])){
-                adjacentPositions[0]=positionArray[51]; //graphVertex(possibleposition[51]);
-                adjacentPositions[1]=positionArray[61]; //graphVertex(possibleposition[61]);
-                       }
-            else if(findpos(actuelposition,possibleposition[51])){
-                adjacentPositions[0]=positionArray[48]; //graphVertex(possibleposition[48]);
-                adjacentPositions[1]=positionArray[50]; //graphVertex(possibleposition[50]);
-                       }
-            else if(findpos(actuelposition,possibleposition[52])){
-                adjacentPositions[0]=positionArray[47]; //graphVertex(possibleposition[47]);
-                adjacentPositions[1]=positionArray[53]; //graphVertex(possibleposition[53]);
-                       }
-            else if(findpos(actuelposition,possibleposition[53])){
-                adjacentPositions[0]=positionArray[52]; //graphVertex(possibleposition[52]);
-                adjacentPositions[1]=positionArray[58]; //graphVertex(possibleposition[58]);
-                       }
-            else if(findpos(actuelposition,possibleposition[54])){
-                adjacentPositions[0]=positionArray[42]; //graphVertex(possibleposition[42]);
-                adjacentPositions[1]=positionArray[55]; //graphVertex(possibleposition[55]);
-                adjacentPositions[2]=positionArray[57]; //graphVertex(possibleposition[57]);
-                          }
-            else if(findpos(actuelposition,possibleposition[55])){
-                adjacentPositions[0]=positionArray[54]; //graphVertex(possibleposition[54]);
-                adjacentPositions[1]=positionArray[56]; //graphVertex(possibleposition[56]);
-                       }
-            else if(findpos(actuelposition,possibleposition[56])){
-                adjacentPositions[0]=positionArray[55]; //graphVertex(possibleposition[55]);
-                adjacentPositions[1]=positionArray[57]; //graphVertex(possibleposition[57]);
-                adjacentPositions[2]=positionArray[65]; //graphVertex(possibleposition[65]);
-                          }
-            else if(findpos(actuelposition,possibleposition[57])){
-                adjacentPositions[0]=positionArray[54]; //graphVertex(possibleposition[54]);
-                adjacentPositions[1]=positionArray[56]; //graphVertex(possibleposition[56]);
-                adjacentPositions[2]=positionArray[58]; //graphVertex(possibleposition[58]);
-                adjacentPositions[3]=positionArray[64]; //graphVertex(possibleposition[64]);
-                
-            }
-            else if(findpos(actuelposition,possibleposition[58])){
-                adjacentPositions[0]=positionArray[53]; //graphVertex(possibleposition[53]);
-                adjacentPositions[1]=positionArray[57]; //graphVertex(possibleposition[57]);
-                adjacentPositions[2]=positionArray[59]; //graphVertex(possibleposition[59]);
-                          }
-            else if(findpos(actuelposition,possibleposition[59])){
-                adjacentPositions[0]=positionArray[58]; //graphVertex(possibleposition[58]);
-                adjacentPositions[1]=positionArray[59]; //graphVertex(possibleposition[59]);
-                adjacentPositions[2]=positionArray[63]; //graphVertex(possibleposition[63]);
-                          }
-            else if(findpos(actuelposition,possibleposition[60])){
-                adjacentPositions[0]=positionArray[59]; //graphVertex(possibleposition[59]);
-                adjacentPositions[1]=positionArray[61]; //graphVertex(possibleposition[61]);
-                adjacentPositions[2]=positionArray[62]; //graphVertex(possibleposition[62]);
-                          }
-            else if(findpos(actuelposition,possibleposition[61])){
-                adjacentPositions[0]=positionArray[13]; //graphVertex(possibleposition[13]);
-                adjacentPositions[1]=positionArray[50]; //graphVertex(possibleposition[50]);
-                adjacentPositions[2]=positionArray[60]; //graphVertex(possibleposition[60]);
-                          }
-            else if(findpos(actuelposition,possibleposition[62])){
-                adjacentPositions[0]=positionArray[16]; //graphVertex(possibleposition[16]);
-                adjacentPositions[1]=positionArray[60]; //graphVertex(possibleposition[60]);
-                       }
-            else if(findpos(actuelposition,possibleposition[63])){
-                adjacentPositions[0]=positionArray[59]; //graphVertex(possibleposition[59]);
-                adjacentPositions[1]=positionArray[64]; //graphVertex(possibleposition[64]);
-                       }
-            else if(findpos(actuelposition,possibleposition[64])){
-                adjacentPositions[0]=positionArray[57]; //graphVertex(possibleposition[57]);
-                adjacentPositions[1]=positionArray[63]; //graphVertex(possibleposition[63]);
-                adjacentPositions[2]=positionArray[65]; //graphVertex(possibleposition[65]);
-                          }
-            else if(findpos(actuelposition,possibleposition[65])){
-                adjacentPositions[0]=positionArray[56]; //graphVertex(possibleposition[56]);
-                adjacentPositions[1]=positionArray[64]; //graphVertex(possibleposition[64]);
-                       }
-            else if(findpos(actuelposition,possibleposition[66])){
-                adjacentPositions[0]=positionArray[47]; //graphVertex(possibleposition[47]);
-                adjacentPositions[1]=positionArray[48]; //graphVertex(possibleposition[48]);
-                       }
-    }*/
-
-
-
 }
 
Index: code/branches/3DPacman_FS19/src/modules/pacman/PacmanGhost.cc
===================================================================
--- code/branches/3DPacman_FS19/src/modules/pacman/PacmanGhost.cc	(revision 12337)
+++ code/branches/3DPacman_FS19/src/modules/pacman/PacmanGhost.cc	(revision 12338)
@@ -32,1524 +32,1073 @@
 #include "BulletDynamics/Dynamics/btRigidBody.h"
 
+#include <vector>
+
 namespace orxonox
 {
 
 
-    struct PacmanGhost::graphVertex {
-
-        public:
-
-            Vector3 position;
-            graphVertex *adjacentVertices[4]; //neighbooring vertices
-
-            //would a vector of vector storing the neighboors not be more suitable ?
-
-            int shortestDistanceToStart; //actual shortest distance to start point
-            graphVertex* actuelPredecessor; //the predecessor giving the for now shortest 
-                                            //path to start
-            graphVertex* currentNearestNonVisitedNeighboor; 
-            bool alreadyVisited;
-            graphVertex(){ //default constructor
-                position=0;
-                shortestDistanceToStart= std::numeric_limits<int>::max();
-                actuelPredecessor=nullptr;
-                alreadyVisited=false;
-                for(int kl =0; kl <4;kl++){
-                    adjacentVertices[kl]=nullptr;  //first put all position in array listing neighboors to 0
-                }
+	struct PacmanGhost::graphVertex {
+
+		public:
+
+			Vector3 position;
+			graphVertex *adjacentVertices[4]; //neighbooring vertices
+
+			//would a vector of vector storing the neighboors not be more suitable ?
+
+			int shortestDistanceToStart; //actual shortest distance to start point
+			graphVertex* actuelPredecessor; //the predecessor giving the for now shortest 
+			//path to start
+			graphVertex* currentNearestNonVisitedNeighboor; 
+			bool alreadyVisited;
+			graphVertex(){ //default constructor
+				position=0;
+				shortestDistanceToStart= std::numeric_limits<int>::max();
+				actuelPredecessor=nullptr;
+				alreadyVisited=false;
+				for(int kl =0; kl <4;kl++){
+					adjacentVertices[kl]=nullptr;  //first put all position in array listing neighboors to 0
+				}
+			}
+			graphVertex(Vector3 wantedPosition){  //normal constructor
+				position=wantedPosition;
+				shortestDistanceToStart= std::numeric_limits<int>::max(); //default distance is infinity
+				actuelPredecessor=nullptr;
+				alreadyVisited=false;
+				for(int kl =0; kl <4;kl++){
+					adjacentVertices[kl]=nullptr;  //first put all position in array listing neighboors to 0
+				}
+			}
+			graphVertex& operator = (const graphVertex &rightSide){
+				this->position=rightSide.position;
+				this->shortestDistanceToStart=rightSide.shortestDistanceToStart;
+				this->actuelPredecessor=rightSide.actuelPredecessor;
+				this->currentNearestNonVisitedNeighboor=rightSide.currentNearestNonVisitedNeighboor;
+				this->alreadyVisited=rightSide.alreadyVisited;
+
+				return *this;
+			}
+
+	};
+
+
+	static PacmanGhost::graphVertex listOfVertices[67];
+
+	//Check if there is a collision
+	bool findpos(Vector3 one, Vector3 other){
+		if((abs(one.x - other.x)<0.5) && (abs(one.y - other.y)<0.5) && (abs(one.z - other.z)<0.5)) return true;
+		return false;
+	}
+
+	//All positions in the map, see documentation
+	Vector3 possibleposition[67] = {Vector3(20,10,245),Vector3(215,10,245),Vector3(215,10,195),Vector3(185,10,195),Vector3(135,10,195), //0-4
+		Vector3(185,10,150),Vector3(135,10,150),Vector3(215,10,150),Vector3(215,10,105),Vector3(135,10,105), //5-9
+		Vector3(135,10,15),Vector3(135,10,-85),Vector3(215,10,-85),Vector3(135,10,-135),Vector3(215,10,-135), //10-14
+		Vector3(215,10,-195),Vector3(135,10,-195),Vector3(20,10,195),Vector3(-20,10,195),Vector3(-20,10,245), //15-19
+		Vector3(-215,10,245),Vector3(-215,10,195),Vector3(-185,10,195),Vector3(-135,10,195),Vector3(-70,10,195), //20-24
+		Vector3(70,10,195),Vector3(70,10,150),Vector3(20,10,150),Vector3(-20,10,150),Vector3(-70,10,150), //25-29
+		Vector3(-135,10,150),Vector3(-185,10,150),Vector3(-215,10,150),Vector3(-215,10,105),Vector3(-135,10,105), //30-34
+		Vector3(-70,10,105),Vector3(-20,10,105),Vector3(20,10,105),Vector3(70,10,105),Vector3(70,10,60), //35-39
+		Vector3(0,10,60),Vector3(-70,10,60),Vector3(-135,10,15),Vector3(-70,10,60),Vector3(0,10,15), //40-44
+		Vector3(70,10,15),Vector3(-70,10,-35),Vector3(-20,10,-35),Vector3(20,10,-35),Vector3(70,10,-35), //45-49
+		Vector3(70,10,-85),Vector3(20,10,-85),Vector3(-20,10,-85),Vector3(-70,10,-85),Vector3(-135,10,-85), //50-54
+		Vector3(-215,10,-85),Vector3(-215,10,-135),Vector3(-135,10,-135),Vector3(-70,10,-135),Vector3(-20,10,-135), //55-59
+		Vector3(20,10,-135),Vector3(70,10,-135),Vector3(20,10,-195),Vector3(-20,10,-195),Vector3(-135,10,-195), //60-64
+		Vector3(-215,10,-195),Vector3(0,10,-35)}; //65-66
+
+	RegisterClass(PacmanGhost);
+
+	/**
+	  @brief
+	  Constructor. Registers the object and initializes some default values.
+	  @param creator
+	  The creator of this object.
+	  */
+	PacmanGhost::PacmanGhost(Context* context) : ControllableEntity(context)
+	{
+		RegisterObject(PacmanGhost);
+
+		this->velocity = Vector3(0, 0, 0);
+
+		this->setCollisionType(CollisionType::Dynamic);
+
+		this->actuelposition = this->getPosition();
+
+		if(findpos(actuelposition, Vector3(0,-20,0)))
+			dontmove = true;
+
+		this->target_x = actuelposition.x;
+		this->target_z = actuelposition.z; 
+
+	}
+
+	/**
+	  @brief
+	  Destructor. Destroys ghost, if present.
+	  */
+	PacmanGhost::~PacmanGhost()
+	{
+		// Deletes the controller if the object was initialized and the pointer to the controller is not nullptr.
+	}
+
+	/**
+	  @brief
+	  Method for creating a ghost through XML.
+	  */
+	void PacmanGhost::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+	{
+		SUPER(PacmanGhost, XMLPort, xmlelement, mode);
+	}
+
+	//Change this with other ghost
+	void PacmanGhost::changewith(PacmanGhost* otherghost){
+
+		while(lockmove){};
+		lockmove = true;    //Prevent change of target while ghost is changed
+
+		otherghost->setPosition(this->getPosition());
+		this->setPosition(0,-20,0);
+		otherghost->target_x = this->target_x;   
+		otherghost->target_z = this->target_z;
+		otherghost->ismoving = this->ismoving;
+
+		this->dontmove = true;
+		otherghost->dontmove = false;
+
+		lockmove = false;
+	}
+
+	//Move ghost with rotation
+	void PacmanGhost::move(float dt, Vector3 actuelposition, Vector3 velocity){
+		if(!dontmove){
+			this->setPosition(Vector3(actuelposition.x+speed*velocity.x*dt,10,actuelposition.z+speed*velocity.z*dt));
+
+			//Rotate ghost in the direction of movement 
+			if((abs(abs(velocity.x)-1)<0.1) && (abs(velocity.z-0)<0.1)){
+				if(velocity.x<0){
+					this->setOrientation(Quaternion(Radian(-1.57), Vector3(0, 1, 0)));  
+				}
+				else{
+					this->setOrientation(Quaternion(Radian(1.57), Vector3(0, 1, 0)));  
+				}
+			}
+			if((abs(abs(velocity.z)-1)<0.1) && (abs(velocity.x-0)<0.1)){
+				if(velocity.z<0){
+					this->setOrientation(Quaternion(Radian(3.14), Vector3(0, 1, 0)));  
+				}
+				else{
+					this->setOrientation(Quaternion(Radian(0), Vector3(0, 1, 0)));  
+				}
+			}
+
+		}
+	}
+
+	//Change ability to move
+	void PacmanGhost::changemovability(){
+		if(dontmove){
+			dontmove = false;}
+		else{
+			dontmove = true;   
+		}
+	}
+
+	//ResetGhost
+	void PacmanGhost::resetGhost(){
+
+		this->setPosition(this->resetposition);
+		this->ismoving = false;
+		this->actuelposition = this->getPosition();
+
+		this->target_x = actuelposition.x;
+		this->target_z = actuelposition.z;
+
+	}
+
+	//Increase speed of ghosts
+	void PacmanGhost::levelupvelo(){
+		speed ++;
+	}
+
+	Vector3 PacmanGhost::getPlayerPos()
+	{
+		for (PacmanGelb* player : ObjectList<PacmanGelb>())
+		{
+			return player->getWorldPosition();
+		}
+		//std::cout<<"bug ??"<<endl;
+		return Vector3(0,0,0); //default, should not be used
+
+	}
+
+
+	bool PacmanGhost::jeanfindpos(Vector3 one, Vector3 other){
+		if((abs(one.x - other.x)<15) && (abs(one.y - other.y)<15) && (abs(one.z - other.z)<15)) return true;
+		return false;
+	}
+
+	void PacmanGhost::setNewTargetGhost(Vector3 goalToGo){
+
+		this->target_x = goalToGo.x;
+		this->target_z = goalToGo.z; 
+		this->ismoving = true;
+	}
+
+
+	///
+	//// getShortestPath   /////////
+	///
+
+
+
+	Vector3 PacmanGhost::getShortestPath(Vector3 start, Vector3 goal, Vector3 pointToAvoidP1){
+		//this function should then somehow produce the algorithm and call all other functions
+		//and finally return the best neighboor of the actual position of the pacman
+
+		//(optional parameter) pointToAvoidP1 is a point that cannot be considered
+
+
+		graphVertex listOfVerticesM[67]; //our list of all possible graphs
+		graphVertex* actualVertex; //we will walk through the array with a pointer
+
+        //vector<graphVertex> listOfVertices;
+
+
+		if(start==goal){ // basic case
+			return start; 
+		}
+
+		for(int an=0; an < 67; an++){
+			listOfVerticesM[an]= graphVertex(possibleposition[an]); //same position order as in other file
+            //listOfVertices.at(an) = graphVertex(possibleposition[an]);
+
+			if(start==possibleposition[an]){
+				actualVertex= &listOfVerticesM[an]; //our pointer points to the graph with position start in array
+				//cout<<an<<endl;
+			}
+		}
+
+		//graphVertex actualVertex= listOfVerticesM[an];
+
+		actualVertex->alreadyVisited=true; //our start point is now visited
+		actualVertex->shortestDistanceToStart=0; //At our start point, distance from start is 0
+		findNeighboorVertices(actualVertex->position, actualVertex->adjacentVertices, listOfVerticesM); 
+		// second parameter is an array ! //third is our global array
+
+		while(actualVertex->position!=goal){
+			for(int h=0;h < 4; h++){
+				if(actualVertex->adjacentVertices[h]!=nullptr){ //check all neighboors of our current graphVertex
+
+					//h=2 and 3 never reached
+					updateShortestDistanceToStart(*actualVertex, *actualVertex->adjacentVertices[h]);
+				} //we "update" the neighboors of our new visited vertex
+
+			}
+
+            if(actualVertex==nullptr){
+                std::cout<<"Ornopdpde"<<endl;
             }
-            graphVertex(Vector3 wantedPosition){  //normal constructor
-                position=wantedPosition;
-                shortestDistanceToStart= std::numeric_limits<int>::max(); //default distance is infinity
-                actuelPredecessor=nullptr;
-                alreadyVisited=false;
-                for(int kl =0; kl <4;kl++){
-                    adjacentVertices[kl]=nullptr;  //first put all position in array listing neighboors to 0
-                }
-            }
-            graphVertex& operator = (const graphVertex &rightSide){
-            this->position=rightSide.position;
-    this->shortestDistanceToStart=rightSide.shortestDistanceToStart;
-            this->actuelPredecessor=rightSide.actuelPredecessor;
-    this->currentNearestNonVisitedNeighboor=rightSide.currentNearestNonVisitedNeighboor;
-    this->alreadyVisited=rightSide.alreadyVisited;
-    
-            return *this;
-        }
-
-        };
-
-
-    static PacmanGhost::graphVertex listOfVertices[67];
-
-    //Check if there is a collision
-        bool findpos(Vector3 one, Vector3 other){
-       if((abs(one.x - other.x)<0.5) && (abs(one.y - other.y)<0.5) && (abs(one.z - other.z)<0.5)) return true;
-        return false;
-        }
-
-    //All positions in the map, see documentation
-     Vector3 possibleposition[67] = {Vector3(20,10,245),Vector3(215,10,245),Vector3(215,10,195),Vector3(185,10,195),Vector3(135,10,195), //0-4
-        Vector3(185,10,150),Vector3(135,10,150),Vector3(215,10,150),Vector3(215,10,105),Vector3(135,10,105), //5-9
-        Vector3(135,10,15),Vector3(135,10,-85),Vector3(215,10,-85),Vector3(135,10,-135),Vector3(215,10,-135), //10-14
-        Vector3(215,10,-195),Vector3(135,10,-195),Vector3(20,10,195),Vector3(-20,10,195),Vector3(-20,10,245), //15-19
-        Vector3(-215,10,245),Vector3(-215,10,195),Vector3(-185,10,195),Vector3(-135,10,195),Vector3(-70,10,195), //20-24
-        Vector3(70,10,195),Vector3(70,10,150),Vector3(20,10,150),Vector3(-20,10,150),Vector3(-70,10,150), //25-29
-        Vector3(-135,10,150),Vector3(-185,10,150),Vector3(-215,10,150),Vector3(-215,10,105),Vector3(-135,10,105), //30-34
-        Vector3(-70,10,105),Vector3(-20,10,105),Vector3(20,10,105),Vector3(70,10,105),Vector3(70,10,60), //35-39
-        Vector3(0,10,60),Vector3(-70,10,60),Vector3(-135,10,15),Vector3(-70,10,60),Vector3(0,10,15), //40-44
-        Vector3(70,10,15),Vector3(-70,10,-35),Vector3(-20,10,-35),Vector3(20,10,-35),Vector3(70,10,-35), //45-49
-        Vector3(70,10,-85),Vector3(20,10,-85),Vector3(-20,10,-85),Vector3(-70,10,-85),Vector3(-135,10,-85), //50-54
-        Vector3(-215,10,-85),Vector3(-215,10,-135),Vector3(-135,10,-135),Vector3(-70,10,-135),Vector3(-20,10,-135), //55-59
-        Vector3(20,10,-135),Vector3(70,10,-135),Vector3(20,10,-195),Vector3(-20,10,-195),Vector3(-135,10,-195), //60-64
-        Vector3(-215,10,-195),Vector3(0,10,-35)}; //65-66
-
-    RegisterClass(PacmanGhost);
-
-    /**
-    @brief
-        Constructor. Registers the object and initializes some default values.
-    @param creator
-        The creator of this object.
-    */
-    PacmanGhost::PacmanGhost(Context* context) : ControllableEntity(context)
-    {
-        RegisterObject(PacmanGhost);
-
-        //this->pathAlgorithm = new GetShortestPathAlgorithm;
-
-
-        this->velocity = Vector3(0, 0, 0);
-
-        this->setCollisionType(CollisionType::Dynamic);
-        
-        this->actuelposition = this->getPosition();
-
-        if(findpos(actuelposition, Vector3(0,-20,0)))
-            dontmove = true;
-        
-        this->target_x = actuelposition.x;
-        this->target_z = actuelposition.z; 
-
-        //this->lastPlayerPassedPoint=Vector3(185,10,150); //no idea what to put
-
-    }
-
-    /**
-    @brief
-        Destructor. Destroys ghost, if present.
-    */
-    PacmanGhost::~PacmanGhost()
-    {
-        // Deletes the controller if the object was initialized and the pointer to the controller is not nullptr.
-    }
-
-    /**
-    @brief
-        Method for creating a ghost through XML.
-    */
-     void PacmanGhost::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(PacmanGhost, XMLPort, xmlelement, mode);
-    }
-
-    //Change this with other ghost
-    void PacmanGhost::changewith(PacmanGhost* otherghost){
-
-        while(lockmove){};
-        lockmove = true;    //Prevent change of target while ghost is changed
-
-        otherghost->setPosition(this->getPosition());
-        this->setPosition(0,-20,0);
-        otherghost->target_x = this->target_x;   
-        otherghost->target_z = this->target_z;
-        otherghost->ismoving = this->ismoving;
-
-        this->dontmove = true;
-        otherghost->dontmove = false;
-
-        lockmove = false;
-    }
-
-    //Move ghost with rotation
-    void PacmanGhost::move(float dt, Vector3 actuelposition, Vector3 velocity){
-        if(!dontmove){
-            this->setPosition(Vector3(actuelposition.x+speed*velocity.x*dt,10,actuelposition.z+speed*velocity.z*dt));
-        
-        //Rotate ghost in the direction of movement 
-        if((abs(abs(velocity.x)-1)<0.1) && (abs(velocity.z-0)<0.1)){
-            if(velocity.x<0){
-                 this->setOrientation(Quaternion(Radian(-1.57), Vector3(0, 1, 0)));  
-            }
-            else{
-                 this->setOrientation(Quaternion(Radian(1.57), Vector3(0, 1, 0)));  
-            }
-        }
-        if((abs(abs(velocity.z)-1)<0.1) && (abs(velocity.x-0)<0.1)){
-            if(velocity.z<0){
-                 this->setOrientation(Quaternion(Radian(3.14), Vector3(0, 1, 0)));  
-            }
-            else{
-                 this->setOrientation(Quaternion(Radian(0), Vector3(0, 1, 0)));  
-            }
-        }
-                     
-     }
-    }
-
-    //Change ability to move
-    void PacmanGhost::changemovability(){
-        if(dontmove){
-         dontmove = false;}
-        else{
-         dontmove = true;   
-        }
-    }
-
-    //ResetGhost
-    void PacmanGhost::resetGhost(){
-    
-        this->setPosition(this->resetposition);
-        this->ismoving = false;
-        this->actuelposition = this->getPosition();
-        
-        this->target_x = actuelposition.x;
-        this->target_z = actuelposition.z;
-    
-    }
-
-    //Increase speed of ghosts
-    void PacmanGhost::levelupvelo(){
-        speed ++;
-    }
-
-    Vector3 PacmanGhost::getPlayerPos()
-    {
-        for (PacmanGelb* player : ObjectList<PacmanGelb>())
-        {
-            return player->getWorldPosition();
-        }
-        //std::cout<<"bug ??"<<endl;
-        return Vector3(0,0,0); //default, should not be used
-    
-    }
-
-
-    bool PacmanGhost::jeanfindpos(Vector3 one, Vector3 other){
-       if((abs(one.x - other.x)<15) && (abs(one.y - other.y)<15) && (abs(one.z - other.z)<15)) return true;
-        return false;
-        }
-
-    void PacmanGhost::setNewTargetGhost(Vector3 goalToGo){
-
-                    this->target_x = goalToGo.x;
-                    this->target_z = goalToGo.z; 
-                    this->ismoving = true;
-    }
-
-
-    ///
-    //// getShortestPath   /////////
-    ///
-
-        
-        
-    Vector3 PacmanGhost::getShortestPath(Vector3 start, Vector3 goal, Vector3 pointToAvoidP1){
-        //this function should then somehow produce the algorithm and call all other functions
-        //and finally return the best neighboor of the actual position of the pacman
-        
-    //(optional parameter) pointToAvoidP1 is a point that cannot be considered
-        
-
-    graphVertex listOfVerticesM[67]; //our list of all possible graphs
-    graphVertex* actualVertex; //we will walk through the array with a pointer
-    
-        if(start==goal){ // basic case
-            return start; 
-        }
-
-        for(int an=0; an < 67; an++){
-      listOfVerticesM[an]= graphVertex(possibleposition[an]); //same position order as in other file
-    if(start==possibleposition[an]){
-     actualVertex= &listOfVerticesM[an]; //our pointer points to the graph with position start in array
-    //cout<<an<<endl;
-        }
-        }
-
-        //graphVertex actualVertex= listOfVerticesM[an];
-
-        actualVertex->alreadyVisited=true; //our start point is now visited
-        actualVertex->shortestDistanceToStart=0; //At our start point, distance from start is 0
-        findNeighboorVertices(actualVertex->position, actualVertex->adjacentVertices, listOfVerticesM); 
-        // second parameter is an array ! //third is our global array
-
-        while(actualVertex->position!=goal){
-            for(int h=0;h < 4; h++){
-                if(actualVertex->adjacentVertices[h]!=nullptr){ //check all neighboors of our current graphVertex
- 
-         //h=2 and 3 never reached
-                    updateShortestDistanceToStart(*actualVertex, *actualVertex->adjacentVertices[h]);
-                } //we "update" the neighboors of our new visited vertex
-        
-            }
-            
-            actualVertex=findNextVertexToConsider(listOfVerticesM, pointToAvoidP1);
-            actualVertex->alreadyVisited=true;
-    //cout<<actualVertex->position<<endl;
-            if(actualVertex->position!=goal){
-                findNeighboorVertices(actualVertex->position, actualVertex->adjacentVertices, listOfVerticesM); 
-                //we find the neighboors of our new visited vertex
-                }
-        }
-
-    //cout<<"meuejeeke"<<endl; never reached
-
-        //we should have reached our goal at this point
-
-        while(actualVertex->actuelPredecessor->actuelPredecessor!=nullptr){ //the predecessor of our predecessor
-            actualVertex=actualVertex->actuelPredecessor;
-        }
-        // the predecessor is our starting point, in other words we are now on an
-        //adjacent vertex of the start
-
-        return actualVertex->position; //we return the position of this - adjacent to start - vertex
-    }
-
-//end of getShortestPath
-
-
-    int PacmanGhost::graphDistance(Vector3 start, Vector3 goal){
-    //cout<<hgj++<<endl;
-        Vector3 differenceVector= Vector3(abs(goal.x-start.x), 0,abs(goal.z-start.z));
-
-        return differenceVector.x+differenceVector.z;
-    }
-
-    void PacmanGhost::updateShortestDistanceToStart(graphVertex &vertex, graphVertex &neighboor){
-        //apply this method to all non visited neighboors of a vertex.
-        // This method should always be run on a vertex after we marked it as visited.
-        if(neighboor.alreadyVisited==false){ //we only consider non visited neighboors.
-            if((vertex.shortestDistanceToStart!=std::numeric_limits<int>::max())&&
-        (neighboor.shortestDistanceToStart > vertex.shortestDistanceToStart + 
-                graphDistance(vertex.position, neighboor.position))){ //need to consider overflow case !
-        
-                neighboor.shortestDistanceToStart= vertex.shortestDistanceToStart + 
-                graphDistance(vertex.position, neighboor.position);
-                neighboor.actuelPredecessor = &vertex;
-            }
-        }
-    }
-
-    void PacmanGhost::findNearestNonVisitedNeighboor (graphVertex &vertex, Vector3 pointToAvoidP3){ 
-            //find nearest non visited neighboor of a given already visited vertex
-    //(optional parameter) pointToAvoidP3 is a point that cannot be considered
-        int shortestDistance = -1;
-        graphVertex* nearestNonVisitedNeighboor=nullptr;//=graphVertex(); //by default there is not any.
-        //Also, if all neighboors are already visited, we return NULL, i.e. there is no
-        //nearest non visited neighboor.
-        for(int i=0; i < 4; i++){
-            if((vertex.adjacentVertices[i]!=nullptr)&&(vertex.adjacentVertices[i]->alreadyVisited==false)&&(vertex.adjacentVertices[i]->position!=pointToAvoidP3)){
-                if(shortestDistance==-1){   //(concerns line above) we want a non visited neighboor //(optional) if the position of the neighboor is the one we want
-    //to avoid, then we ignore it
-
-                    shortestDistance= graphDistance(vertex.position, vertex.adjacentVertices[i]->position);
-                    nearestNonVisitedNeighboor=vertex.adjacentVertices[i]; //warning, both sides are pointer adresses !
-    //cout<<shortestDistance<<endl;
-                }
-                else if(graphDistance(vertex.position, vertex.adjacentVertices[i]->position)<shortestDistance){
-                    shortestDistance= graphDistance(vertex.position, vertex.adjacentVertices[i]->position);
-                    nearestNonVisitedNeighboor=vertex.adjacentVertices[i]; //warning, both sides are pointer adresses !
-        //cout<<(hgj++)%4<<endl;
-                }
-            }
-        }
-        vertex.currentNearestNonVisitedNeighboor = nearestNonVisitedNeighboor; //warning, both sides are pointer adresses !
-    //cout<<hgj++<<endl;
-    }
-
-
-    PacmanGhost::graphVertex* PacmanGhost::findNextVertexToConsider(graphVertex listOfVerticesP[], Vector3 pointToAvoidP2){ //find next, nearest from start, non visited vertex in our listOfVertices array
-    //(optional parameter) pointToAvoidP2 is a point that cannot be considered
-
-        int shortestDistance = -1;
-        graphVertex* nextVertexToConsider;
-
-        for(int i=0; i < 67; i++){ //we loop over all possible positions 
-
-            if(listOfVerticesP[i].alreadyVisited==true){ //vertex should already be visited 
-
-                findNearestNonVisitedNeighboor(listOfVerticesP[i], pointToAvoidP2); //we update nearest neighboor
-                //of all visited vertices given that one of the nearest neighboor of a visited
-                // vertex is now also visited because it was chosen as next optimal vertex
-
-                if(listOfVerticesP[i].currentNearestNonVisitedNeighboor!=nullptr){ //we want a candidate!
-                if(shortestDistance==-1){ //our first possible candidate
-
-            shortestDistance=graphDistance(listOfVerticesP[i].position, 
-            listOfVerticesP[i].currentNearestNonVisitedNeighboor->position) + 
-            listOfVerticesP[i].shortestDistanceToStart;
-
-            nextVertexToConsider=listOfVerticesP[i].currentNearestNonVisitedNeighboor;
-    //adress of nextVertexToConsider is that of pointer currentNearestNonVisitedNeighboor
-
-                }
-                else if(shortestDistance > graphDistance(listOfVerticesP[i].position, 
-                listOfVerticesP[i].currentNearestNonVisitedNeighboor->position) + 
-                    listOfVerticesP[i].shortestDistanceToStart){//if better candidate than our first candidate available
-
-            shortestDistance=graphDistance(listOfVerticesP[i].position, 
-            listOfVerticesP[i].currentNearestNonVisitedNeighboor->position) + 
-            listOfVerticesP[i].shortestDistanceToStart;
-
-            nextVertexToConsider=listOfVerticesP[i].currentNearestNonVisitedNeighboor;
-    //we dont need the & because we are not giving the adress of the array element 
-    //listOfVerticesP[i] but that of the pointer currentNearestNonVisitedNeighboor
-                    }
-                }
-            }
-            //we want after all to return the nearest non visited neighboor
-        }
-
-        return nextVertexToConsider; //returns adress nextVertexToConsider is pointing to in array
-    }
-
-    //////////////////////////////////////////////////////////////////////////////////////////////
-
-    //if vertex already visited, call function on it and reapeat until you reach non visited vertex
-    // ---> not sure if a good idea because we risk infinite loop
-
-    //-215 -185 -135 -70 -20 0 20 70 135 185 215 
-
-    //-195 -135 -85 -35 15 60 105 150 195 245
-
-    void PacmanGhost::findNeighboorVertices(Vector3 actuelposition, graphVertex* adjacentVertices[], graphVertex listOfVerticesP2[]){      
-
-
-            if(findpos(actuelposition,possibleposition[0])){
-                // we should use listOfVerticesP2[i] instead of possibleposition[i] I think
-                // so that all neighboors are "the same"
-                adjacentVertices[0]=&listOfVerticesP2[1]; //graphVertex(possibleposition[1]);  //need to do it everywhere !!!
-                adjacentVertices[1]=&listOfVerticesP2[17]; //graphVertex(possibleposition[17]);
-                adjacentVertices[2]=&listOfVerticesP2[19]; //graphVertex(possibleposition[19]); //maybe a vector would be more suitable ?
-            }
-            else if(findpos(actuelposition,possibleposition[1])){
-                adjacentVertices[0]=&listOfVerticesP2[0]; //graphVertex(possibleposition[0]);
-                adjacentVertices[1]=&listOfVerticesP2[2]; //graphVertex(possibleposition[2]);
-            }
-            else if(findpos(actuelposition,possibleposition[2])){
-                adjacentVertices[0]=&listOfVerticesP2[1]; //graphVertex(possibleposition[1]);
-                adjacentVertices[1]=&listOfVerticesP2[3]; //graphVertex(possibleposition[3]);
-            }
-            else if(findpos(actuelposition,possibleposition[3])){
-                adjacentVertices[0]=&listOfVerticesP2[2]; //graphVertex(possibleposition[2]);
-                adjacentVertices[1]=&listOfVerticesP2[4]; //graphVertex(possibleposition[4]);
-                adjacentVertices[2]=&listOfVerticesP2[5]; //graphVertex(possibleposition[5]);
-            }
-            else if(findpos(actuelposition,possibleposition[4])){
-                adjacentVertices[0]=&listOfVerticesP2[3]; //graphVertex(possibleposition[3]);
-                adjacentVertices[1]=&listOfVerticesP2[6]; //graphVertex(possibleposition[6]);
-            }
-            else if(findpos(actuelposition,possibleposition[5])){
-                adjacentVertices[0]=&listOfVerticesP2[3]; //graphVertex(possibleposition[3]);
-                adjacentVertices[1]=&listOfVerticesP2[7]; //graphVertex(possibleposition[7]);
-            }
-            else if(findpos(actuelposition,possibleposition[6])){
-                adjacentVertices[0]=&listOfVerticesP2[4]; //graphVertex(possibleposition[4]);
-                adjacentVertices[1]=&listOfVerticesP2[9]; //graphVertex(possibleposition[9]);
-                adjacentVertices[2]=&listOfVerticesP2[26]; //graphVertex(possibleposition[26]);
-            }
-            else if(findpos(actuelposition,possibleposition[7])){
-                adjacentVertices[0]=&listOfVerticesP2[5]; //graphVertex(possibleposition[5]);
-                adjacentVertices[1]=&listOfVerticesP2[8]; //graphVertex(possibleposition[8]);
-            }
-            else if(findpos(actuelposition,possibleposition[8])){
-                adjacentVertices[0]=&listOfVerticesP2[7]; //graphVertex(possibleposition[7]);
-                adjacentVertices[1]=&listOfVerticesP2[9]; //graphVertex(possibleposition[9]);
-            }
-            else if(findpos(actuelposition,possibleposition[9])){
-                adjacentVertices[0]=&listOfVerticesP2[6]; //graphVertex(possibleposition[6]);
-                adjacentVertices[1]=&listOfVerticesP2[8]; //graphVertex(possibleposition[8]);
-                adjacentVertices[2]=&listOfVerticesP2[10]; //graphVertex(possibleposition[10]);
-                adjacentVertices[3]=&listOfVerticesP2[38]; //graphVertex(possibleposition[38]);
-            }
-            else if(findpos(actuelposition,possibleposition[10])){
-                adjacentVertices[0]=&listOfVerticesP2[9]; //graphVertex(possibleposition[9]);
-                adjacentVertices[1]=&listOfVerticesP2[11]; //graphVertex(possibleposition[11]);
-                adjacentVertices[2]=&listOfVerticesP2[45]; //graphVertex(possibleposition[45]);
-            }
-            else if(findpos(actuelposition,possibleposition[11])){
-                adjacentVertices[0]=&listOfVerticesP2[10]; //graphVertex(possibleposition[10]);
-                adjacentVertices[1]=&listOfVerticesP2[12]; //graphVertex(possibleposition[12]);
-                adjacentVertices[2]=&listOfVerticesP2[13]; //graphVertex(possibleposition[13]);
-            }
-            else if(findpos(actuelposition,possibleposition[12])){
-                adjacentVertices[0]=&listOfVerticesP2[11]; //graphVertex(possibleposition[11]);
-                adjacentVertices[1]=&listOfVerticesP2[14]; //graphVertex(possibleposition[14]);
-            }
-            else if(findpos(actuelposition,possibleposition[13])){
-                adjacentVertices[0]=&listOfVerticesP2[11]; //graphVertex(possibleposition[11]);
-                adjacentVertices[1]=&listOfVerticesP2[14]; //graphVertex(possibleposition[14]);
-                adjacentVertices[2]=&listOfVerticesP2[16]; //graphVertex(possibleposition[16]);
-                adjacentVertices[3]=&listOfVerticesP2[61]; //graphVertex(possibleposition[61]);
-            }
-            else if(findpos(actuelposition,possibleposition[14])){
-                adjacentVertices[0]=&listOfVerticesP2[12]; //graphVertex(possibleposition[12]);
-                adjacentVertices[1]=&listOfVerticesP2[13]; //graphVertex(possibleposition[13]);
-                adjacentVertices[2]=&listOfVerticesP2[15]; //graphVertex(possibleposition[15]);
-            }
-            else if(findpos(actuelposition,possibleposition[15])){
-                adjacentVertices[0]=&listOfVerticesP2[14]; //graphVertex(possibleposition[14]);
-                adjacentVertices[1]=&listOfVerticesP2[16]; //graphVertex(possibleposition[16]);
-            }
-            else if(findpos(actuelposition,possibleposition[16])){
-                adjacentVertices[0]=&listOfVerticesP2[13]; //graphVertex(possibleposition[13]);
-                adjacentVertices[1]=&listOfVerticesP2[15]; //graphVertex(possibleposition[15]);
-                adjacentVertices[2]=&listOfVerticesP2[62]; //graphVertex(possibleposition[62]);
-            }
-            else if(findpos(actuelposition,possibleposition[17])){
-                adjacentVertices[0]=&listOfVerticesP2[0]; //graphVertex(possibleposition[0]);
-                adjacentVertices[1]=&listOfVerticesP2[25]; //graphVertex(possibleposition[25]);
-            }
-            else if(findpos(actuelposition,possibleposition[18])){
-                adjacentVertices[0]=&listOfVerticesP2[19]; //graphVertex(possibleposition[19]);
-                adjacentVertices[1]=&listOfVerticesP2[24]; //graphVertex(possibleposition[24]);                
-            }
-            else if(findpos(actuelposition,possibleposition[19])){
-                adjacentVertices[0]=&listOfVerticesP2[0]; //graphVertex(possibleposition[0]);
-                adjacentVertices[1]=&listOfVerticesP2[18]; //graphVertex(possibleposition[18]);
-                adjacentVertices[2]=&listOfVerticesP2[20]; //graphVertex(possibleposition[20]);
-                         }
-            else if(findpos(actuelposition,possibleposition[20])){
-                adjacentVertices[0]=&listOfVerticesP2[19]; //graphVertex(possibleposition[19]);
-                adjacentVertices[1]=&listOfVerticesP2[21]; //graphVertex(possibleposition[21]);
-                       }
-            else if(findpos(actuelposition,possibleposition[21])){
-                adjacentVertices[0]=&listOfVerticesP2[20]; //graphVertex(possibleposition[20]);
-                adjacentVertices[1]=&listOfVerticesP2[22]; //graphVertex(possibleposition[22]);
-                       }
-            else if(findpos(actuelposition,possibleposition[22])){
-                adjacentVertices[0]=&listOfVerticesP2[21]; //graphVertex(possibleposition[21]);
-                adjacentVertices[1]=&listOfVerticesP2[23]; //graphVertex(possibleposition[23]);
-                adjacentVertices[2]=&listOfVerticesP2[31]; //graphVertex(possibleposition[31]);
-                          }
-            else if(findpos(actuelposition,possibleposition[23])){
-                adjacentVertices[0]=&listOfVerticesP2[22]; //graphVertex(possibleposition[22]);
-                adjacentVertices[1]=&listOfVerticesP2[30]; //graphVertex(possibleposition[30]);
-                       }
-            else if(findpos(actuelposition,possibleposition[24])){
-                adjacentVertices[0]=&listOfVerticesP2[18]; //graphVertex(possibleposition[18]);
-                adjacentVertices[1]=&listOfVerticesP2[29]; //graphVertex(possibleposition[29]);
-                       }
-            else if(findpos(actuelposition,possibleposition[25])){
-                adjacentVertices[0]=&listOfVerticesP2[17]; //graphVertex(possibleposition[17]);
-                adjacentVertices[1]=&listOfVerticesP2[26]; //graphVertex(possibleposition[26]);
-                       }
-            else if(findpos(actuelposition,possibleposition[26])){
-                adjacentVertices[0]=&listOfVerticesP2[6]; //graphVertex(possibleposition[6]);
-                adjacentVertices[1]=&listOfVerticesP2[25]; //graphVertex(possibleposition[25]);
-                adjacentVertices[2]=&listOfVerticesP2[27]; //graphVertex(possibleposition[27]);
-                         }
-            else if(findpos(actuelposition,possibleposition[27])){
-                adjacentVertices[0]=&listOfVerticesP2[26]; //graphVertex(possibleposition[26]);
-                adjacentVertices[1]=&listOfVerticesP2[28]; //graphVertex(possibleposition[28]);
-                adjacentVertices[2]=&listOfVerticesP2[37]; //graphVertex(possibleposition[37]);
-                          }
-            else if(findpos(actuelposition,possibleposition[28])){
-                adjacentVertices[0]=&listOfVerticesP2[27]; //graphVertex(possibleposition[27]);
-                adjacentVertices[1]=&listOfVerticesP2[29]; //graphVertex(possibleposition[29]);
-                adjacentVertices[2]=&listOfVerticesP2[36]; //graphVertex(possibleposition[36]);
-                          }
-            else if(findpos(actuelposition,possibleposition[29])){
-                adjacentVertices[0]=&listOfVerticesP2[24]; //graphVertex(possibleposition[24]);
-                adjacentVertices[1]=&listOfVerticesP2[28]; //graphVertex(possibleposition[28]);
-                adjacentVertices[2]=&listOfVerticesP2[30]; //graphVertex(possibleposition[30]);
-                          }
-            else if(findpos(actuelposition,possibleposition[30])){
-                adjacentVertices[0]=&listOfVerticesP2[23]; //graphVertex(possibleposition[23]);
-                adjacentVertices[1]=&listOfVerticesP2[29]; //graphVertex(possibleposition[29]);
-                adjacentVertices[2]=&listOfVerticesP2[34]; //graphVertex(possibleposition[34]);
-                          }
-            else if(findpos(actuelposition,possibleposition[31])){
-                adjacentVertices[0]=&listOfVerticesP2[22]; //graphVertex(possibleposition[22]);
-                adjacentVertices[1]=&listOfVerticesP2[32]; //graphVertex(possibleposition[32]);
-                       }
-            else if(findpos(actuelposition,possibleposition[32])){
-                adjacentVertices[0]=&listOfVerticesP2[31]; //graphVertex(possibleposition[31]);
-                adjacentVertices[1]=&listOfVerticesP2[33]; //graphVertex(possibleposition[33]);
-                       }
-            else if(findpos(actuelposition,possibleposition[33])){
-                adjacentVertices[0]=&listOfVerticesP2[32]; //graphVertex(possibleposition[32]);
-                adjacentVertices[1]=&listOfVerticesP2[34]; //graphVertex(possibleposition[34]);
-                       }
-            else if(findpos(actuelposition,possibleposition[34])){
-                adjacentVertices[0]=&listOfVerticesP2[30]; //graphVertex(possibleposition[30]);
-                adjacentVertices[1]=&listOfVerticesP2[33]; //graphVertex(possibleposition[33]);
-                adjacentVertices[2]=&listOfVerticesP2[35]; //graphVertex(possibleposition[35]);
-                adjacentVertices[3]=&listOfVerticesP2[42]; //graphVertex(possibleposition[42]);
-                
-            }
-            else if(findpos(actuelposition,possibleposition[35])){
-                adjacentVertices[0]=&listOfVerticesP2[34]; //graphVertex(possibleposition[34]);
-                adjacentVertices[1]=&listOfVerticesP2[36]; //graphVertex(possibleposition[36]);
-                adjacentVertices[2]=&listOfVerticesP2[41]; //graphVertex(possibleposition[41]);
-                          }
-            else if(findpos(actuelposition,possibleposition[36])){
-                adjacentVertices[0]=&listOfVerticesP2[28]; //graphVertex(possibleposition[28]);
-                adjacentVertices[1]=&listOfVerticesP2[35]; //graphVertex(possibleposition[35]);
-                       }
-            else if(findpos(actuelposition,possibleposition[37])){
-                adjacentVertices[0]=&listOfVerticesP2[27]; //graphVertex(possibleposition[27]);
-                adjacentVertices[1]=&listOfVerticesP2[38]; //graphVertex(possibleposition[38]);
-                       }
-            else if(findpos(actuelposition,possibleposition[38])){
-                adjacentVertices[0]=&listOfVerticesP2[9]; //graphVertex(possibleposition[9]);
-                adjacentVertices[1]=&listOfVerticesP2[37]; //graphVertex(possibleposition[37]);
-                adjacentVertices[2]=&listOfVerticesP2[39]; //graphVertex(possibleposition[39]);
-                         }
-            else if(findpos(actuelposition,possibleposition[39])){
-                adjacentVertices[0]=&listOfVerticesP2[38]; //graphVertex(possibleposition[38]);
-                adjacentVertices[1]=&listOfVerticesP2[40]; //graphVertex(possibleposition[40]);
-                adjacentVertices[2]=&listOfVerticesP2[45]; //graphVertex(possibleposition[45]);
-                          }
-            else if(findpos(actuelposition,possibleposition[40])){
-                adjacentVertices[0]=&listOfVerticesP2[39]; //graphVertex(possibleposition[39]);
-                adjacentVertices[1]=&listOfVerticesP2[41]; //graphVertex(possibleposition[41]);
-            }
-            else if(findpos(actuelposition,possibleposition[41])){
-                adjacentVertices[0]=&listOfVerticesP2[35]; //graphVertex(possibleposition[35]);
-                adjacentVertices[1]=&listOfVerticesP2[43]; //graphVertex(possibleposition[43]);
-                adjacentVertices[2]=&listOfVerticesP2[40]; //error meuh
-                       }
-            else if(findpos(actuelposition,possibleposition[42])){
-                adjacentVertices[0]=&listOfVerticesP2[34]; //graphVertex(possibleposition[34]);
-                adjacentVertices[1]=&listOfVerticesP2[43]; //graphVertex(possibleposition[43]);
-                adjacentVertices[2]=&listOfVerticesP2[54]; //graphVertex(possibleposition[54]);
-                          }
-            else if(findpos(actuelposition,possibleposition[43])){
-                adjacentVertices[0]=&listOfVerticesP2[41]; //graphVertex(possibleposition[41]);
-                adjacentVertices[1]=&listOfVerticesP2[46]; //graphVertex(possibleposition[46]);
-                adjacentVertices[2]=&listOfVerticesP2[42]; //error meuh
-                       }
-            else if(findpos(actuelposition,possibleposition[44])){
-                adjacentVertices[0]=&listOfVerticesP2[40]; //graphVertex(possibleposition[40]);
-                adjacentVertices[1]=&listOfVerticesP2[66]; //graphVertex(possibleposition[66]);
-                       }
-            else if(findpos(actuelposition,possibleposition[45])){
-                adjacentVertices[0]=&listOfVerticesP2[10]; //graphVertex(possibleposition[10]);
-                adjacentVertices[1]=&listOfVerticesP2[39]; //graphVertex(possibleposition[39]);
-                adjacentVertices[2]=&listOfVerticesP2[49]; //graphVertex(possibleposition[49]);
-                          }
-            else if(findpos(actuelposition,possibleposition[46])){
-                adjacentVertices[0]=&listOfVerticesP2[43]; //graphVertex(possibleposition[43]);
-                adjacentVertices[1]=&listOfVerticesP2[47]; //graphVertex(possibleposition[47]);
-                       }
-            else if(findpos(actuelposition,possibleposition[47])){
-                adjacentVertices[0]=&listOfVerticesP2[46]; //graphVertex(possibleposition[46]);
-                adjacentVertices[1]=&listOfVerticesP2[52]; //graphVertex(possibleposition[52]);
-                adjacentVertices[2]=&listOfVerticesP2[66]; //graphVertex(possibleposition[66]);
-                          }
-            else if(findpos(actuelposition,possibleposition[48])){
-                adjacentVertices[0]=&listOfVerticesP2[49]; //graphVertex(possibleposition[49]);
-                adjacentVertices[1]=&listOfVerticesP2[51]; //graphVertex(possibleposition[51]);
-                adjacentVertices[2]=&listOfVerticesP2[66]; //graphVertex(possibleposition[66]);
-                          }
-            else if(findpos(actuelposition,possibleposition[49])){
-                adjacentVertices[0]=&listOfVerticesP2[45]; //graphVertex(possibleposition[45]);
-                adjacentVertices[1]=&listOfVerticesP2[48]; //graphVertex(possibleposition[48]);
-                       }
-            else if(findpos(actuelposition,possibleposition[50])){
-                adjacentVertices[0]=&listOfVerticesP2[51]; //graphVertex(possibleposition[51]);
-                adjacentVertices[1]=&listOfVerticesP2[61]; //graphVertex(possibleposition[61]);
-                       }
-            else if(findpos(actuelposition,possibleposition[51])){
-                adjacentVertices[0]=&listOfVerticesP2[48]; //graphVertex(possibleposition[48]);
-                adjacentVertices[1]=&listOfVerticesP2[50]; //graphVertex(possibleposition[50]);
-                       }
-            else if(findpos(actuelposition,possibleposition[52])){
-                adjacentVertices[0]=&listOfVerticesP2[47]; //graphVertex(possibleposition[47]);
-                adjacentVertices[1]=&listOfVerticesP2[53]; //graphVertex(possibleposition[53]);
-                       }
-            else if(findpos(actuelposition,possibleposition[53])){
-                adjacentVertices[0]=&listOfVerticesP2[52]; //graphVertex(possibleposition[52]);
-                adjacentVertices[1]=&listOfVerticesP2[58]; //graphVertex(possibleposition[58]);
-                       }
-            else if(findpos(actuelposition,possibleposition[54])){
-                adjacentVertices[0]=&listOfVerticesP2[42]; //graphVertex(possibleposition[42]);
-                adjacentVertices[1]=&listOfVerticesP2[55]; //graphVertex(possibleposition[55]);
-                adjacentVertices[2]=&listOfVerticesP2[57]; //graphVertex(possibleposition[57]);
-                          }
-            else if(findpos(actuelposition,possibleposition[55])){
-                adjacentVertices[0]=&listOfVerticesP2[54]; //graphVertex(possibleposition[54]);
-                adjacentVertices[1]=&listOfVerticesP2[56]; //graphVertex(possibleposition[56]);
-                       }
-            else if(findpos(actuelposition,possibleposition[56])){
-                adjacentVertices[0]=&listOfVerticesP2[55]; //graphVertex(possibleposition[55]);
-                adjacentVertices[1]=&listOfVerticesP2[57]; //graphVertex(possibleposition[57]);
-                adjacentVertices[2]=&listOfVerticesP2[65]; //graphVertex(possibleposition[65]);
-                          }
-            else if(findpos(actuelposition,possibleposition[57])){
-                adjacentVertices[0]=&listOfVerticesP2[54]; //graphVertex(possibleposition[54]);
-                adjacentVertices[1]=&listOfVerticesP2[56]; //graphVertex(possibleposition[56]);
-                adjacentVertices[2]=&listOfVerticesP2[58]; //graphVertex(possibleposition[58]);
-                adjacentVertices[3]=&listOfVerticesP2[64]; //graphVertex(possibleposition[64]);
-                
-            }
-            else if(findpos(actuelposition,possibleposition[58])){
-                adjacentVertices[0]=&listOfVerticesP2[53]; //graphVertex(possibleposition[53]);
-                adjacentVertices[1]=&listOfVerticesP2[57]; //graphVertex(possibleposition[57]);
-                adjacentVertices[2]=&listOfVerticesP2[59]; //graphVertex(possibleposition[59]);
-                          }
-            else if(findpos(actuelposition,possibleposition[59])){
-                adjacentVertices[0]=&listOfVerticesP2[58]; //graphVertex(possibleposition[58]);
-                adjacentVertices[1]=&listOfVerticesP2[60]; //graphVertex(possibleposition[59]);
-                adjacentVertices[2]=&listOfVerticesP2[63]; //graphVertex(possibleposition[63]);
-                          }
-            else if(findpos(actuelposition,possibleposition[60])){
-                adjacentVertices[0]=&listOfVerticesP2[59]; //graphVertex(possibleposition[59]);
-                adjacentVertices[1]=&listOfVerticesP2[61]; //graphVertex(possibleposition[61]);
-                adjacentVertices[2]=&listOfVerticesP2[62]; //graphVertex(possibleposition[62]);
-                          }
-            else if(findpos(actuelposition,possibleposition[61])){
-                adjacentVertices[0]=&listOfVerticesP2[13]; //graphVertex(possibleposition[13]);
-                adjacentVertices[1]=&listOfVerticesP2[50]; //graphVertex(possibleposition[50]);
-                adjacentVertices[2]=&listOfVerticesP2[60]; //graphVertex(possibleposition[60]);
-                          }
-            else if(findpos(actuelposition,possibleposition[62])){
-                adjacentVertices[0]=&listOfVerticesP2[16]; //graphVertex(possibleposition[16]);
-                adjacentVertices[1]=&listOfVerticesP2[60]; //graphVertex(possibleposition[60]);
-                       }
-            else if(findpos(actuelposition,possibleposition[63])){
-                adjacentVertices[0]=&listOfVerticesP2[59]; //graphVertex(possibleposition[59]);
-                adjacentVertices[1]=&listOfVerticesP2[64]; //graphVertex(possibleposition[64]);
-                       }
-            else if(findpos(actuelposition,possibleposition[64])){
-                adjacentVertices[0]=&listOfVerticesP2[57]; //graphVertex(possibleposition[57]);
-                adjacentVertices[1]=&listOfVerticesP2[63]; //graphVertex(possibleposition[63]);
-                adjacentVertices[2]=&listOfVerticesP2[65]; //graphVertex(possibleposition[65]);
-                          }
-            else if(findpos(actuelposition,possibleposition[65])){
-                adjacentVertices[0]=&listOfVerticesP2[56]; //graphVertex(possibleposition[56]);
-                adjacentVertices[1]=&listOfVerticesP2[64]; //graphVertex(possibleposition[64]);
-                       }
-            else if(findpos(actuelposition,possibleposition[66])){
-                adjacentVertices[0]=&listOfVerticesP2[47]; //graphVertex(possibleposition[47]);
-                adjacentVertices[1]=&listOfVerticesP2[48]; //graphVertex(possibleposition[48]);
-                       }
-    }
-
-    //functions taken from PacmanPink
-
-
-    Vector3 PacmanGhost::diffVector (Vector3 start, Vector3 goal){
-
-        Vector3 result;
-        result.x=goal.x-start.x;
-        result.z=goal.z-start.z;
-        return result;
-    }
-
-
-    bool PacmanGhost::playerFindPos(Vector3 one, Vector3 other){
-       if((abs(one.x - other.x)<15) && (abs(one.z - other.z)<15)) return true;
-        return false;
-        }
-
-
-
-
-    int PacmanGhost::findPlayerTravDir (Vector3 playerPosBefore, Vector3 playerPos){
-        //return 0 for south, 1 for west, 2 for north, 3 for east
-
-
-        if(playerFindPos(playerPosBefore, playerPos)){
-            //if player is still near last crossed point
-
-            return 4; //return the last crossed point for simplicity
-        }
-
-
-        if(abs(playerPos.x-playerPosBefore.x)<14){ //player is moving vertically
-            if((playerPos.z-playerPosBefore.z)<0){//move west
-                return 0;
-            }
-            if((playerPos.z-playerPosBefore.z)>0){//move east
-                return 2;
-            }
-        }
-
-        if(abs(playerPos.z-playerPosBefore.z)<14){ //player is moving horizontally
-            if((playerPos.x-playerPosBefore.x)<0){//move south
-                return 1;
-            }
-            if((playerPos.x-playerPosBefore.x)>0){//move north
-                return 3;
-            }
-        }
-        
-        }
-
-    Vector3 PacmanGhost::getPointInFrontOfPacman(Vector3 pacLasVisPos,int indexForSWNE){
-        //return the Vector3 point that Pinky should target to
-        //be in front of pacman
-
-        if(indexForSWNE==4){
-            //std::cout<<"Ryukyu"<<endl;
-            return pacLasVisPos;
-        }
-
-        Vector3 listOfNeighboors[4];
-        //first element is south, 2nd west, 3d north, 4th east
-
-            if(findpos(pacLasVisPos,possibleposition[0])){
-                //no south neighbor 
-                listOfNeighboors[1]=possibleposition[19]; // west neighbor
-                listOfNeighboors[2]=possibleposition[17]; //north
-                listOfNeighboors[3]=possibleposition[1]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[1])){
-                listOfNeighboors[1]=possibleposition[0]; // west neighbor
-                listOfNeighboors[2]=possibleposition[2]; //north
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[2])){
-                listOfNeighboors[0]=possibleposition[1];  //south
-                listOfNeighboors[1]=possibleposition[3]; //west
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[3])){
-                listOfNeighboors[1]=possibleposition[4]; //west
-                listOfNeighboors[2]=possibleposition[5]; //north
-                listOfNeighboors[3]=possibleposition[2]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[4])){
-                listOfNeighboors[2]=possibleposition[6]; //north
-                listOfNeighboors[3]=possibleposition[3]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[5])){
-                listOfNeighboors[0]=possibleposition[3]; //south
-                listOfNeighboors[3]=possibleposition[7]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[6])){
-                listOfNeighboors[0]=possibleposition[4]; //south
-                listOfNeighboors[1]=possibleposition[26]; //west
-                listOfNeighboors[2]=possibleposition[9]; //north
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[7])){
-                listOfNeighboors[1]=possibleposition[5]; //west
-                listOfNeighboors[2]=possibleposition[8]; //north
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[8])){
-                listOfNeighboors[0]=possibleposition[7]; //south
-                listOfNeighboors[1]=possibleposition[9]; //west
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[9])){
-                listOfNeighboors[0]=possibleposition[6]; //south
-                listOfNeighboors[1]=possibleposition[38]; //west
-                listOfNeighboors[2]=possibleposition[10]; //north
-                listOfNeighboors[3]=possibleposition[8]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[10])){
-
-                if(indexForSWNE==3){ //nothing eastward
-                    return pacLasVisPos;
-                }
-
-                listOfNeighboors[0]=possibleposition[9]; //south
-                listOfNeighboors[1]=possibleposition[45]; //west
-                listOfNeighboors[2]=possibleposition[11]; //north
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[11])){
-                listOfNeighboors[0]=possibleposition[10]; //south
-                listOfNeighboors[2]=possibleposition[13]; //north
-                listOfNeighboors[3]=possibleposition[12]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[12])){
-                listOfNeighboors[1]=possibleposition[11]; //west
-                listOfNeighboors[2]=possibleposition[14]; //north
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[13])){
-                listOfNeighboors[0]=possibleposition[11]; //south
-                listOfNeighboors[1]=possibleposition[61]; //west
-                listOfNeighboors[2]=possibleposition[16]; //north
-                listOfNeighboors[3]=possibleposition[14]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[14])){
-                listOfNeighboors[0]=possibleposition[12]; //south
-                listOfNeighboors[1]=possibleposition[13]; //west
-                listOfNeighboors[2]=possibleposition[15]; //north
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[15])){
-                listOfNeighboors[0]=possibleposition[14]; //south
-                listOfNeighboors[1]=possibleposition[16]; //west
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[16])){
-                listOfNeighboors[0]=possibleposition[13]; //south
-                listOfNeighboors[1]=possibleposition[62]; //west
-                listOfNeighboors[2]=possibleposition[15]; //north
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[17])){
-                listOfNeighboors[0]=possibleposition[0]; //south
-                listOfNeighboors[3]=possibleposition[25]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[18])){
-                listOfNeighboors[0]=possibleposition[19]; //south
-                listOfNeighboors[1]=possibleposition[24]; //west
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[19])){
-                listOfNeighboors[1]=possibleposition[20]; //west
-                listOfNeighboors[2]=possibleposition[18]; //north
-                listOfNeighboors[3]=possibleposition[0]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[20])){
-                listOfNeighboors[2]=possibleposition[21]; //north
-                listOfNeighboors[3]=possibleposition[19]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[21])){
-                listOfNeighboors[0]=possibleposition[20]; //south
-                listOfNeighboors[3]=possibleposition[22]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[22])){
-                listOfNeighboors[1]=possibleposition[21]; //west
-                listOfNeighboors[2]=possibleposition[31]; //north
-                listOfNeighboors[3]=possibleposition[23]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[23])){
-                listOfNeighboors[1]=possibleposition[22]; //west
-                listOfNeighboors[2]=possibleposition[30]; //north
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[24])){
-                listOfNeighboors[2]=possibleposition[29]; //north
-                listOfNeighboors[3]=possibleposition[18]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[25])){
-                listOfNeighboors[1]=possibleposition[17]; //west
-                listOfNeighboors[2]=possibleposition[26]; //north
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[26])){
-                listOfNeighboors[0]=possibleposition[25]; //south
-                listOfNeighboors[1]=possibleposition[27]; //west
-                listOfNeighboors[3]=possibleposition[6]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[27])){
-                listOfNeighboors[1]=possibleposition[28]; //west
-                listOfNeighboors[2]=possibleposition[37]; //north
-                listOfNeighboors[3]=possibleposition[26]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[28])){
-                listOfNeighboors[1]=possibleposition[29]; //west
-                listOfNeighboors[2]=possibleposition[36]; //north
-                listOfNeighboors[3]=possibleposition[27]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[29])){
-                listOfNeighboors[0]=possibleposition[24]; //south
-                listOfNeighboors[1]=possibleposition[30]; //west
-                listOfNeighboors[3]=possibleposition[28]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[30])){
-                listOfNeighboors[0]=possibleposition[23]; //south
-                listOfNeighboors[2]=possibleposition[34]; //north
-                listOfNeighboors[3]=possibleposition[29]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[31])){
-                listOfNeighboors[0]=possibleposition[22]; //south
-                listOfNeighboors[1]=possibleposition[32]; //west
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[32])){
-                listOfNeighboors[2]=possibleposition[33]; //north
-                listOfNeighboors[3]=possibleposition[31]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[33])){
-                listOfNeighboors[0]=possibleposition[32]; //south
-                listOfNeighboors[3]=possibleposition[34]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[34])){
-                listOfNeighboors[0]=possibleposition[30]; //south
-                listOfNeighboors[1]=possibleposition[33]; //west
-                listOfNeighboors[2]=possibleposition[92]; //north
-                listOfNeighboors[3]=possibleposition[35]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[35])){
-                listOfNeighboors[1]=possibleposition[34]; //west
-                listOfNeighboors[2]=possibleposition[91]; //north
-                listOfNeighboors[3]=possibleposition[36]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[36])){
-                listOfNeighboors[0]=possibleposition[28]; //south
-                listOfNeighboors[1]=possibleposition[35]; //west
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[37])){
-                listOfNeighboors[0]=possibleposition[27]; //south
-                listOfNeighboors[3]=possibleposition[38]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[38])){
-                listOfNeighboors[1]=possibleposition[37]; //west
-                listOfNeighboors[2]=possibleposition[39]; //north
-                listOfNeighboors[3]=possibleposition[9]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[39])){
-                listOfNeighboors[0]=possibleposition[38]; //south
-                listOfNeighboors[1]=possibleposition[40]; //west
-                listOfNeighboors[2]=possibleposition[45]; //north
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[40])){
-                listOfNeighboors[1]=possibleposition[41]; //west
-                //Not return in center
-                listOfNeighboors[3]=possibleposition[39]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[41])){
-                listOfNeighboors[0]=possibleposition[35]; //south
-                listOfNeighboors[2]=possibleposition[43]; //north
-                listOfNeighboors[3]=possibleposition[40]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[42])){
-
-                if(indexForSWNE==1){//nothing westward
-                    return pacLasVisPos;
-                }
-
-                listOfNeighboors[0]=possibleposition[39]; //south
-                listOfNeighboors[2]=possibleposition[59]; //north
-                listOfNeighboors[3]=possibleposition[43]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[43])){
-                listOfNeighboors[0]=possibleposition[41]; //south
-                listOfNeighboors[1]=possibleposition[42]; //west
-                listOfNeighboors[2]=possibleposition[46]; //north
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[44])){
-                listOfNeighboors[0]=possibleposition[40]; //south
-                listOfNeighboors[2]=possibleposition[66]; //north
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[45])){
-                listOfNeighboors[0]=possibleposition[39]; //south
-                listOfNeighboors[2]=possibleposition[49]; //north
-                listOfNeighboors[3]=possibleposition[10]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[46])){
-                listOfNeighboors[0]=possibleposition[43]; //south
-                listOfNeighboors[3]=possibleposition[47]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[47])){
-                listOfNeighboors[1]=possibleposition[46]; //west
-                listOfNeighboors[2]=possibleposition[52]; //north
-                listOfNeighboors[3]=possibleposition[66]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[48])){
-                listOfNeighboors[1]=possibleposition[66]; //west
-                listOfNeighboors[2]=possibleposition[51]; //north
-                listOfNeighboors[3]=possibleposition[49]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[49])){
-                listOfNeighboors[0]=possibleposition[45]; //south
-                listOfNeighboors[1]=possibleposition[48]; //west
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[50])){
-                listOfNeighboors[1]=possibleposition[51]; //west
-                listOfNeighboors[2]=possibleposition[61]; //north
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[51])){
-                listOfNeighboors[0]=possibleposition[48]; //south
-                listOfNeighboors[3]=possibleposition[50]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[52])){
-                listOfNeighboors[0]=possibleposition[47]; //south
-                listOfNeighboors[1]=possibleposition[53]; //west
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[53])){
-                listOfNeighboors[2]=possibleposition[58]; //north
-                listOfNeighboors[3]=possibleposition[52]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[54])){
-                listOfNeighboors[0]=possibleposition[42]; //south
-                listOfNeighboors[1]=possibleposition[55]; //west
-                listOfNeighboors[2]=possibleposition[57]; //north
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[55])){
-                listOfNeighboors[2]=possibleposition[56]; //north
-                listOfNeighboors[3]=possibleposition[54]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[56])){
-                listOfNeighboors[0]=possibleposition[55]; //south
-                listOfNeighboors[2]=possibleposition[65]; //north
-                listOfNeighboors[3]=possibleposition[57]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[57])){
-                listOfNeighboors[0]=possibleposition[54]; //south
-                listOfNeighboors[1]=possibleposition[56]; //west
-                listOfNeighboors[2]=possibleposition[64]; //north
-                listOfNeighboors[3]=possibleposition[58]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[58])){
-                listOfNeighboors[0]=possibleposition[53]; //south
-                listOfNeighboors[1]=possibleposition[57]; //west
-                listOfNeighboors[3]=possibleposition[59]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[59])){
-                listOfNeighboors[1]=possibleposition[58]; //west
-                listOfNeighboors[2]=possibleposition[63]; //north
-                listOfNeighboors[3]=possibleposition[60]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[60])){
-                listOfNeighboors[1]=possibleposition[59]; //west
-                listOfNeighboors[2]=possibleposition[62]; //north
-                listOfNeighboors[3]=possibleposition[61]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[61])){
-                listOfNeighboors[0]=possibleposition[50]; //south
-                listOfNeighboors[1]=possibleposition[60]; //west
-                listOfNeighboors[3]=possibleposition[13]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[62])){
-                listOfNeighboors[0]=possibleposition[60]; //south
-                listOfNeighboors[3]=possibleposition[16]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[63])){
-                listOfNeighboors[0]=possibleposition[59]; //south
-                listOfNeighboors[1]=possibleposition[64]; //west
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[64])){
-                listOfNeighboors[0]=possibleposition[57]; //south
-                listOfNeighboors[1]=possibleposition[65]; //west
-                listOfNeighboors[3]=possibleposition[63]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[65])){
-                listOfNeighboors[0]=possibleposition[56]; //south
-                listOfNeighboors[3]=possibleposition[64]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);
-            }
-            else if(findpos(pacLasVisPos,possibleposition[66])){
-                //Not back in center
-                listOfNeighboors[1]=possibleposition[47]; //west
-                listOfNeighboors[3]=possibleposition[48]; //east
-                return listOfNeighboors[indexForSWNE]; //Vector3(listOfNeighboors[indexForSWNE].x, 10, listOfNeighboors[indexForSWNE].z);            
-            }
-
-        }
-
-
-
-
-///////////////////////
-
-
-
-
-
-    Vector3 PacmanGhost::frontPosition(){
-
-    Vector3 neighborPos[4] = {Vector3(-1,-1,-1)};
-    Vector3 frontPoint = Vector3(0,-1,0);
-
-
-    findNeighboorPositions(this->lastPlayerPassedPoint, neighborPos, possibleposition);
-
-    for(int i=0; i<4; i++){
-
-     if((neighborPos[i]!=Vector3(-1,-1,-1))&&(neighborPos[i].y==10)){
-     //y==10 to ignore many unwanted strange positions that pop up otherwise and create SIGSEV
-        
-        if(frontPoint==Vector3(0,-1,0)){
-            frontPoint=neighborPos[i];
-
-                        }
-        else if (graphDistance(this->getPlayerPos(), frontPoint)>graphDistance(this->getPlayerPos(), neighborPos[i])){
-            frontPoint=neighborPos[i];
-                        }
-
-                    }
-                }
-
-    if(frontPoint==Vector3(0,-1,0)){
-        //default
-        return this->lastPlayerPassedPoint;
-            }
-    else{
-        //std::cout<<frontPoint<<endl;
-        return frontPoint;
-            }
-    }
-
-
-
-
-
-
-    void PacmanGhost::findNeighboorPositions(Vector3 actuelposition, Vector3 adjacentPositions[], Vector3 positionArray[]){      
-            //this function should put in adjacentPosition[] the neighboors of lastPlayerPastPoint
-
-            if(findpos(actuelposition,possibleposition[0])){
-                
-
-                adjacentPositions[0]=positionArray[1]; //graphVertex(possibleposition[1]);  //need to do it everywhere !!!
-                adjacentPositions[1]=positionArray[17]; //graphVertex(possibleposition[17]);
-                adjacentPositions[2]=positionArray[19]; //graphVertex(possibleposition[19]); //maybe a vector would be more suitable ?
-            }
-            else if(findpos(actuelposition,possibleposition[1])){
-                adjacentPositions[0]=positionArray[0]; //graphVertex(possibleposition[0]);
-                adjacentPositions[1]=positionArray[2]; //graphVertex(possibleposition[2]);
-            }
-            else if(findpos(actuelposition,possibleposition[2])){
-                adjacentPositions[0]=positionArray[1]; //graphVertex(possibleposition[1]);
-                adjacentPositions[1]=positionArray[3]; //graphVertex(possibleposition[3]);
-            }
-            else if(findpos(actuelposition,possibleposition[3])){
-                adjacentPositions[0]=positionArray[2]; //graphVertex(possibleposition[2]);
-                adjacentPositions[1]=positionArray[4]; //graphVertex(possibleposition[4]);
-                adjacentPositions[2]=positionArray[5]; //graphVertex(possibleposition[5]);
-            }
-            else if(findpos(actuelposition,possibleposition[4])){
-                adjacentPositions[0]=positionArray[3]; //graphVertex(possibleposition[3]);
-                adjacentPositions[1]=positionArray[6]; //graphVertex(possibleposition[6]);
-            }
-            else if(findpos(actuelposition,possibleposition[5])){
-                adjacentPositions[0]=positionArray[3]; //graphVertex(possibleposition[3]);
-                adjacentPositions[1]=positionArray[7]; //graphVertex(possibleposition[7]);
-            }
-            else if(findpos(actuelposition,possibleposition[6])){
-                adjacentPositions[0]=positionArray[4]; //graphVertex(possibleposition[4]);
-                adjacentPositions[1]=positionArray[9]; //graphVertex(possibleposition[9]);
-                adjacentPositions[2]=positionArray[26]; //graphVertex(possibleposition[26]);
-            }
-            else if(findpos(actuelposition,possibleposition[7])){
-                adjacentPositions[0]=positionArray[5]; //graphVertex(possibleposition[5]);
-                adjacentPositions[1]=positionArray[8]; //graphVertex(possibleposition[8]);
-            }
-            else if(findpos(actuelposition,possibleposition[8])){
-                adjacentPositions[0]=positionArray[7]; //graphVertex(possibleposition[7]);
-                adjacentPositions[1]=positionArray[9]; //graphVertex(possibleposition[9]);
-            }
-            else if(findpos(actuelposition,possibleposition[9])){
-                adjacentPositions[0]=positionArray[6]; //graphVertex(possibleposition[6]);
-                adjacentPositions[1]=positionArray[8]; //graphVertex(possibleposition[8]);
-                adjacentPositions[2]=positionArray[10]; //graphVertex(possibleposition[10]);
-                adjacentPositions[3]=positionArray[38]; //graphVertex(possibleposition[38]);
-            }
-            else if(findpos(actuelposition,possibleposition[10])){
-                adjacentPositions[0]=positionArray[9]; //graphVertex(possibleposition[9]);
-                adjacentPositions[1]=positionArray[11]; //graphVertex(possibleposition[11]);
-                adjacentPositions[2]=positionArray[45]; //graphVertex(possibleposition[45]);
-            }
-            else if(findpos(actuelposition,possibleposition[11])){
-                adjacentPositions[0]=positionArray[10]; //graphVertex(possibleposition[10]);
-                adjacentPositions[1]=positionArray[12]; //graphVertex(possibleposition[12]);
-                adjacentPositions[2]=positionArray[13]; //graphVertex(possibleposition[13]);
-            }
-            else if(findpos(actuelposition,possibleposition[12])){
-                adjacentPositions[0]=positionArray[11]; //graphVertex(possibleposition[11]);
-                adjacentPositions[1]=positionArray[14]; //graphVertex(possibleposition[14]);
-            }
-            else if(findpos(actuelposition,possibleposition[13])){
-                adjacentPositions[0]=positionArray[11]; //graphVertex(possibleposition[11]);
-                adjacentPositions[1]=positionArray[14]; //graphVertex(possibleposition[14]);
-                adjacentPositions[2]=positionArray[16]; //graphVertex(possibleposition[16]);
-                adjacentPositions[3]=positionArray[61]; //graphVertex(possibleposition[61]);
-            }
-            else if(findpos(actuelposition,possibleposition[14])){
-                adjacentPositions[0]=positionArray[12]; //graphVertex(possibleposition[12]);
-                adjacentPositions[1]=positionArray[13]; //graphVertex(possibleposition[13]);
-                adjacentPositions[2]=positionArray[15]; //graphVertex(possibleposition[15]);
-            }
-            else if(findpos(actuelposition,possibleposition[15])){
-                adjacentPositions[0]=positionArray[14]; //graphVertex(possibleposition[14]);
-                adjacentPositions[1]=positionArray[16]; //graphVertex(possibleposition[16]);
-            }
-            else if(findpos(actuelposition,possibleposition[16])){
-                adjacentPositions[0]=positionArray[13]; //graphVertex(possibleposition[13]);
-                adjacentPositions[1]=positionArray[15]; //graphVertex(possibleposition[15]);
-                adjacentPositions[2]=positionArray[62]; //graphVertex(possibleposition[62]);
-            }
-            else if(findpos(actuelposition,possibleposition[17])){
-                adjacentPositions[0]=positionArray[0]; //graphVertex(possibleposition[0]);
-                adjacentPositions[1]=positionArray[25]; //graphVertex(possibleposition[25]);
-            }
-            else if(findpos(actuelposition,possibleposition[18])){
-                adjacentPositions[0]=positionArray[19]; //graphVertex(possibleposition[19]);
-                adjacentPositions[1]=positionArray[24]; //graphVertex(possibleposition[24]);                
-            }
-            else if(findpos(actuelposition,possibleposition[19])){
-                adjacentPositions[0]=positionArray[0]; //graphVertex(possibleposition[0]);
-                adjacentPositions[1]=positionArray[18]; //graphVertex(possibleposition[18]);
-                adjacentPositions[2]=positionArray[20]; //graphVertex(possibleposition[20]);
-                         }
-            else if(findpos(actuelposition,possibleposition[20])){
-                adjacentPositions[0]=positionArray[19]; //graphVertex(possibleposition[19]);
-                adjacentPositions[1]=positionArray[21]; //graphVertex(possibleposition[21]);
-                       }
-            else if(findpos(actuelposition,possibleposition[21])){
-                adjacentPositions[0]=positionArray[20]; //graphVertex(possibleposition[20]);
-                adjacentPositions[1]=positionArray[22]; //graphVertex(possibleposition[22]);
-                       }
-            else if(findpos(actuelposition,possibleposition[22])){
-                adjacentPositions[0]=positionArray[21]; //graphVertex(possibleposition[21]);
-                adjacentPositions[1]=positionArray[23]; //graphVertex(possibleposition[23]);
-                adjacentPositions[2]=positionArray[31]; //graphVertex(possibleposition[31]);
-                          }
-            else if(findpos(actuelposition,possibleposition[23])){
-                adjacentPositions[0]=positionArray[22]; //graphVertex(possibleposition[22]);
-                adjacentPositions[1]=positionArray[30]; //graphVertex(possibleposition[30]);
-                       }
-            else if(findpos(actuelposition,possibleposition[24])){
-                adjacentPositions[0]=positionArray[18]; //graphVertex(possibleposition[18]);
-                adjacentPositions[1]=positionArray[29]; //graphVertex(possibleposition[29]);
-                       }
-            else if(findpos(actuelposition,possibleposition[25])){
-                adjacentPositions[0]=positionArray[17]; //graphVertex(possibleposition[17]);
-                adjacentPositions[1]=positionArray[26]; //graphVertex(possibleposition[26]);
-                       }
-            else if(findpos(actuelposition,possibleposition[26])){
-                adjacentPositions[0]=positionArray[6]; //graphVertex(possibleposition[6]);
-                adjacentPositions[1]=positionArray[25]; //graphVertex(possibleposition[25]);
-                adjacentPositions[2]=positionArray[27]; //graphVertex(possibleposition[27]);
-                         }
-            else if(findpos(actuelposition,possibleposition[27])){
-                adjacentPositions[0]=positionArray[26]; //graphVertex(possibleposition[26]);
-                adjacentPositions[1]=positionArray[28]; //graphVertex(possibleposition[28]);
-                adjacentPositions[2]=positionArray[37]; //graphVertex(possibleposition[37]);
-                          }
-            else if(findpos(actuelposition,possibleposition[28])){
-                adjacentPositions[0]=positionArray[27]; //graphVertex(possibleposition[27]);
-                adjacentPositions[1]=positionArray[29]; //graphVertex(possibleposition[29]);
-                adjacentPositions[2]=positionArray[36]; //graphVertex(possibleposition[36]);
-                          }
-            else if(findpos(actuelposition,possibleposition[29])){
-                adjacentPositions[0]=positionArray[24]; //graphVertex(possibleposition[24]);
-                adjacentPositions[1]=positionArray[28]; //graphVertex(possibleposition[28]);
-                adjacentPositions[2]=positionArray[30]; //graphVertex(possibleposition[30]);
-                          }
-            else if(findpos(actuelposition,possibleposition[30])){
-                adjacentPositions[0]=positionArray[23]; //graphVertex(possibleposition[23]);
-                adjacentPositions[1]=positionArray[29]; //graphVertex(possibleposition[29]);
-                adjacentPositions[2]=positionArray[34]; //graphVertex(possibleposition[34]);
-                          }
-            else if(findpos(actuelposition,possibleposition[31])){
-                adjacentPositions[0]=positionArray[22]; //graphVertex(possibleposition[22]);
-                adjacentPositions[1]=positionArray[32]; //graphVertex(possibleposition[32]);
-                       }
-            else if(findpos(actuelposition,possibleposition[32])){
-                adjacentPositions[0]=positionArray[31]; //graphVertex(possibleposition[31]);
-                adjacentPositions[1]=positionArray[33]; //graphVertex(possibleposition[33]);
-                       }
-            else if(findpos(actuelposition,possibleposition[33])){
-                adjacentPositions[0]=positionArray[32]; //graphVertex(possibleposition[32]);
-                adjacentPositions[1]=positionArray[34]; //graphVertex(possibleposition[34]);
-                       }
-            else if(findpos(actuelposition,possibleposition[34])){
-                adjacentPositions[0]=positionArray[30]; //graphVertex(possibleposition[30]);
-                adjacentPositions[1]=positionArray[33]; //graphVertex(possibleposition[33]);
-                adjacentPositions[2]=positionArray[35]; //graphVertex(possibleposition[35]);
-                adjacentPositions[3]=positionArray[42]; //graphVertex(possibleposition[42]);
-                
-            }
-            else if(findpos(actuelposition,possibleposition[35])){
-                adjacentPositions[0]=positionArray[34]; //graphVertex(possibleposition[34]);
-                adjacentPositions[1]=positionArray[36]; //graphVertex(possibleposition[36]);
-                adjacentPositions[2]=positionArray[41]; //graphVertex(possibleposition[41]);
-                          }
-            else if(findpos(actuelposition,possibleposition[36])){
-                adjacentPositions[0]=positionArray[28]; //graphVertex(possibleposition[28]);
-                adjacentPositions[1]=positionArray[35]; //graphVertex(possibleposition[35]);
-                       }
-            else if(findpos(actuelposition,possibleposition[37])){
-                adjacentPositions[0]=positionArray[27]; //graphVertex(possibleposition[27]);
-                adjacentPositions[1]=positionArray[38]; //graphVertex(possibleposition[38]);
-                       }
-            else if(findpos(actuelposition,possibleposition[38])){
-                adjacentPositions[0]=positionArray[9]; //graphVertex(possibleposition[9]);
-                adjacentPositions[1]=positionArray[37]; //graphVertex(possibleposition[37]);
-                adjacentPositions[2]=positionArray[39]; //graphVertex(possibleposition[39]);
-                         }
-            else if(findpos(actuelposition,possibleposition[39])){
-                adjacentPositions[0]=positionArray[38]; //graphVertex(possibleposition[38]);
-                adjacentPositions[1]=positionArray[40]; //graphVertex(possibleposition[40]);
-                adjacentPositions[2]=positionArray[45]; //graphVertex(possibleposition[45]);
-                          }
-            else if(findpos(actuelposition,possibleposition[40])){
-                adjacentPositions[0]=positionArray[39]; //graphVertex(possibleposition[39]);
-                adjacentPositions[1]=positionArray[41]; //graphVertex(possibleposition[41]);
-            }
-            else if(findpos(actuelposition,possibleposition[41])){
-                adjacentPositions[0]=positionArray[35]; //graphVertex(possibleposition[35]);
-                adjacentPositions[1]=positionArray[43]; //graphVertex(possibleposition[43]);
-                adjacentPositions[2]=positionArray[40];  //error 
-                       }
-            else if(findpos(actuelposition,possibleposition[42])){
-                adjacentPositions[0]=positionArray[34]; //graphVertex(possibleposition[34]);
-                adjacentPositions[1]=positionArray[43]; //graphVertex(possibleposition[43]);
-                adjacentPositions[2]=positionArray[54]; //graphVertex(possibleposition[54]);
-                          }
-            else if(findpos(actuelposition,possibleposition[43])){
-                adjacentPositions[0]=positionArray[41]; //graphVertex(possibleposition[41]);
-                adjacentPositions[1]=positionArray[46]; //graphVertex(possibleposition[46]);
-                adjacentPositions[2]=positionArray[42]; //error
-                       }
-            else if(findpos(actuelposition,possibleposition[44])){
-                adjacentPositions[0]=positionArray[40]; //graphVertex(possibleposition[40]);
-                adjacentPositions[1]=positionArray[66]; //graphVertex(possibleposition[66]);
-                       }
-            else if(findpos(actuelposition,possibleposition[45])){
-                adjacentPositions[0]=positionArray[10]; //graphVertex(possibleposition[10]);
-                adjacentPositions[1]=positionArray[39]; //graphVertex(possibleposition[39]);
-                adjacentPositions[2]=positionArray[49]; //graphVertex(possibleposition[49]);
-                          }
-            else if(findpos(actuelposition,possibleposition[46])){
-                adjacentPositions[0]=positionArray[43]; //graphVertex(possibleposition[43]);
-                adjacentPositions[1]=positionArray[47]; //graphVertex(possibleposition[47]);
-                       }
-            else if(findpos(actuelposition,possibleposition[47])){
-                adjacentPositions[0]=positionArray[46]; //graphVertex(possibleposition[46]);
-                adjacentPositions[1]=positionArray[52]; //graphVertex(possibleposition[52]);
-                adjacentPositions[2]=positionArray[66]; //graphVertex(possibleposition[66]);
-                          }
-            else if(findpos(actuelposition,possibleposition[48])){
-                adjacentPositions[0]=positionArray[49]; //graphVertex(possibleposition[49]);
-                adjacentPositions[1]=positionArray[51]; //graphVertex(possibleposition[51]);
-                adjacentPositions[2]=positionArray[66]; //graphVertex(possibleposition[66]);
-                          }
-            else if(findpos(actuelposition,possibleposition[49])){
-                adjacentPositions[0]=positionArray[45]; //graphVertex(possibleposition[45]);
-                adjacentPositions[1]=positionArray[48]; //graphVertex(possibleposition[48]);
-                       }
-            else if(findpos(actuelposition,possibleposition[50])){
-                adjacentPositions[0]=positionArray[51]; //graphVertex(possibleposition[51]);
-                adjacentPositions[1]=positionArray[61]; //graphVertex(possibleposition[61]);
-                       }
-            else if(findpos(actuelposition,possibleposition[51])){
-                adjacentPositions[0]=positionArray[48]; //graphVertex(possibleposition[48]);
-                adjacentPositions[1]=positionArray[50]; //graphVertex(possibleposition[50]);
-                       }
-            else if(findpos(actuelposition,possibleposition[52])){
-                adjacentPositions[0]=positionArray[47]; //graphVertex(possibleposition[47]);
-                adjacentPositions[1]=positionArray[53]; //graphVertex(possibleposition[53]);
-                       }
-            else if(findpos(actuelposition,possibleposition[53])){
-                adjacentPositions[0]=positionArray[52]; //graphVertex(possibleposition[52]);
-                adjacentPositions[1]=positionArray[58]; //graphVertex(possibleposition[58]);
-                       }
-            else if(findpos(actuelposition,possibleposition[54])){
-                adjacentPositions[0]=positionArray[42]; //graphVertex(possibleposition[42]);
-                adjacentPositions[1]=positionArray[55]; //graphVertex(possibleposition[55]);
-                adjacentPositions[2]=positionArray[57]; //graphVertex(possibleposition[57]);
-                          }
-            else if(findpos(actuelposition,possibleposition[55])){
-                adjacentPositions[0]=positionArray[54]; //graphVertex(possibleposition[54]);
-                adjacentPositions[1]=positionArray[56]; //graphVertex(possibleposition[56]);
-                       }
-            else if(findpos(actuelposition,possibleposition[56])){
-                adjacentPositions[0]=positionArray[55]; //graphVertex(possibleposition[55]);
-                adjacentPositions[1]=positionArray[57]; //graphVertex(possibleposition[57]);
-                adjacentPositions[2]=positionArray[65]; //graphVertex(possibleposition[65]);
-                          }
-            else if(findpos(actuelposition,possibleposition[57])){
-                adjacentPositions[0]=positionArray[54]; //graphVertex(possibleposition[54]);
-                adjacentPositions[1]=positionArray[56]; //graphVertex(possibleposition[56]);
-                adjacentPositions[2]=positionArray[58]; //graphVertex(possibleposition[58]);
-                adjacentPositions[3]=positionArray[64]; //graphVertex(possibleposition[64]);
-                
-            }
-            else if(findpos(actuelposition,possibleposition[58])){
-                adjacentPositions[0]=positionArray[53]; //graphVertex(possibleposition[53]);
-                adjacentPositions[1]=positionArray[57]; //graphVertex(possibleposition[57]);
-                adjacentPositions[2]=positionArray[59]; //graphVertex(possibleposition[59]);
-                          }
-            else if(findpos(actuelposition,possibleposition[59])){
-                adjacentPositions[0]=positionArray[58]; //graphVertex(possibleposition[58]);
-                adjacentPositions[1]=positionArray[60]; //graphVertex(possibleposition[60]); //error 59
-                adjacentPositions[2]=positionArray[63]; //graphVertex(possibleposition[63]);
-                          }
-            else if(findpos(actuelposition,possibleposition[60])){
-                adjacentPositions[0]=positionArray[59]; //graphVertex(possibleposition[59]);
-                adjacentPositions[1]=positionArray[61]; //graphVertex(possibleposition[61]);
-                adjacentPositions[2]=positionArray[62]; //graphVertex(possibleposition[62]);
-                          }
-            else if(findpos(actuelposition,possibleposition[61])){
-                adjacentPositions[0]=positionArray[13]; //graphVertex(possibleposition[13]);
-                adjacentPositions[1]=positionArray[50]; //graphVertex(possibleposition[50]);
-                adjacentPositions[2]=positionArray[60]; //graphVertex(possibleposition[60]);
-                          }
-            else if(findpos(actuelposition,possibleposition[62])){
-                adjacentPositions[0]=positionArray[16]; //graphVertex(possibleposition[16]);
-                adjacentPositions[1]=positionArray[60]; //graphVertex(possibleposition[60]);
-                       }
-            else if(findpos(actuelposition,possibleposition[63])){
-                adjacentPositions[0]=positionArray[59]; //graphVertex(possibleposition[59]);
-                adjacentPositions[1]=positionArray[64]; //graphVertex(possibleposition[64]);
-                       }
-            else if(findpos(actuelposition,possibleposition[64])){
-                adjacentPositions[0]=positionArray[57]; //graphVertex(possibleposition[57]);
-                adjacentPositions[1]=positionArray[63]; //graphVertex(possibleposition[63]);
-                adjacentPositions[2]=positionArray[65]; //graphVertex(possibleposition[65]);
-                          }
-            else if(findpos(actuelposition,possibleposition[65])){
-                adjacentPositions[0]=positionArray[56]; //graphVertex(possibleposition[56]);
-                adjacentPositions[1]=positionArray[64]; //graphVertex(possibleposition[64]);
-                       }
-            else if(findpos(actuelposition,possibleposition[66])){
-                adjacentPositions[0]=positionArray[47]; //graphVertex(possibleposition[47]);
-                adjacentPositions[1]=positionArray[48]; //graphVertex(possibleposition[48]);
-                       }
-    }
+
+			actualVertex=findNextVertexToConsider(listOfVerticesM, pointToAvoidP1);
+			actualVertex->alreadyVisited=true;
+			//cout<<actualVertex->position<<endl;
+			if(actualVertex->position!=goal){
+				findNeighboorVertices(actualVertex->position, actualVertex->adjacentVertices, listOfVerticesM); 
+				//we find the neighboors of our new visited vertex
+			}
+		}
+
+		//cout<<"meuejeeke"<<endl; never reached
+
+		//we should have reached our goal at this point
+
+		while(actualVertex->actuelPredecessor->actuelPredecessor!=nullptr){ //the predecessor of our predecessor
+			actualVertex=actualVertex->actuelPredecessor;
+		}
+		// the predecessor is our starting point, in other words we are now on an
+		//adjacent vertex of the start
+
+		return actualVertex->position; //we return the position of this - adjacent to start - vertex
+	}
+
+	//end of getShortestPath
+
+
+	int PacmanGhost::graphDistance(Vector3 start, Vector3 goal){
+		//cout<<hgj++<<endl;
+		Vector3 differenceVector= Vector3(abs(goal.x-start.x), 0,abs(goal.z-start.z));
+
+		return differenceVector.x+differenceVector.z;
+	}
+
+	void PacmanGhost::updateShortestDistanceToStart(graphVertex &vertex, graphVertex &neighboor){
+		//apply this method to all non visited neighboors of a vertex.
+		// This method should always be run on a vertex after we marked it as visited.
+		if(neighboor.alreadyVisited==false){ //we only consider non visited neighboors.
+			if((vertex.shortestDistanceToStart!=std::numeric_limits<int>::max())&&
+					(neighboor.shortestDistanceToStart > vertex.shortestDistanceToStart + 
+					 graphDistance(vertex.position, neighboor.position))){ //need to consider overflow case !
+
+				neighboor.shortestDistanceToStart= vertex.shortestDistanceToStart + 
+					graphDistance(vertex.position, neighboor.position);
+				neighboor.actuelPredecessor = &vertex;
+			}
+		}
+	}
+
+	void PacmanGhost::findNearestNonVisitedNeighboor (graphVertex &vertex, Vector3 pointToAvoidP3){ 
+		//find nearest non visited neighboor of a given already visited vertex
+		//(optional parameter) pointToAvoidP3 is a point that cannot be considered
+		int shortestDistance = -1;
+		graphVertex* nearestNonVisitedNeighboor=nullptr;//=graphVertex(); //by default there is not any.
+		//Also, if all neighboors are already visited, we return NULL, i.e. there is no
+		//nearest non visited neighboor.
+		for(int i=0; i < 4; i++){
+			if((vertex.adjacentVertices[i]!=nullptr)&&(vertex.adjacentVertices[i]->alreadyVisited==false)&&(vertex.adjacentVertices[i]->position!=pointToAvoidP3)){
+				if(shortestDistance==-1){   //(concerns line above) we want a non visited neighboor //(optional) if the position of the neighboor is the one we want
+					//to avoid, then we ignore it
+
+					shortestDistance= graphDistance(vertex.position, vertex.adjacentVertices[i]->position);
+					nearestNonVisitedNeighboor=vertex.adjacentVertices[i]; //warning, both sides are pointer adresses !
+					//cout<<shortestDistance<<endl;
+				}
+				else if(graphDistance(vertex.position, vertex.adjacentVertices[i]->position)<shortestDistance){
+					shortestDistance= graphDistance(vertex.position, vertex.adjacentVertices[i]->position);
+					nearestNonVisitedNeighboor=vertex.adjacentVertices[i]; //warning, both sides are pointer adresses !
+					//cout<<(hgj++)%4<<endl;
+				}
+			}
+		}
+		vertex.currentNearestNonVisitedNeighboor = nearestNonVisitedNeighboor; //warning, both sides are pointer adresses !
+		//cout<<hgj++<<endl;
+	}
+
+
+	PacmanGhost::graphVertex* PacmanGhost::findNextVertexToConsider(graphVertex listOfVerticesP[], Vector3 pointToAvoidP2){ //find next, nearest from start, non visited vertex in our listOfVertices array
+		//(optional parameter) pointToAvoidP2 is a point that cannot be considered
+
+		int shortestDistance = -1;
+		graphVertex* nextVertexToConsider;
+
+		for(int i=0; i < 67; i++){ //we loop over all possible positions 
+
+			if(listOfVerticesP[i].alreadyVisited==true){ //vertex should already be visited 
+
+				findNearestNonVisitedNeighboor(listOfVerticesP[i], pointToAvoidP2); //we update nearest neighboor
+				//of all visited vertices given that one of the nearest neighboor of a visited
+				// vertex is now also visited because it was chosen as next optimal vertex
+
+				if(listOfVerticesP[i].currentNearestNonVisitedNeighboor!=nullptr){ //we want a candidate!
+					if(shortestDistance==-1){ //our first possible candidate
+
+						shortestDistance=graphDistance(listOfVerticesP[i].position, 
+								listOfVerticesP[i].currentNearestNonVisitedNeighboor->position) + 
+							listOfVerticesP[i].shortestDistanceToStart;
+
+						nextVertexToConsider=listOfVerticesP[i].currentNearestNonVisitedNeighboor;
+						//adress of nextVertexToConsider is that of pointer currentNearestNonVisitedNeighboor
+
+					}
+					else if(shortestDistance > graphDistance(listOfVerticesP[i].position, 
+								listOfVerticesP[i].currentNearestNonVisitedNeighboor->position) + 
+							listOfVerticesP[i].shortestDistanceToStart){//if better candidate than our first candidate available
+
+						shortestDistance=graphDistance(listOfVerticesP[i].position, 
+								listOfVerticesP[i].currentNearestNonVisitedNeighboor->position) + 
+							listOfVerticesP[i].shortestDistanceToStart;
+
+						nextVertexToConsider=listOfVerticesP[i].currentNearestNonVisitedNeighboor;
+						//we dont need the & because we are not giving the adress of the array element 
+						//listOfVerticesP[i] but that of the pointer currentNearestNonVisitedNeighboor
+					}
+				}
+			}
+			//we want after all to return the nearest non visited neighboor
+		}
+
+		return nextVertexToConsider; //returns adress nextVertexToConsider is pointing to in array
+	}
+
+	//////////////////////////////////////////////////////////////////////////////////////////////
+
+	//-215 -185 -135 -70 -20 0 20 70 135 185 215 
+
+	//-195 -135 -85 -35 15 60 105 150 195 245
+
+	void PacmanGhost::findNeighboorVertices(Vector3 actuelposition, graphVertex* adjacentVertices[], graphVertex listOfVerticesP2[]){      
+
+
+		if(findpos(actuelposition,possibleposition[0])){
+			// we should use listOfVerticesP2[i] instead of possibleposition[i] I think
+			// so that all neighboors are "the same"
+			adjacentVertices[0]=&listOfVerticesP2[1]; //graphVertex(possibleposition[1]);  //need to do it everywhere !!!
+			adjacentVertices[1]=&listOfVerticesP2[17]; //graphVertex(possibleposition[17]);
+			adjacentVertices[2]=&listOfVerticesP2[19]; //graphVertex(possibleposition[19]); //maybe a vector would be more suitable ?
+		}
+		else if(findpos(actuelposition,possibleposition[1])){
+			adjacentVertices[0]=&listOfVerticesP2[0]; //graphVertex(possibleposition[0]);
+			adjacentVertices[1]=&listOfVerticesP2[2]; //graphVertex(possibleposition[2]);
+		}
+		else if(findpos(actuelposition,possibleposition[2])){
+			adjacentVertices[0]=&listOfVerticesP2[1]; //graphVertex(possibleposition[1]);
+			adjacentVertices[1]=&listOfVerticesP2[3]; //graphVertex(possibleposition[3]);
+		}
+		else if(findpos(actuelposition,possibleposition[3])){
+			adjacentVertices[0]=&listOfVerticesP2[2]; //graphVertex(possibleposition[2]);
+			adjacentVertices[1]=&listOfVerticesP2[4]; //graphVertex(possibleposition[4]);
+			adjacentVertices[2]=&listOfVerticesP2[5]; //graphVertex(possibleposition[5]);
+		}
+		else if(findpos(actuelposition,possibleposition[4])){
+			adjacentVertices[0]=&listOfVerticesP2[3]; //graphVertex(possibleposition[3]);
+			adjacentVertices[1]=&listOfVerticesP2[6]; //graphVertex(possibleposition[6]);
+		}
+		else if(findpos(actuelposition,possibleposition[5])){
+			adjacentVertices[0]=&listOfVerticesP2[3]; //graphVertex(possibleposition[3]);
+			adjacentVertices[1]=&listOfVerticesP2[7]; //graphVertex(possibleposition[7]);
+		}
+		else if(findpos(actuelposition,possibleposition[6])){
+			adjacentVertices[0]=&listOfVerticesP2[4]; //graphVertex(possibleposition[4]);
+			adjacentVertices[1]=&listOfVerticesP2[9]; //graphVertex(possibleposition[9]);
+			adjacentVertices[2]=&listOfVerticesP2[26]; //graphVertex(possibleposition[26]);
+		}
+		else if(findpos(actuelposition,possibleposition[7])){
+			adjacentVertices[0]=&listOfVerticesP2[5]; //graphVertex(possibleposition[5]);
+			adjacentVertices[1]=&listOfVerticesP2[8]; //graphVertex(possibleposition[8]);
+		}
+		else if(findpos(actuelposition,possibleposition[8])){
+			adjacentVertices[0]=&listOfVerticesP2[7]; //graphVertex(possibleposition[7]);
+			adjacentVertices[1]=&listOfVerticesP2[9]; //graphVertex(possibleposition[9]);
+		}
+		else if(findpos(actuelposition,possibleposition[9])){
+			adjacentVertices[0]=&listOfVerticesP2[6]; //graphVertex(possibleposition[6]);
+			adjacentVertices[1]=&listOfVerticesP2[8]; //graphVertex(possibleposition[8]);
+			adjacentVertices[2]=&listOfVerticesP2[10]; //graphVertex(possibleposition[10]);
+			adjacentVertices[3]=&listOfVerticesP2[38]; //graphVertex(possibleposition[38]);
+		}
+		else if(findpos(actuelposition,possibleposition[10])){
+			adjacentVertices[0]=&listOfVerticesP2[9]; //graphVertex(possibleposition[9]);
+			adjacentVertices[1]=&listOfVerticesP2[11]; //graphVertex(possibleposition[11]);
+			adjacentVertices[2]=&listOfVerticesP2[45]; //graphVertex(possibleposition[45]);
+		}
+		else if(findpos(actuelposition,possibleposition[11])){
+			adjacentVertices[0]=&listOfVerticesP2[10]; //graphVertex(possibleposition[10]);
+			adjacentVertices[1]=&listOfVerticesP2[12]; //graphVertex(possibleposition[12]);
+			adjacentVertices[2]=&listOfVerticesP2[13]; //graphVertex(possibleposition[13]);
+		}
+		else if(findpos(actuelposition,possibleposition[12])){
+			adjacentVertices[0]=&listOfVerticesP2[11]; //graphVertex(possibleposition[11]);
+			adjacentVertices[1]=&listOfVerticesP2[14]; //graphVertex(possibleposition[14]);
+		}
+		else if(findpos(actuelposition,possibleposition[13])){
+			adjacentVertices[0]=&listOfVerticesP2[11]; //graphVertex(possibleposition[11]);
+			adjacentVertices[1]=&listOfVerticesP2[14]; //graphVertex(possibleposition[14]);
+			adjacentVertices[2]=&listOfVerticesP2[16]; //graphVertex(possibleposition[16]);
+			adjacentVertices[3]=&listOfVerticesP2[61]; //graphVertex(possibleposition[61]);
+		}
+		else if(findpos(actuelposition,possibleposition[14])){
+			adjacentVertices[0]=&listOfVerticesP2[12]; //graphVertex(possibleposition[12]);
+			adjacentVertices[1]=&listOfVerticesP2[13]; //graphVertex(possibleposition[13]);
+			adjacentVertices[2]=&listOfVerticesP2[15]; //graphVertex(possibleposition[15]);
+		}
+		else if(findpos(actuelposition,possibleposition[15])){
+			adjacentVertices[0]=&listOfVerticesP2[14]; //graphVertex(possibleposition[14]);
+			adjacentVertices[1]=&listOfVerticesP2[16]; //graphVertex(possibleposition[16]);
+		}
+		else if(findpos(actuelposition,possibleposition[16])){
+			adjacentVertices[0]=&listOfVerticesP2[13]; //graphVertex(possibleposition[13]);
+			adjacentVertices[1]=&listOfVerticesP2[15]; //graphVertex(possibleposition[15]);
+			adjacentVertices[2]=&listOfVerticesP2[62]; //graphVertex(possibleposition[62]);
+		}
+		else if(findpos(actuelposition,possibleposition[17])){
+			adjacentVertices[0]=&listOfVerticesP2[0]; //graphVertex(possibleposition[0]);
+			adjacentVertices[1]=&listOfVerticesP2[25]; //graphVertex(possibleposition[25]);
+		}
+		else if(findpos(actuelposition,possibleposition[18])){
+			adjacentVertices[0]=&listOfVerticesP2[19]; //graphVertex(possibleposition[19]);
+			adjacentVertices[1]=&listOfVerticesP2[24]; //graphVertex(possibleposition[24]);                
+		}
+		else if(findpos(actuelposition,possibleposition[19])){
+			adjacentVertices[0]=&listOfVerticesP2[0]; //graphVertex(possibleposition[0]);
+			adjacentVertices[1]=&listOfVerticesP2[18]; //graphVertex(possibleposition[18]);
+			adjacentVertices[2]=&listOfVerticesP2[20]; //graphVertex(possibleposition[20]);
+		}
+		else if(findpos(actuelposition,possibleposition[20])){
+			adjacentVertices[0]=&listOfVerticesP2[19]; //graphVertex(possibleposition[19]);
+			adjacentVertices[1]=&listOfVerticesP2[21]; //graphVertex(possibleposition[21]);
+		}
+		else if(findpos(actuelposition,possibleposition[21])){
+			adjacentVertices[0]=&listOfVerticesP2[20]; //graphVertex(possibleposition[20]);
+			adjacentVertices[1]=&listOfVerticesP2[22]; //graphVertex(possibleposition[22]);
+		}
+		else if(findpos(actuelposition,possibleposition[22])){
+			adjacentVertices[0]=&listOfVerticesP2[21]; //graphVertex(possibleposition[21]);
+			adjacentVertices[1]=&listOfVerticesP2[23]; //graphVertex(possibleposition[23]);
+			adjacentVertices[2]=&listOfVerticesP2[31]; //graphVertex(possibleposition[31]);
+		}
+		else if(findpos(actuelposition,possibleposition[23])){
+			adjacentVertices[0]=&listOfVerticesP2[22]; //graphVertex(possibleposition[22]);
+			adjacentVertices[1]=&listOfVerticesP2[30]; //graphVertex(possibleposition[30]);
+		}
+		else if(findpos(actuelposition,possibleposition[24])){
+			adjacentVertices[0]=&listOfVerticesP2[18]; //graphVertex(possibleposition[18]);
+			adjacentVertices[1]=&listOfVerticesP2[29]; //graphVertex(possibleposition[29]);
+		}
+		else if(findpos(actuelposition,possibleposition[25])){
+			adjacentVertices[0]=&listOfVerticesP2[17]; //graphVertex(possibleposition[17]);
+			adjacentVertices[1]=&listOfVerticesP2[26]; //graphVertex(possibleposition[26]);
+		}
+		else if(findpos(actuelposition,possibleposition[26])){
+			adjacentVertices[0]=&listOfVerticesP2[6]; //graphVertex(possibleposition[6]);
+			adjacentVertices[1]=&listOfVerticesP2[25]; //graphVertex(possibleposition[25]);
+			adjacentVertices[2]=&listOfVerticesP2[27]; //graphVertex(possibleposition[27]);
+		}
+		else if(findpos(actuelposition,possibleposition[27])){
+			adjacentVertices[0]=&listOfVerticesP2[26]; //graphVertex(possibleposition[26]);
+			adjacentVertices[1]=&listOfVerticesP2[28]; //graphVertex(possibleposition[28]);
+			adjacentVertices[2]=&listOfVerticesP2[37]; //graphVertex(possibleposition[37]);
+		}
+		else if(findpos(actuelposition,possibleposition[28])){
+			adjacentVertices[0]=&listOfVerticesP2[27]; //graphVertex(possibleposition[27]);
+			adjacentVertices[1]=&listOfVerticesP2[29]; //graphVertex(possibleposition[29]);
+			adjacentVertices[2]=&listOfVerticesP2[36]; //graphVertex(possibleposition[36]);
+		}
+		else if(findpos(actuelposition,possibleposition[29])){
+			adjacentVertices[0]=&listOfVerticesP2[24]; //graphVertex(possibleposition[24]);
+			adjacentVertices[1]=&listOfVerticesP2[28]; //graphVertex(possibleposition[28]);
+			adjacentVertices[2]=&listOfVerticesP2[30]; //graphVertex(possibleposition[30]);
+		}
+		else if(findpos(actuelposition,possibleposition[30])){
+			adjacentVertices[0]=&listOfVerticesP2[23]; //graphVertex(possibleposition[23]);
+			adjacentVertices[1]=&listOfVerticesP2[29]; //graphVertex(possibleposition[29]);
+			adjacentVertices[2]=&listOfVerticesP2[34]; //graphVertex(possibleposition[34]);
+		}
+		else if(findpos(actuelposition,possibleposition[31])){
+			adjacentVertices[0]=&listOfVerticesP2[22]; //graphVertex(possibleposition[22]);
+			adjacentVertices[1]=&listOfVerticesP2[32]; //graphVertex(possibleposition[32]);
+		}
+		else if(findpos(actuelposition,possibleposition[32])){
+			adjacentVertices[0]=&listOfVerticesP2[31]; //graphVertex(possibleposition[31]);
+			adjacentVertices[1]=&listOfVerticesP2[33]; //graphVertex(possibleposition[33]);
+		}
+		else if(findpos(actuelposition,possibleposition[33])){
+			adjacentVertices[0]=&listOfVerticesP2[32]; //graphVertex(possibleposition[32]);
+			adjacentVertices[1]=&listOfVerticesP2[34]; //graphVertex(possibleposition[34]);
+		}
+		else if(findpos(actuelposition,possibleposition[34])){
+			adjacentVertices[0]=&listOfVerticesP2[30]; //graphVertex(possibleposition[30]);
+			adjacentVertices[1]=&listOfVerticesP2[33]; //graphVertex(possibleposition[33]);
+			adjacentVertices[2]=&listOfVerticesP2[35]; //graphVertex(possibleposition[35]);
+			adjacentVertices[3]=&listOfVerticesP2[42]; //graphVertex(possibleposition[42]);
+
+		}
+		else if(findpos(actuelposition,possibleposition[35])){
+			adjacentVertices[0]=&listOfVerticesP2[34]; //graphVertex(possibleposition[34]);
+			adjacentVertices[1]=&listOfVerticesP2[36]; //graphVertex(possibleposition[36]);
+			adjacentVertices[2]=&listOfVerticesP2[41]; //graphVertex(possibleposition[41]);
+		}
+		else if(findpos(actuelposition,possibleposition[36])){
+			adjacentVertices[0]=&listOfVerticesP2[28]; //graphVertex(possibleposition[28]);
+			adjacentVertices[1]=&listOfVerticesP2[35]; //graphVertex(possibleposition[35]);
+		}
+		else if(findpos(actuelposition,possibleposition[37])){
+			adjacentVertices[0]=&listOfVerticesP2[27]; //graphVertex(possibleposition[27]);
+			adjacentVertices[1]=&listOfVerticesP2[38]; //graphVertex(possibleposition[38]);
+		}
+		else if(findpos(actuelposition,possibleposition[38])){
+			adjacentVertices[0]=&listOfVerticesP2[9]; //graphVertex(possibleposition[9]);
+			adjacentVertices[1]=&listOfVerticesP2[37]; //graphVertex(possibleposition[37]);
+			adjacentVertices[2]=&listOfVerticesP2[39]; //graphVertex(possibleposition[39]);
+		}
+		else if(findpos(actuelposition,possibleposition[39])){
+			adjacentVertices[0]=&listOfVerticesP2[38]; //graphVertex(possibleposition[38]);
+			adjacentVertices[1]=&listOfVerticesP2[40]; //graphVertex(possibleposition[40]);
+			adjacentVertices[2]=&listOfVerticesP2[45]; //graphVertex(possibleposition[45]);
+		}
+		else if(findpos(actuelposition,possibleposition[40])){
+			adjacentVertices[0]=&listOfVerticesP2[39]; //graphVertex(possibleposition[39]);
+			adjacentVertices[1]=&listOfVerticesP2[41]; //graphVertex(possibleposition[41]);
+		}
+		else if(findpos(actuelposition,possibleposition[41])){
+			adjacentVertices[0]=&listOfVerticesP2[35]; //graphVertex(possibleposition[35]);
+			adjacentVertices[1]=&listOfVerticesP2[43]; //graphVertex(possibleposition[43]);
+			adjacentVertices[2]=&listOfVerticesP2[40]; //error meuh
+		}
+		else if(findpos(actuelposition,possibleposition[42])){
+			adjacentVertices[0]=&listOfVerticesP2[34]; //graphVertex(possibleposition[34]);
+			adjacentVertices[1]=&listOfVerticesP2[43]; //graphVertex(possibleposition[43]);
+			adjacentVertices[2]=&listOfVerticesP2[54]; //graphVertex(possibleposition[54]);
+		}
+		else if(findpos(actuelposition,possibleposition[43])){
+			adjacentVertices[0]=&listOfVerticesP2[41]; //graphVertex(possibleposition[41]);
+			adjacentVertices[1]=&listOfVerticesP2[46]; //graphVertex(possibleposition[46]);
+			adjacentVertices[2]=&listOfVerticesP2[42]; //error meuh
+		}
+		else if(findpos(actuelposition,possibleposition[44])){
+			adjacentVertices[0]=&listOfVerticesP2[40]; //graphVertex(possibleposition[40]);
+			adjacentVertices[1]=&listOfVerticesP2[66]; //graphVertex(possibleposition[66]);
+		}
+		else if(findpos(actuelposition,possibleposition[45])){
+			adjacentVertices[0]=&listOfVerticesP2[10]; //graphVertex(possibleposition[10]);
+			adjacentVertices[1]=&listOfVerticesP2[39]; //graphVertex(possibleposition[39]);
+			adjacentVertices[2]=&listOfVerticesP2[49]; //graphVertex(possibleposition[49]);
+		}
+		else if(findpos(actuelposition,possibleposition[46])){
+			adjacentVertices[0]=&listOfVerticesP2[43]; //graphVertex(possibleposition[43]);
+			adjacentVertices[1]=&listOfVerticesP2[47]; //graphVertex(possibleposition[47]);
+		}
+		else if(findpos(actuelposition,possibleposition[47])){
+			adjacentVertices[0]=&listOfVerticesP2[46]; //graphVertex(possibleposition[46]);
+			adjacentVertices[1]=&listOfVerticesP2[52]; //graphVertex(possibleposition[52]);
+			adjacentVertices[2]=&listOfVerticesP2[66]; //graphVertex(possibleposition[66]);
+		}
+		else if(findpos(actuelposition,possibleposition[48])){
+			adjacentVertices[0]=&listOfVerticesP2[49]; //graphVertex(possibleposition[49]);
+			adjacentVertices[1]=&listOfVerticesP2[51]; //graphVertex(possibleposition[51]);
+			adjacentVertices[2]=&listOfVerticesP2[66]; //graphVertex(possibleposition[66]);
+		}
+		else if(findpos(actuelposition,possibleposition[49])){
+			adjacentVertices[0]=&listOfVerticesP2[45]; //graphVertex(possibleposition[45]);
+			adjacentVertices[1]=&listOfVerticesP2[48]; //graphVertex(possibleposition[48]);
+		}
+		else if(findpos(actuelposition,possibleposition[50])){
+			adjacentVertices[0]=&listOfVerticesP2[51]; //graphVertex(possibleposition[51]);
+			adjacentVertices[1]=&listOfVerticesP2[61]; //graphVertex(possibleposition[61]);
+		}
+		else if(findpos(actuelposition,possibleposition[51])){
+			adjacentVertices[0]=&listOfVerticesP2[48]; //graphVertex(possibleposition[48]);
+			adjacentVertices[1]=&listOfVerticesP2[50]; //graphVertex(possibleposition[50]);
+		}
+		else if(findpos(actuelposition,possibleposition[52])){
+			adjacentVertices[0]=&listOfVerticesP2[47]; //graphVertex(possibleposition[47]);
+			adjacentVertices[1]=&listOfVerticesP2[53]; //graphVertex(possibleposition[53]);
+		}
+		else if(findpos(actuelposition,possibleposition[53])){
+			adjacentVertices[0]=&listOfVerticesP2[52]; //graphVertex(possibleposition[52]);
+			adjacentVertices[1]=&listOfVerticesP2[58]; //graphVertex(possibleposition[58]);
+		}
+		else if(findpos(actuelposition,possibleposition[54])){
+			adjacentVertices[0]=&listOfVerticesP2[42]; //graphVertex(possibleposition[42]);
+			adjacentVertices[1]=&listOfVerticesP2[55]; //graphVertex(possibleposition[55]);
+			adjacentVertices[2]=&listOfVerticesP2[57]; //graphVertex(possibleposition[57]);
+		}
+		else if(findpos(actuelposition,possibleposition[55])){
+			adjacentVertices[0]=&listOfVerticesP2[54]; //graphVertex(possibleposition[54]);
+			adjacentVertices[1]=&listOfVerticesP2[56]; //graphVertex(possibleposition[56]);
+		}
+		else if(findpos(actuelposition,possibleposition[56])){
+			adjacentVertices[0]=&listOfVerticesP2[55]; //graphVertex(possibleposition[55]);
+			adjacentVertices[1]=&listOfVerticesP2[57]; //graphVertex(possibleposition[57]);
+			adjacentVertices[2]=&listOfVerticesP2[65]; //graphVertex(possibleposition[65]);
+		}
+		else if(findpos(actuelposition,possibleposition[57])){
+			adjacentVertices[0]=&listOfVerticesP2[54]; //graphVertex(possibleposition[54]);
+			adjacentVertices[1]=&listOfVerticesP2[56]; //graphVertex(possibleposition[56]);
+			adjacentVertices[2]=&listOfVerticesP2[58]; //graphVertex(possibleposition[58]);
+			adjacentVertices[3]=&listOfVerticesP2[64]; //graphVertex(possibleposition[64]);
+
+		}
+		else if(findpos(actuelposition,possibleposition[58])){
+			adjacentVertices[0]=&listOfVerticesP2[53]; //graphVertex(possibleposition[53]);
+			adjacentVertices[1]=&listOfVerticesP2[57]; //graphVertex(possibleposition[57]);
+			adjacentVertices[2]=&listOfVerticesP2[59]; //graphVertex(possibleposition[59]);
+		}
+		else if(findpos(actuelposition,possibleposition[59])){
+			adjacentVertices[0]=&listOfVerticesP2[58]; //graphVertex(possibleposition[58]);
+			adjacentVertices[1]=&listOfVerticesP2[60]; //graphVertex(possibleposition[59]);
+			adjacentVertices[2]=&listOfVerticesP2[63]; //graphVertex(possibleposition[63]);
+		}
+		else if(findpos(actuelposition,possibleposition[60])){
+			adjacentVertices[0]=&listOfVerticesP2[59]; //graphVertex(possibleposition[59]);
+			adjacentVertices[1]=&listOfVerticesP2[61]; //graphVertex(possibleposition[61]);
+			adjacentVertices[2]=&listOfVerticesP2[62]; //graphVertex(possibleposition[62]);
+		}
+		else if(findpos(actuelposition,possibleposition[61])){
+			adjacentVertices[0]=&listOfVerticesP2[13]; //graphVertex(possibleposition[13]);
+			adjacentVertices[1]=&listOfVerticesP2[50]; //graphVertex(possibleposition[50]);
+			adjacentVertices[2]=&listOfVerticesP2[60]; //graphVertex(possibleposition[60]);
+		}
+		else if(findpos(actuelposition,possibleposition[62])){
+			adjacentVertices[0]=&listOfVerticesP2[16]; //graphVertex(possibleposition[16]);
+			adjacentVertices[1]=&listOfVerticesP2[60]; //graphVertex(possibleposition[60]);
+		}
+		else if(findpos(actuelposition,possibleposition[63])){
+			adjacentVertices[0]=&listOfVerticesP2[59]; //graphVertex(possibleposition[59]);
+			adjacentVertices[1]=&listOfVerticesP2[64]; //graphVertex(possibleposition[64]);
+		}
+		else if(findpos(actuelposition,possibleposition[64])){
+			adjacentVertices[0]=&listOfVerticesP2[57]; //graphVertex(possibleposition[57]);
+			adjacentVertices[1]=&listOfVerticesP2[63]; //graphVertex(possibleposition[63]);
+			adjacentVertices[2]=&listOfVerticesP2[65]; //graphVertex(possibleposition[65]);
+		}
+		else if(findpos(actuelposition,possibleposition[65])){
+			adjacentVertices[0]=&listOfVerticesP2[56]; //graphVertex(possibleposition[56]);
+			adjacentVertices[1]=&listOfVerticesP2[64]; //graphVertex(possibleposition[64]);
+		}
+		else if(findpos(actuelposition,possibleposition[66])){
+			adjacentVertices[0]=&listOfVerticesP2[47]; //graphVertex(possibleposition[47]);
+			adjacentVertices[1]=&listOfVerticesP2[48]; //graphVertex(possibleposition[48]);
+		}
+	}
+
+	//functions taken from PacmanPink
+	///////////////////////
+
+
+
+
+
+	Vector3 PacmanGhost::frontPosition(){
+
+		Vector3 neighborPos[4] = {Vector3(-1,-1,-1)};
+		Vector3 frontPoint = Vector3(0,-1,0);
+
+
+		findNeighboorPositions(this->lastPlayerPassedPoint, neighborPos, possibleposition);
+
+		for(int i=0; i<4; i++){
+
+			if((neighborPos[i]!=Vector3(-1,-1,-1))&&(neighborPos[i].y==10)){
+				//y==10 to ignore many unwanted strange positions that pop up otherwise and create SIGSEV
+
+				if(frontPoint==Vector3(0,-1,0)){
+					frontPoint=neighborPos[i];
+
+				}
+				else if (graphDistance(this->getPlayerPos(), frontPoint)>graphDistance(this->getPlayerPos(), neighborPos[i])){
+					frontPoint=neighborPos[i];
+				}
+
+			}
+		}
+
+		if(frontPoint==Vector3(0,-1,0)){
+			//default
+			return this->lastPlayerPassedPoint;
+		}
+		else{
+			//std::cout<<frontPoint<<endl;
+			return frontPoint;
+		}
+	}
+
+
+
+
+
+
+	void PacmanGhost::findNeighboorPositions(Vector3 actuelposition, Vector3 adjacentPositions[], Vector3 positionArray[]){      
+		//this function should put in adjacentPosition[] the neighboors of lastPlayerPastPoint
+
+		if(findpos(actuelposition,possibleposition[0])){
+
+
+			adjacentPositions[0]=positionArray[1]; //graphVertex(possibleposition[1]);  //need to do it everywhere !!!
+			adjacentPositions[1]=positionArray[17]; //graphVertex(possibleposition[17]);
+			adjacentPositions[2]=positionArray[19]; //graphVertex(possibleposition[19]); //maybe a vector would be more suitable ?
+		}
+		else if(findpos(actuelposition,possibleposition[1])){
+			adjacentPositions[0]=positionArray[0]; //graphVertex(possibleposition[0]);
+			adjacentPositions[1]=positionArray[2]; //graphVertex(possibleposition[2]);
+		}
+		else if(findpos(actuelposition,possibleposition[2])){
+			adjacentPositions[0]=positionArray[1]; //graphVertex(possibleposition[1]);
+			adjacentPositions[1]=positionArray[3]; //graphVertex(possibleposition[3]);
+		}
+		else if(findpos(actuelposition,possibleposition[3])){
+			adjacentPositions[0]=positionArray[2]; //graphVertex(possibleposition[2]);
+			adjacentPositions[1]=positionArray[4]; //graphVertex(possibleposition[4]);
+			adjacentPositions[2]=positionArray[5]; //graphVertex(possibleposition[5]);
+		}
+		else if(findpos(actuelposition,possibleposition[4])){
+			adjacentPositions[0]=positionArray[3]; //graphVertex(possibleposition[3]);
+			adjacentPositions[1]=positionArray[6]; //graphVertex(possibleposition[6]);
+		}
+		else if(findpos(actuelposition,possibleposition[5])){
+			adjacentPositions[0]=positionArray[3]; //graphVertex(possibleposition[3]);
+			adjacentPositions[1]=positionArray[7]; //graphVertex(possibleposition[7]);
+		}
+		else if(findpos(actuelposition,possibleposition[6])){
+			adjacentPositions[0]=positionArray[4]; //graphVertex(possibleposition[4]);
+			adjacentPositions[1]=positionArray[9]; //graphVertex(possibleposition[9]);
+			adjacentPositions[2]=positionArray[26]; //graphVertex(possibleposition[26]);
+		}
+		else if(findpos(actuelposition,possibleposition[7])){
+			adjacentPositions[0]=positionArray[5]; //graphVertex(possibleposition[5]);
+			adjacentPositions[1]=positionArray[8]; //graphVertex(possibleposition[8]);
+		}
+		else if(findpos(actuelposition,possibleposition[8])){
+			adjacentPositions[0]=positionArray[7]; //graphVertex(possibleposition[7]);
+			adjacentPositions[1]=positionArray[9]; //graphVertex(possibleposition[9]);
+		}
+		else if(findpos(actuelposition,possibleposition[9])){
+			adjacentPositions[0]=positionArray[6]; //graphVertex(possibleposition[6]);
+			adjacentPositions[1]=positionArray[8]; //graphVertex(possibleposition[8]);
+			adjacentPositions[2]=positionArray[10]; //graphVertex(possibleposition[10]);
+			adjacentPositions[3]=positionArray[38]; //graphVertex(possibleposition[38]);
+		}
+		else if(findpos(actuelposition,possibleposition[10])){
+			adjacentPositions[0]=positionArray[9]; //graphVertex(possibleposition[9]);
+			adjacentPositions[1]=positionArray[11]; //graphVertex(possibleposition[11]);
+			adjacentPositions[2]=positionArray[45]; //graphVertex(possibleposition[45]);
+		}
+		else if(findpos(actuelposition,possibleposition[11])){
+			adjacentPositions[0]=positionArray[10]; //graphVertex(possibleposition[10]);
+			adjacentPositions[1]=positionArray[12]; //graphVertex(possibleposition[12]);
+			adjacentPositions[2]=positionArray[13]; //graphVertex(possibleposition[13]);
+		}
+		else if(findpos(actuelposition,possibleposition[12])){
+			adjacentPositions[0]=positionArray[11]; //graphVertex(possibleposition[11]);
+			adjacentPositions[1]=positionArray[14]; //graphVertex(possibleposition[14]);
+		}
+		else if(findpos(actuelposition,possibleposition[13])){
+			adjacentPositions[0]=positionArray[11]; //graphVertex(possibleposition[11]);
+			adjacentPositions[1]=positionArray[14]; //graphVertex(possibleposition[14]);
+			adjacentPositions[2]=positionArray[16]; //graphVertex(possibleposition[16]);
+			adjacentPositions[3]=positionArray[61]; //graphVertex(possibleposition[61]);
+		}
+		else if(findpos(actuelposition,possibleposition[14])){
+			adjacentPositions[0]=positionArray[12]; //graphVertex(possibleposition[12]);
+			adjacentPositions[1]=positionArray[13]; //graphVertex(possibleposition[13]);
+			adjacentPositions[2]=positionArray[15]; //graphVertex(possibleposition[15]);
+		}
+		else if(findpos(actuelposition,possibleposition[15])){
+			adjacentPositions[0]=positionArray[14]; //graphVertex(possibleposition[14]);
+			adjacentPositions[1]=positionArray[16]; //graphVertex(possibleposition[16]);
+		}
+		else if(findpos(actuelposition,possibleposition[16])){
+			adjacentPositions[0]=positionArray[13]; //graphVertex(possibleposition[13]);
+			adjacentPositions[1]=positionArray[15]; //graphVertex(possibleposition[15]);
+			adjacentPositions[2]=positionArray[62]; //graphVertex(possibleposition[62]);
+		}
+		else if(findpos(actuelposition,possibleposition[17])){
+			adjacentPositions[0]=positionArray[0]; //graphVertex(possibleposition[0]);
+			adjacentPositions[1]=positionArray[25]; //graphVertex(possibleposition[25]);
+		}
+		else if(findpos(actuelposition,possibleposition[18])){
+			adjacentPositions[0]=positionArray[19]; //graphVertex(possibleposition[19]);
+			adjacentPositions[1]=positionArray[24]; //graphVertex(possibleposition[24]);                
+		}
+		else if(findpos(actuelposition,possibleposition[19])){
+			adjacentPositions[0]=positionArray[0]; //graphVertex(possibleposition[0]);
+			adjacentPositions[1]=positionArray[18]; //graphVertex(possibleposition[18]);
+			adjacentPositions[2]=positionArray[20]; //graphVertex(possibleposition[20]);
+		}
+		else if(findpos(actuelposition,possibleposition[20])){
+			adjacentPositions[0]=positionArray[19]; //graphVertex(possibleposition[19]);
+			adjacentPositions[1]=positionArray[21]; //graphVertex(possibleposition[21]);
+		}
+		else if(findpos(actuelposition,possibleposition[21])){
+			adjacentPositions[0]=positionArray[20]; //graphVertex(possibleposition[20]);
+			adjacentPositions[1]=positionArray[22]; //graphVertex(possibleposition[22]);
+		}
+		else if(findpos(actuelposition,possibleposition[22])){
+			adjacentPositions[0]=positionArray[21]; //graphVertex(possibleposition[21]);
+			adjacentPositions[1]=positionArray[23]; //graphVertex(possibleposition[23]);
+			adjacentPositions[2]=positionArray[31]; //graphVertex(possibleposition[31]);
+		}
+		else if(findpos(actuelposition,possibleposition[23])){
+			adjacentPositions[0]=positionArray[22]; //graphVertex(possibleposition[22]);
+			adjacentPositions[1]=positionArray[30]; //graphVertex(possibleposition[30]);
+		}
+		else if(findpos(actuelposition,possibleposition[24])){
+			adjacentPositions[0]=positionArray[18]; //graphVertex(possibleposition[18]);
+			adjacentPositions[1]=positionArray[29]; //graphVertex(possibleposition[29]);
+		}
+		else if(findpos(actuelposition,possibleposition[25])){
+			adjacentPositions[0]=positionArray[17]; //graphVertex(possibleposition[17]);
+			adjacentPositions[1]=positionArray[26]; //graphVertex(possibleposition[26]);
+		}
+		else if(findpos(actuelposition,possibleposition[26])){
+			adjacentPositions[0]=positionArray[6]; //graphVertex(possibleposition[6]);
+			adjacentPositions[1]=positionArray[25]; //graphVertex(possibleposition[25]);
+			adjacentPositions[2]=positionArray[27]; //graphVertex(possibleposition[27]);
+		}
+		else if(findpos(actuelposition,possibleposition[27])){
+			adjacentPositions[0]=positionArray[26]; //graphVertex(possibleposition[26]);
+			adjacentPositions[1]=positionArray[28]; //graphVertex(possibleposition[28]);
+			adjacentPositions[2]=positionArray[37]; //graphVertex(possibleposition[37]);
+		}
+		else if(findpos(actuelposition,possibleposition[28])){
+			adjacentPositions[0]=positionArray[27]; //graphVertex(possibleposition[27]);
+			adjacentPositions[1]=positionArray[29]; //graphVertex(possibleposition[29]);
+			adjacentPositions[2]=positionArray[36]; //graphVertex(possibleposition[36]);
+		}
+		else if(findpos(actuelposition,possibleposition[29])){
+			adjacentPositions[0]=positionArray[24]; //graphVertex(possibleposition[24]);
+			adjacentPositions[1]=positionArray[28]; //graphVertex(possibleposition[28]);
+			adjacentPositions[2]=positionArray[30]; //graphVertex(possibleposition[30]);
+		}
+		else if(findpos(actuelposition,possibleposition[30])){
+			adjacentPositions[0]=positionArray[23]; //graphVertex(possibleposition[23]);
+			adjacentPositions[1]=positionArray[29]; //graphVertex(possibleposition[29]);
+			adjacentPositions[2]=positionArray[34]; //graphVertex(possibleposition[34]);
+		}
+		else if(findpos(actuelposition,possibleposition[31])){
+			adjacentPositions[0]=positionArray[22]; //graphVertex(possibleposition[22]);
+			adjacentPositions[1]=positionArray[32]; //graphVertex(possibleposition[32]);
+		}
+		else if(findpos(actuelposition,possibleposition[32])){
+			adjacentPositions[0]=positionArray[31]; //graphVertex(possibleposition[31]);
+			adjacentPositions[1]=positionArray[33]; //graphVertex(possibleposition[33]);
+		}
+		else if(findpos(actuelposition,possibleposition[33])){
+			adjacentPositions[0]=positionArray[32]; //graphVertex(possibleposition[32]);
+			adjacentPositions[1]=positionArray[34]; //graphVertex(possibleposition[34]);
+		}
+		else if(findpos(actuelposition,possibleposition[34])){
+			adjacentPositions[0]=positionArray[30]; //graphVertex(possibleposition[30]);
+			adjacentPositions[1]=positionArray[33]; //graphVertex(possibleposition[33]);
+			adjacentPositions[2]=positionArray[35]; //graphVertex(possibleposition[35]);
+			adjacentPositions[3]=positionArray[42]; //graphVertex(possibleposition[42]);
+
+		}
+		else if(findpos(actuelposition,possibleposition[35])){
+			adjacentPositions[0]=positionArray[34]; //graphVertex(possibleposition[34]);
+			adjacentPositions[1]=positionArray[36]; //graphVertex(possibleposition[36]);
+			adjacentPositions[2]=positionArray[41]; //graphVertex(possibleposition[41]);
+		}
+		else if(findpos(actuelposition,possibleposition[36])){
+			adjacentPositions[0]=positionArray[28]; //graphVertex(possibleposition[28]);
+			adjacentPositions[1]=positionArray[35]; //graphVertex(possibleposition[35]);
+		}
+		else if(findpos(actuelposition,possibleposition[37])){
+			adjacentPositions[0]=positionArray[27]; //graphVertex(possibleposition[27]);
+			adjacentPositions[1]=positionArray[38]; //graphVertex(possibleposition[38]);
+		}
+		else if(findpos(actuelposition,possibleposition[38])){
+			adjacentPositions[0]=positionArray[9]; //graphVertex(possibleposition[9]);
+			adjacentPositions[1]=positionArray[37]; //graphVertex(possibleposition[37]);
+			adjacentPositions[2]=positionArray[39]; //graphVertex(possibleposition[39]);
+		}
+		else if(findpos(actuelposition,possibleposition[39])){
+			adjacentPositions[0]=positionArray[38]; //graphVertex(possibleposition[38]);
+			adjacentPositions[1]=positionArray[40]; //graphVertex(possibleposition[40]);
+			adjacentPositions[2]=positionArray[45]; //graphVertex(possibleposition[45]);
+		}
+		else if(findpos(actuelposition,possibleposition[40])){
+			adjacentPositions[0]=positionArray[39]; //graphVertex(possibleposition[39]);
+			adjacentPositions[1]=positionArray[41]; //graphVertex(possibleposition[41]);
+		}
+		else if(findpos(actuelposition,possibleposition[41])){
+			adjacentPositions[0]=positionArray[35]; //graphVertex(possibleposition[35]);
+			adjacentPositions[1]=positionArray[43]; //graphVertex(possibleposition[43]);
+			adjacentPositions[2]=positionArray[40];  //error 
+		}
+		else if(findpos(actuelposition,possibleposition[42])){
+			adjacentPositions[0]=positionArray[34]; //graphVertex(possibleposition[34]);
+			adjacentPositions[1]=positionArray[43]; //graphVertex(possibleposition[43]);
+			adjacentPositions[2]=positionArray[54]; //graphVertex(possibleposition[54]);
+		}
+		else if(findpos(actuelposition,possibleposition[43])){
+			adjacentPositions[0]=positionArray[41]; //graphVertex(possibleposition[41]);
+			adjacentPositions[1]=positionArray[46]; //graphVertex(possibleposition[46]);
+			adjacentPositions[2]=positionArray[42]; //error
+		}
+		else if(findpos(actuelposition,possibleposition[44])){
+			adjacentPositions[0]=positionArray[40]; //graphVertex(possibleposition[40]);
+			adjacentPositions[1]=positionArray[66]; //graphVertex(possibleposition[66]);
+		}
+		else if(findpos(actuelposition,possibleposition[45])){
+			adjacentPositions[0]=positionArray[10]; //graphVertex(possibleposition[10]);
+			adjacentPositions[1]=positionArray[39]; //graphVertex(possibleposition[39]);
+			adjacentPositions[2]=positionArray[49]; //graphVertex(possibleposition[49]);
+		}
+		else if(findpos(actuelposition,possibleposition[46])){
+			adjacentPositions[0]=positionArray[43]; //graphVertex(possibleposition[43]);
+			adjacentPositions[1]=positionArray[47]; //graphVertex(possibleposition[47]);
+		}
+		else if(findpos(actuelposition,possibleposition[47])){
+			adjacentPositions[0]=positionArray[46]; //graphVertex(possibleposition[46]);
+			adjacentPositions[1]=positionArray[52]; //graphVertex(possibleposition[52]);
+			adjacentPositions[2]=positionArray[66]; //graphVertex(possibleposition[66]);
+		}
+		else if(findpos(actuelposition,possibleposition[48])){
+			adjacentPositions[0]=positionArray[49]; //graphVertex(possibleposition[49]);
+			adjacentPositions[1]=positionArray[51]; //graphVertex(possibleposition[51]);
+			adjacentPositions[2]=positionArray[66]; //graphVertex(possibleposition[66]);
+		}
+		else if(findpos(actuelposition,possibleposition[49])){
+			adjacentPositions[0]=positionArray[45]; //graphVertex(possibleposition[45]);
+			adjacentPositions[1]=positionArray[48]; //graphVertex(possibleposition[48]);
+		}
+		else if(findpos(actuelposition,possibleposition[50])){
+			adjacentPositions[0]=positionArray[51]; //graphVertex(possibleposition[51]);
+			adjacentPositions[1]=positionArray[61]; //graphVertex(possibleposition[61]);
+		}
+		else if(findpos(actuelposition,possibleposition[51])){
+			adjacentPositions[0]=positionArray[48]; //graphVertex(possibleposition[48]);
+			adjacentPositions[1]=positionArray[50]; //graphVertex(possibleposition[50]);
+		}
+		else if(findpos(actuelposition,possibleposition[52])){
+			adjacentPositions[0]=positionArray[47]; //graphVertex(possibleposition[47]);
+			adjacentPositions[1]=positionArray[53]; //graphVertex(possibleposition[53]);
+		}
+		else if(findpos(actuelposition,possibleposition[53])){
+			adjacentPositions[0]=positionArray[52]; //graphVertex(possibleposition[52]);
+			adjacentPositions[1]=positionArray[58]; //graphVertex(possibleposition[58]);
+		}
+		else if(findpos(actuelposition,possibleposition[54])){
+			adjacentPositions[0]=positionArray[42]; //graphVertex(possibleposition[42]);
+			adjacentPositions[1]=positionArray[55]; //graphVertex(possibleposition[55]);
+			adjacentPositions[2]=positionArray[57]; //graphVertex(possibleposition[57]);
+		}
+		else if(findpos(actuelposition,possibleposition[55])){
+			adjacentPositions[0]=positionArray[54]; //graphVertex(possibleposition[54]);
+			adjacentPositions[1]=positionArray[56]; //graphVertex(possibleposition[56]);
+		}
+		else if(findpos(actuelposition,possibleposition[56])){
+			adjacentPositions[0]=positionArray[55]; //graphVertex(possibleposition[55]);
+			adjacentPositions[1]=positionArray[57]; //graphVertex(possibleposition[57]);
+			adjacentPositions[2]=positionArray[65]; //graphVertex(possibleposition[65]);
+		}
+		else if(findpos(actuelposition,possibleposition[57])){
+			adjacentPositions[0]=positionArray[54]; //graphVertex(possibleposition[54]);
+			adjacentPositions[1]=positionArray[56]; //graphVertex(possibleposition[56]);
+			adjacentPositions[2]=positionArray[58]; //graphVertex(possibleposition[58]);
+			adjacentPositions[3]=positionArray[64]; //graphVertex(possibleposition[64]);
+
+		}
+		else if(findpos(actuelposition,possibleposition[58])){
+			adjacentPositions[0]=positionArray[53]; //graphVertex(possibleposition[53]);
+			adjacentPositions[1]=positionArray[57]; //graphVertex(possibleposition[57]);
+			adjacentPositions[2]=positionArray[59]; //graphVertex(possibleposition[59]);
+		}
+		else if(findpos(actuelposition,possibleposition[59])){
+			adjacentPositions[0]=positionArray[58]; //graphVertex(possibleposition[58]);
+			adjacentPositions[1]=positionArray[60]; //graphVertex(possibleposition[60]); //error 59
+			adjacentPositions[2]=positionArray[63]; //graphVertex(possibleposition[63]);
+		}
+		else if(findpos(actuelposition,possibleposition[60])){
+			adjacentPositions[0]=positionArray[59]; //graphVertex(possibleposition[59]);
+			adjacentPositions[1]=positionArray[61]; //graphVertex(possibleposition[61]);
+			adjacentPositions[2]=positionArray[62]; //graphVertex(possibleposition[62]);
+		}
+		else if(findpos(actuelposition,possibleposition[61])){
+			adjacentPositions[0]=positionArray[13]; //graphVertex(possibleposition[13]);
+			adjacentPositions[1]=positionArray[50]; //graphVertex(possibleposition[50]);
+			adjacentPositions[2]=positionArray[60]; //graphVertex(possibleposition[60]);
+		}
+		else if(findpos(actuelposition,possibleposition[62])){
+			adjacentPositions[0]=positionArray[16]; //graphVertex(possibleposition[16]);
+			adjacentPositions[1]=positionArray[60]; //graphVertex(possibleposition[60]);
+		}
+		else if(findpos(actuelposition,possibleposition[63])){
+			adjacentPositions[0]=positionArray[59]; //graphVertex(possibleposition[59]);
+			adjacentPositions[1]=positionArray[64]; //graphVertex(possibleposition[64]);
+		}
+		else if(findpos(actuelposition,possibleposition[64])){
+			adjacentPositions[0]=positionArray[57]; //graphVertex(possibleposition[57]);
+			adjacentPositions[1]=positionArray[63]; //graphVertex(possibleposition[63]);
+			adjacentPositions[2]=positionArray[65]; //graphVertex(possibleposition[65]);
+		}
+		else if(findpos(actuelposition,possibleposition[65])){
+			adjacentPositions[0]=positionArray[56]; //graphVertex(possibleposition[56]);
+			adjacentPositions[1]=positionArray[64]; //graphVertex(possibleposition[64]);
+		}
+		else if(findpos(actuelposition,possibleposition[66])){
+			adjacentPositions[0]=positionArray[47]; //graphVertex(possibleposition[47]);
+			adjacentPositions[1]=positionArray[48]; //graphVertex(possibleposition[48]);
+		}
+	}
 
 
Index: code/branches/3DPacman_FS19/src/modules/pacman/PacmanPink.cc
===================================================================
--- code/branches/3DPacman_FS19/src/modules/pacman/PacmanPink.cc	(revision 12337)
+++ code/branches/3DPacman_FS19/src/modules/pacman/PacmanPink.cc	(revision 12338)
@@ -45,11 +45,7 @@
             }
 
-        int directionV = findPlayerTravDir (lastPlayerPassedPoint, this->getPlayerPos());
         this->pointInFrontOfPlayer=frontPosition(); //getPointInFrontOfPacman(lastPlayerPassedPoint, directionV);
-        //std::cout<<this->pointInFrontOfPlayer<<endl;
-        //std::cout<<this->lastPlayerPassedPoint<<endl;
 
         Vector3 pinkPos=Vector3(this->target_x, 10, this->target_z);
-        //std::cout<<pinkPos<<endl;
         
         //Stop, if target arrived
@@ -91,13 +87,6 @@
             lockmove = true;
 
-            //Vector3 pinkPos=Vector3(this->target_x, 10, this->target_z);
-            //std::cout<<pinkPos<<endl;
-
-            //int directionV = findPlayerTravDir (lastPlayerPassedPoint, this->getPlayerPos());
             //this->pointInFrontOfPlayer=getPointInFrontOfPacman(lastPlayerPassedPoint, directionV);
             
-            //std::cout<<this->lastPlayerPassedPoint<<endl;
-
-            //std::cout<<this->pointInFrontOfPlayer<<endl;
             nextMove(pinkPos, pointInFrontOfPlayer, lastPlayerPassedPoint);
 
@@ -119,9 +108,11 @@
         Vector3 nextTarget;
 
-        std::cout<<this->actuelposition<<endl;
+        /*std::cout<<this->actuelposition<<endl;
         std::cout<<pinkPosP<<endl;
         std::cout<<playerPos<<endl;
         std::cout<<pointToAvoidP11<<endl;
-        std::cout<<this->getPlayerPos()<<endl;
+        std::cout<<this->getPlayerPos()<<endl;*/
+        std::cout<<playerPos<<endl;
+        std::cout<<"kok"<<endl;
 
         if(playerPos==pointToAvoidP11){ //SIGSEV if playerPos==pointToAvoidP11 otherwise
@@ -131,10 +122,20 @@
             nextTarget=getShortestPath(pinkPosP, playerPos);
         }*/
+        else if((playerPos==Vector3(-70,10,-35))/*||(playerPos==Vector3(-20,10,-35))||(playerPos==Vector3(0,10,-35))*/){
+            //nextTarget=pinkPosP;
+        nextTarget=getShortestPath(pinkPosP, Vector3(-70,10,-35));
+        std::cout<<"ChaillyVillage"<<endl;
+        }
+        /*else if((playerPos==Vector3(-70,10,-35))&&(pinkPosP==Vector3(-70,10,60))/*||(playerPos==Vector3(-20,10,-35))||(playerPos==Vector3(0,10,-35))){
+            //nextTarget=pinkPosP;
+        nextTarget=getShortestPath(pinkPosP, Vector3(-70,10,-35));
+        std::cout<<"ChaillyVillage"<<endl;
+        }*/
         else{
             //bugs here
-            std::cout<<"msjiowjqiq"<<endl;
+            std::cout<<pinkPosP<<endl;
         nextTarget = getShortestPath(pinkPosP, playerPos, pointToAvoidP11);
         }
-    
+        std::cout<<nextTarget<<endl;
        setNewTargetGhost(nextTarget);
     }
Index: code/branches/3DPacman_FS19/src/modules/pacman/PacmanRed.cc
===================================================================
--- code/branches/3DPacman_FS19/src/modules/pacman/PacmanRed.cc	(revision 12337)
+++ code/branches/3DPacman_FS19/src/modules/pacman/PacmanRed.cc	(revision 12338)
@@ -54,14 +54,4 @@
             }
 
-
-        /*if((playerFindPos(this->actuelposition, this->getPlayerPos()))&&(isNearPlayer==false)){
-            isNearPlayer=true;
-            setNewTargetRed(this->getPlayerPos());
-        }
-        else if (!(playerFindPos(this->actuelposition, this->getPlayerPos())&&(isNearPlayer==true))){
-            isNearPlayer=false;
-            setNewTargetRed(this->pointInFrontOfPlayer); 
-        }*/
-
             std::cout<<this->lastPlayerPassedPoint<<endl;
             std::cout<<this->pointInFrontOfPlayer<<endl;
@@ -110,5 +100,4 @@
             //nextMove(this->getPlayerPos(), redPos);
 
-            int directionV = findPlayerTravDir (lastPlayerPassedPoint, this->getPlayerPos());
             this->pointInFrontOfPlayer=frontPosition(); //getPointInFrontOfPacman(lastPlayerPassedPoint, directionV);
 
Index: code/branches/3DPacman_FS19/src/modules/pacman/getShortestPath.cc
===================================================================
--- code/branches/3DPacman_FS19/src/modules/pacman/getShortestPath.cc	(revision 12337)
+++ 	(revision )
@@ -1,508 +1,0 @@
-    #include "core/CoreIncludes.h"
-    #include "core/XMLPort.h"
-    //#include "getShortestPath.h"
-    #include "PacmanGhost.h"
-
-
-    #include "worldentities/ControllableEntity.h"
-    using namespace std;
-
-    namespace orxonox{
-
-        struct graphVertex {
-
-            Vector3 position;
-            graphVertex *adjacentVertices[4]; //neighbooring vertices
-
-            //would a vector of vector storing the neighboors not be more suitable ?
-
-            int shortestDistanceToStart; //actual shortest distance to start point
-            graphVertex* actuelPredecessor; //the predecessor giving the for now shortest 
-                                            //path to start
-            graphVertex* currentNearestNonVisitedNeighboor; 
-            bool alreadyVisited;
-            graphVertex(){ //default constructor
-                position=0;
-                shortestDistanceToStart= std::numeric_limits<int>::max();
-                actuelPredecessor=NULL;
-                alreadyVisited=false;
-                for(int kl =0; kl <4;kl++){
-                    adjacentVertices[kl]=NULL;  //first put all position in array listing neighboors to 0
-                }
-            }
-            graphVertex(Vector3 wantedPosition){  //normal constructor
-                position=wantedPosition;
-                shortestDistanceToStart= std::numeric_limits<int>::max(); //default distance is infinity
-                actuelPredecessor=NULL;
-                alreadyVisited=false;
-                for(int kl =0; kl <4;kl++){
-                    adjacentVertices[kl]=NULL;  //first put all position in array listing neighboors to 0
-                }
-            }
-            graphVertex* operator = (graphVertex *rightSide){
-            this->position=rightSide->position;
-            this->actuelPredecessor=rightSide->actuelPredecessor;
-            return this;
-        }
-
-        };
-
-        graphVertex listOfVertices[67];
-
-        Vector3 getShortestPath(Vector3 start, Vector3 goal){
-        //this function should then somehow produce the algorithm and call all other functions
-        //and finally return the best neighboor of the actual position of the pacman
-        
-
-        if(start==goal){ // basic case
-            return start;
-        }
-       
-
-        for(int an=0; an < 67; an++){
-      listOfVertices[an]=  graphVertex(possibleposition[an]); //same position order as in other file
-        }
-
-        graphVertex actualVertex= graphVertex(start);
-
-        actualVertex.alreadyVisited=true;
-        actualVertex.shortestDistanceToStart=0;
-        findNeighboorVertices(actualVertex.position, *actualVertex.adjacentVertices); 
-        // second parameter is an array !
-        
-        while(actualVertex.position!=goal){
-            for(int h=0;h < 4; h++){
-                if(actualVertex.adjacentVertices[h]!=NULL){
-                    updateShortestDistanceToStart(actualVertex, *actualVertex.adjacentVertices[h]);
-                } //we "update" the neighboors of our new visited vertex
-            }
-            
-
-            actualVertex=findNextVertexToConsider(listOfVertices);
-            actualVertex.alreadyVisited=true;
-            if(actualVertex.position!=goal){
-                findNeighboorVertices(actualVertex.position,*actualVertex.adjacentVertices); 
-                //we find the neighboors of our new visited vertex
-                }
-        }
-
-        //we should have reached our goal at this point
-
-        while(actualVertex.actuelPredecessor->actuelPredecessor!=NULL){
-            actualVertex=actualVertex.actuelPredecessor;
-        }
-        // the predecessor is our starting point, in other words we are now on an
-        //adjacent vertex of the start
-
-        return actualVertex.position; //we return the position of this adjacent vertex
-    }
-
-    int graphDistance(Vector3 start, Vector3 goal){
-
-        Vector3 differenceVector= Vector3(abs(goal.x-start.x), 0,abs(goal.z-start.z));
-
-        return differenceVector.x+differenceVector.z;
-    }
-
-    void updateShortestDistanceToStart(graphVertex &vertex, graphVertex &neighboor){
-        //apply this method to all non visited neighboors of a vertex.
-        // This method should always be run on a vertex after we marked it as visited.
-        if(neighboor.alreadyVisited==false){ //we only consider non visited neighboors.
-            if(neighboor.shortestDistanceToStart > vertex.shortestDistanceToStart + 
-                graphDistance(vertex.position, neighboor.position)){
-
-                neighboor.shortestDistanceToStart= vertex.shortestDistanceToStart + 
-                graphDistance(vertex.position, neighboor.position);
-                neighboor.actuelPredecessor = &vertex;
-            }
-        }
-
-    }
-
-    void findNearestNonVisitedNeighboor (graphVertex &vertex){ 
-            //find nearest non visited neighboor of a given already visited vertex
-        int shortestDistance = -1;
-        graphVertex nearestNonVisitedNeighboor=graphVertex(); //by default there is not any.
-        //Also, if all neighboors are already visited, we return NULL, i.e. there is no
-        //nearest non visited neighboor.
-        for(int i=0; i < 4; i++){
-            if((vertex.adjacentVertices[i]!=NULL)&&(vertex.adjacentVertices[i]->alreadyVisited==false)){
-                if(shortestDistance==-1){   //(concerns line above) we want a non visited neighboor
-                    shortestDistance= graphDistance(vertex.position, vertex.adjacentVertices[i]->position);
-                    nearestNonVisitedNeighboor=vertex.adjacentVertices[i];
-                }
-                else if(graphDistance(vertex.position, vertex.adjacentVertices[i]->position)<shortestDistance){
-                    shortestDistance= graphDistance(vertex.position, vertex.adjacentVertices[i]->position);
-                    nearestNonVisitedNeighboor=vertex.adjacentVertices[i];
-                }
-            }
-        }
-        vertex.currentNearestNonVisitedNeighboor = &nearestNonVisitedNeighboor;
-    }
-
-
-    graphVertex findNextVertexToConsider(graphVertex listOfVerticesP[]){ //find next, nearest from start, non visited vertex 
-
-        int shortestDistance = -1;
-        graphVertex nextVertexToConsider;
-
-        for(int i=0; i < 67; i++){ //we loop over all possible positions 
-
-            if(listOfVerticesP[i].alreadyVisited==true){ //vertex should already be visited 
-
-                findNearestNonVisitedNeighboor(listOfVerticesP[i]); //we update nearest neighboor
-                //of all visited vertices given that one of the nearest neighboor of a visited
-                // vertex is now also visited because it was chosen as next optimal vertex
-
-                if(listOfVerticesP[i].currentNearestNonVisitedNeighboor!=NULL){ //we want a candidate!
-                if(shortestDistance==-1){ //our first possible candidate
-
-            shortestDistance=graphDistance(listOfVerticesP[i].position, 
-            listOfVerticesP[i].currentNearestNonVisitedNeighboor->position) + 
-            listOfVerticesP[i].shortestDistanceToStart;
-
-            nextVertexToConsider=listOfVerticesP[i].currentNearestNonVisitedNeighboor;
-
-                }
-                else if(shortestDistance > graphDistance(listOfVerticesP[i].position, 
-                listOfVerticesP[i].currentNearestNonVisitedNeighboor->position) + 
-                    listOfVerticesP[i].shortestDistanceToStart){
-
-            shortestDistance=graphDistance(listOfVerticesP[i].position, 
-            listOfVerticesP[i].currentNearestNonVisitedNeighboor->position) + 
-            listOfVerticesP[i].shortestDistanceToStart;
-
-            nextVertexToConsider=listOfVerticesP[i].currentNearestNonVisitedNeighboor;
-                    }
-                }
-            }
-            //we want after all to return the nearest non visited neighboor
-        }
-
-        return nextVertexToConsider;
-    }
-
-    //////////////////////////////////////////////////////////////////////////////////////////////
-
-    //if vertex already visited, call function on it and reapeat until you reach non visited vertex
-    // ---> not sure if a good idea because we risk infinite loop
-
-    //-215 -185 -135 -70 -20 0 20 70 135 185 215 
-
-    //-195 -135 -85 -35 15 60 105 150 195 245
-
-    void findNeighboorVertices(Vector3 actuelposition, graphVertex* adjacentVertices[]){      
-
-
-            if(findpos(actuelposition,possibleposition[0])){
-                // we should use listOfVertices[i] instead of possibleposition[i] I think
-                // so that all neighboors are "the same"
-                adjacentVertices[0]=&listOfVertices[1]; //graphVertex(possibleposition[1]);  //need to do it everywhere !!!
-                adjacentVertices[1]=&listOfVertices[17]; //graphVertex(possibleposition[17]);
-                adjacentVertices[2]=&listOfVertices[19]; //graphVertex(possibleposition[19]); //maybe a vector would be more suitable ?
-            }
-            else if(findpos(actuelposition,possibleposition[1])){
-                adjacentVertices[0]=&listOfVertices[0]; //graphVertex(possibleposition[0]);
-                adjacentVertices[1]=&listOfVertices[2]; //graphVertex(possibleposition[2]);
-            }
-            else if(findpos(actuelposition,possibleposition[2])){
-                adjacentVertices[0]=&listOfVertices[1]; //graphVertex(possibleposition[1]);
-                adjacentVertices[1]=&listOfVertices[3]; //graphVertex(possibleposition[3]);
-            }
-            else if(findpos(actuelposition,possibleposition[3])){
-                adjacentVertices[0]=&listOfVertices[2]; //graphVertex(possibleposition[2]);
-                adjacentVertices[1]=&listOfVertices[4]; //graphVertex(possibleposition[4]);
-                adjacentVertices[2]=&listOfVertices[5]; //graphVertex(possibleposition[5]);
-            }
-            else if(findpos(actuelposition,possibleposition[4])){
-                adjacentVertices[0]=&listOfVertices[3]; //graphVertex(possibleposition[3]);
-                adjacentVertices[1]=&listOfVertices[6]; //graphVertex(possibleposition[6]);
-            }
-            else if(findpos(actuelposition,possibleposition[5])){
-                adjacentVertices[0]=&listOfVertices[3]; //graphVertex(possibleposition[3]);
-                adjacentVertices[1]=&listOfVertices[7]; //graphVertex(possibleposition[7]);
-            }
-            else if(findpos(actuelposition,possibleposition[6])){
-                adjacentVertices[0]=&listOfVertices[4]; //graphVertex(possibleposition[4]);
-                adjacentVertices[1]=&listOfVertices[9]; //graphVertex(possibleposition[9]);
-                adjacentVertices[2]=&listOfVertices[26]; //graphVertex(possibleposition[26]);
-            }
-            else if(findpos(actuelposition,possibleposition[7])){
-                adjacentVertices[0]=&listOfVertices[5]; //graphVertex(possibleposition[5]);
-                adjacentVertices[1]=&listOfVertices[8]; //graphVertex(possibleposition[8]);
-            }
-            else if(findpos(actuelposition,possibleposition[8])){
-                adjacentVertices[0]=&listOfVertices[7]; //graphVertex(possibleposition[7]);
-                adjacentVertices[1]=&listOfVertices[9]; //graphVertex(possibleposition[9]);
-            }
-            else if(findpos(actuelposition,possibleposition[9])){
-                adjacentVertices[0]=&listOfVertices[6]; //graphVertex(possibleposition[6]);
-                adjacentVertices[1]=&listOfVertices[8]; //graphVertex(possibleposition[8]);
-                adjacentVertices[2]=&listOfVertices[10]; //graphVertex(possibleposition[10]);
-                adjacentVertices[3]=&listOfVertices[38]; //graphVertex(possibleposition[38]);
-            }
-            else if(findpos(actuelposition,possibleposition[10])){
-                adjacentVertices[0]=&listOfVertices[9]; //graphVertex(possibleposition[9]);
-                adjacentVertices[1]=&listOfVertices[11]; //graphVertex(possibleposition[11]);
-                adjacentVertices[2]=&listOfVertices[45]; //graphVertex(possibleposition[45]);
-            }
-            else if(findpos(actuelposition,possibleposition[11])){
-                adjacentVertices[0]=&listOfVertices[10]; //graphVertex(possibleposition[10]);
-                adjacentVertices[1]=&listOfVertices[12]; //graphVertex(possibleposition[12]);
-                adjacentVertices[2]=&listOfVertices[13]; //graphVertex(possibleposition[13]);
-            }
-            else if(findpos(actuelposition,possibleposition[12])){
-                adjacentVertices[0]=&listOfVertices[11]; //graphVertex(possibleposition[11]);
-                adjacentVertices[1]=&listOfVertices[14]; //graphVertex(possibleposition[14]);
-            }
-            else if(findpos(actuelposition,possibleposition[13])){
-                adjacentVertices[0]=&listOfVertices[11]; //graphVertex(possibleposition[11]);
-                adjacentVertices[1]=&listOfVertices[14]; //graphVertex(possibleposition[14]);
-                adjacentVertices[2]=&listOfVertices[16]; //graphVertex(possibleposition[16]);
-                adjacentVertices[3]=&listOfVertices[61]; //graphVertex(possibleposition[61]);
-            }
-            else if(findpos(actuelposition,possibleposition[14])){
-                adjacentVertices[0]=&listOfVertices[12]; //graphVertex(possibleposition[12]);
-                adjacentVertices[1]=&listOfVertices[13]; //graphVertex(possibleposition[13]);
-                adjacentVertices[2]=&listOfVertices[15]; //graphVertex(possibleposition[15]);
-            }
-            else if(findpos(actuelposition,possibleposition[15])){
-                adjacentVertices[0]=&listOfVertices[14]; //graphVertex(possibleposition[14]);
-                adjacentVertices[1]=&listOfVertices[16]; //graphVertex(possibleposition[16]);
-            }
-            else if(findpos(actuelposition,possibleposition[16])){
-                adjacentVertices[0]=&listOfVertices[13]; //graphVertex(possibleposition[13]);
-                adjacentVertices[1]=&listOfVertices[15]; //graphVertex(possibleposition[15]);
-                adjacentVertices[2]=&listOfVertices[62]; //graphVertex(possibleposition[62]);
-            }
-            else if(findpos(actuelposition,possibleposition[17])){
-                adjacentVertices[0]=&listOfVertices[0]; //graphVertex(possibleposition[0]);
-                adjacentVertices[1]=&listOfVertices[25]; //graphVertex(possibleposition[25]);
-            }
-            else if(findpos(actuelposition,possibleposition[18])){
-                adjacentVertices[0]=&listOfVertices[19]; //graphVertex(possibleposition[19]);
-                adjacentVertices[1]=&listOfVertices[24]; //graphVertex(possibleposition[24]);                
-            }
-            else if(findpos(actuelposition,possibleposition[19])){
-                adjacentVertices[0]=&listOfVertices[0]; //graphVertex(possibleposition[0]);
-                adjacentVertices[1]=&listOfVertices[18]; //graphVertex(possibleposition[18]);
-                adjacentVertices[2]=&listOfVertices[20]; //graphVertex(possibleposition[20]);
-                         }
-            else if(findpos(actuelposition,possibleposition[20])){
-                adjacentVertices[0]=&listOfVertices[19]; //graphVertex(possibleposition[19]);
-                adjacentVertices[1]=&listOfVertices[21]; //graphVertex(possibleposition[21]);
-                       }
-            else if(findpos(actuelposition,possibleposition[21])){
-                adjacentVertices[0]=&listOfVertices[20]; //graphVertex(possibleposition[20]);
-                adjacentVertices[1]=&listOfVertices[22]; //graphVertex(possibleposition[22]);
-                       }
-            else if(findpos(actuelposition,possibleposition[22])){
-                adjacentVertices[0]=&listOfVertices[21]; //graphVertex(possibleposition[21]);
-                adjacentVertices[1]=&listOfVertices[23]; //graphVertex(possibleposition[23]);
-                adjacentVertices[2]=&listOfVertices[31]; //graphVertex(possibleposition[31]);
-                          }
-            else if(findpos(actuelposition,possibleposition[23])){
-                adjacentVertices[0]=&listOfVertices[22]; //graphVertex(possibleposition[22]);
-                adjacentVertices[1]=&listOfVertices[30]; //graphVertex(possibleposition[30]);
-                       }
-            else if(findpos(actuelposition,possibleposition[24])){
-                adjacentVertices[0]=&listOfVertices[18]; //graphVertex(possibleposition[18]);
-                adjacentVertices[1]=&listOfVertices[29]; //graphVertex(possibleposition[29]);
-                       }
-            else if(findpos(actuelposition,possibleposition[25])){
-                adjacentVertices[0]=&listOfVertices[17]; //graphVertex(possibleposition[17]);
-                adjacentVertices[1]=&listOfVertices[26]; //graphVertex(possibleposition[26]);
-                       }
-            else if(findpos(actuelposition,possibleposition[26])){
-                adjacentVertices[0]=&listOfVertices[6]; //graphVertex(possibleposition[6]);
-                adjacentVertices[1]=&listOfVertices[25]; //graphVertex(possibleposition[25]);
-                adjacentVertices[2]=&listOfVertices[27]; //graphVertex(possibleposition[27]);
-                         }
-            else if(findpos(actuelposition,possibleposition[27])){
-                adjacentVertices[0]=&listOfVertices[26]; //graphVertex(possibleposition[26]);
-                adjacentVertices[1]=&listOfVertices[28]; //graphVertex(possibleposition[28]);
-                adjacentVertices[2]=&listOfVertices[37]; //graphVertex(possibleposition[37]);
-                          }
-            else if(findpos(actuelposition,possibleposition[28])){
-                adjacentVertices[0]=&listOfVertices[27]; //graphVertex(possibleposition[27]);
-                adjacentVertices[1]=&listOfVertices[29]; //graphVertex(possibleposition[29]);
-                adjacentVertices[2]=&listOfVertices[36]; //graphVertex(possibleposition[36]);
-                          }
-            else if(findpos(actuelposition,possibleposition[29])){
-                adjacentVertices[0]=&listOfVertices[24]; //graphVertex(possibleposition[24]);
-                adjacentVertices[1]=&listOfVertices[28]; //graphVertex(possibleposition[28]);
-                adjacentVertices[2]=&listOfVertices[30]; //graphVertex(possibleposition[30]);
-                          }
-            else if(findpos(actuelposition,possibleposition[30])){
-                adjacentVertices[0]=&listOfVertices[23]; //graphVertex(possibleposition[23]);
-                adjacentVertices[1]=&listOfVertices[29]; //graphVertex(possibleposition[29]);
-                adjacentVertices[2]=&listOfVertices[34]; //graphVertex(possibleposition[34]);
-                          }
-            else if(findpos(actuelposition,possibleposition[31])){
-                adjacentVertices[0]=&listOfVertices[22]; //graphVertex(possibleposition[22]);
-                adjacentVertices[1]=&listOfVertices[32]; //graphVertex(possibleposition[32]);
-                       }
-            else if(findpos(actuelposition,possibleposition[32])){
-                adjacentVertices[0]=&listOfVertices[31]; //graphVertex(possibleposition[31]);
-                adjacentVertices[1]=&listOfVertices[33]; //graphVertex(possibleposition[33]);
-                       }
-            else if(findpos(actuelposition,possibleposition[33])){
-                adjacentVertices[0]=&listOfVertices[32]; //graphVertex(possibleposition[32]);
-                adjacentVertices[1]=&listOfVertices[34]; //graphVertex(possibleposition[34]);
-                       }
-            else if(findpos(actuelposition,possibleposition[34])){
-                adjacentVertices[0]=&listOfVertices[30]; //graphVertex(possibleposition[30]);
-                adjacentVertices[1]=&listOfVertices[33]; //graphVertex(possibleposition[33]);
-                adjacentVertices[2]=&listOfVertices[35]; //graphVertex(possibleposition[35]);
-                adjacentVertices[3]=&listOfVertices[42]; //graphVertex(possibleposition[42]);
-                
-            }
-            else if(findpos(actuelposition,possibleposition[35])){
-                adjacentVertices[0]=&listOfVertices[34]; //graphVertex(possibleposition[34]);
-                adjacentVertices[1]=&listOfVertices[36]; //graphVertex(possibleposition[36]);
-                adjacentVertices[2]=&listOfVertices[41]; //graphVertex(possibleposition[41]);
-                          }
-            else if(findpos(actuelposition,possibleposition[36])){
-                adjacentVertices[0]=&listOfVertices[28]; //graphVertex(possibleposition[28]);
-                adjacentVertices[1]=&listOfVertices[35]; //graphVertex(possibleposition[35]);
-                       }
-            else if(findpos(actuelposition,possibleposition[37])){
-                adjacentVertices[0]=&listOfVertices[27]; //graphVertex(possibleposition[27]);
-                adjacentVertices[1]=&listOfVertices[38]; //graphVertex(possibleposition[38]);
-                       }
-            else if(findpos(actuelposition,possibleposition[38])){
-                adjacentVertices[0]=&listOfVertices[9]; //graphVertex(possibleposition[9]);
-                adjacentVertices[1]=&listOfVertices[37]; //graphVertex(possibleposition[37]);
-                adjacentVertices[2]=&listOfVertices[39]; //graphVertex(possibleposition[39]);
-                         }
-            else if(findpos(actuelposition,possibleposition[39])){
-                adjacentVertices[0]=&listOfVertices[38]; //graphVertex(possibleposition[38]);
-                adjacentVertices[1]=&listOfVertices[40]; //graphVertex(possibleposition[40]);
-                adjacentVertices[2]=&listOfVertices[45]; //graphVertex(possibleposition[45]);
-                          }
-            else if(findpos(actuelposition,possibleposition[40])){
-                adjacentVertices[0]=&listOfVertices[39]; //graphVertex(possibleposition[39]);
-                adjacentVertices[1]=&listOfVertices[41]; //graphVertex(possibleposition[41]);
-            }
-            else if(findpos(actuelposition,possibleposition[41])){
-                adjacentVertices[0]=&listOfVertices[35]; //graphVertex(possibleposition[35]);
-                adjacentVertices[1]=&listOfVertices[43]; //graphVertex(possibleposition[43]);
-                       }
-            else if(findpos(actuelposition,possibleposition[42])){
-                adjacentVertices[0]=&listOfVertices[34]; //graphVertex(possibleposition[34]);
-                adjacentVertices[1]=&listOfVertices[43]; //graphVertex(possibleposition[43]);
-                adjacentVertices[2]=&listOfVertices[54]; //graphVertex(possibleposition[54]);
-                          }
-            else if(findpos(actuelposition,possibleposition[43])){
-                adjacentVertices[0]=&listOfVertices[41]; //graphVertex(possibleposition[41]);
-                adjacentVertices[1]=&listOfVertices[46]; //graphVertex(possibleposition[46]);
-                       }
-            else if(findpos(actuelposition,possibleposition[44])){
-                adjacentVertices[0]=&listOfVertices[40]; //graphVertex(possibleposition[40]);
-                adjacentVertices[1]=&listOfVertices[66]; //graphVertex(possibleposition[66]);
-                       }
-            else if(findpos(actuelposition,possibleposition[45])){
-                adjacentVertices[0]=&listOfVertices[10]; //graphVertex(possibleposition[10]);
-                adjacentVertices[1]=&listOfVertices[39]; //graphVertex(possibleposition[39]);
-                adjacentVertices[2]=&listOfVertices[49]; //graphVertex(possibleposition[49]);
-                          }
-            else if(findpos(actuelposition,possibleposition[46])){
-                adjacentVertices[0]=&listOfVertices[43]; //graphVertex(possibleposition[43]);
-                adjacentVertices[1]=&listOfVertices[47]; //graphVertex(possibleposition[47]);
-                       }
-            else if(findpos(actuelposition,possibleposition[47])){
-                adjacentVertices[0]=&listOfVertices[46]; //graphVertex(possibleposition[46]);
-                adjacentVertices[1]=&listOfVertices[52]; //graphVertex(possibleposition[52]);
-                adjacentVertices[2]=&listOfVertices[66]; //graphVertex(possibleposition[66]);
-                          }
-            else if(findpos(actuelposition,possibleposition[48])){
-                adjacentVertices[0]=&listOfVertices[49]; //graphVertex(possibleposition[49]);
-                adjacentVertices[1]=&listOfVertices[51]; //graphVertex(possibleposition[51]);
-                adjacentVertices[2]=&listOfVertices[66]; //graphVertex(possibleposition[66]);
-                          }
-            else if(findpos(actuelposition,possibleposition[49])){
-                adjacentVertices[0]=&listOfVertices[45]; //graphVertex(possibleposition[45]);
-                adjacentVertices[1]=&listOfVertices[48]; //graphVertex(possibleposition[48]);
-                       }
-            else if(findpos(actuelposition,possibleposition[50])){
-                adjacentVertices[0]=&listOfVertices[51]; //graphVertex(possibleposition[51]);
-                adjacentVertices[1]=&listOfVertices[61]; //graphVertex(possibleposition[61]);
-                       }
-            else if(findpos(actuelposition,possibleposition[51])){
-                adjacentVertices[0]=&listOfVertices[48]; //graphVertex(possibleposition[48]);
-                adjacentVertices[1]=&listOfVertices[50]; //graphVertex(possibleposition[50]);
-                       }
-            else if(findpos(actuelposition,possibleposition[52])){
-                adjacentVertices[0]=&listOfVertices[47]; //graphVertex(possibleposition[47]);
-                adjacentVertices[1]=&listOfVertices[53]; //graphVertex(possibleposition[53]);
-                       }
-            else if(findpos(actuelposition,possibleposition[53])){
-                adjacentVertices[0]=&listOfVertices[52]; //graphVertex(possibleposition[52]);
-                adjacentVertices[1]=&listOfVertices[58]; //graphVertex(possibleposition[58]);
-                       }
-            else if(findpos(actuelposition,possibleposition[54])){
-                adjacentVertices[0]=&listOfVertices[42]; //graphVertex(possibleposition[42]);
-                adjacentVertices[1]=&listOfVertices[55]; //graphVertex(possibleposition[55]);
-                adjacentVertices[2]=&listOfVertices[57]; //graphVertex(possibleposition[57]);
-                          }
-            else if(findpos(actuelposition,possibleposition[55])){
-                adjacentVertices[0]=&listOfVertices[54]; //graphVertex(possibleposition[54]);
-                adjacentVertices[1]=&listOfVertices[56]; //graphVertex(possibleposition[56]);
-                       }
-            else if(findpos(actuelposition,possibleposition[56])){
-                adjacentVertices[0]=&listOfVertices[55]; //graphVertex(possibleposition[55]);
-                adjacentVertices[1]=&listOfVertices[57]; //graphVertex(possibleposition[57]);
-                adjacentVertices[2]=&listOfVertices[65]; //graphVertex(possibleposition[65]);
-                          }
-            else if(findpos(actuelposition,possibleposition[57])){
-                adjacentVertices[0]=&listOfVertices[54]; //graphVertex(possibleposition[54]);
-                adjacentVertices[1]=&listOfVertices[56]; //graphVertex(possibleposition[56]);
-                adjacentVertices[2]=&listOfVertices[58]; //graphVertex(possibleposition[58]);
-                adjacentVertices[3]=&listOfVertices[64]; //graphVertex(possibleposition[64]);
-                
-            }
-            else if(findpos(actuelposition,possibleposition[58])){
-                adjacentVertices[0]=&listOfVertices[53]; //graphVertex(possibleposition[53]);
-                adjacentVertices[1]=&listOfVertices[57]; //graphVertex(possibleposition[57]);
-                adjacentVertices[2]=&listOfVertices[59]; //graphVertex(possibleposition[59]);
-                          }
-            else if(findpos(actuelposition,possibleposition[59])){
-                adjacentVertices[0]=&listOfVertices[58]; //graphVertex(possibleposition[58]);
-                adjacentVertices[1]=&listOfVertices[59]; //graphVertex(possibleposition[59]);
-                adjacentVertices[2]=&listOfVertices[63]; //graphVertex(possibleposition[63]);
-                          }
-            else if(findpos(actuelposition,possibleposition[60])){
-                adjacentVertices[0]=&listOfVertices[59]; //graphVertex(possibleposition[59]);
-                adjacentVertices[1]=&listOfVertices[61]; //graphVertex(possibleposition[61]);
-                adjacentVertices[2]=&listOfVertices[62]; //graphVertex(possibleposition[62]);
-                          }
-            else if(findpos(actuelposition,possibleposition[61])){
-                adjacentVertices[0]=&listOfVertices[13]; //graphVertex(possibleposition[13]);
-                adjacentVertices[1]=&listOfVertices[50]; //graphVertex(possibleposition[50]);
-                adjacentVertices[2]=&listOfVertices[60]; //graphVertex(possibleposition[60]);
-                          }
-            else if(findpos(actuelposition,possibleposition[62])){
-                adjacentVertices[0]=&listOfVertices[16]; //graphVertex(possibleposition[16]);
-                adjacentVertices[1]=&listOfVertices[60]; //graphVertex(possibleposition[60]);
-                       }
-            else if(findpos(actuelposition,possibleposition[63])){
-                adjacentVertices[0]=&listOfVertices[59]; //graphVertex(possibleposition[59]);
-                adjacentVertices[1]=&listOfVertices[64]; //graphVertex(possibleposition[64]);
-                       }
-            else if(findpos(actuelposition,possibleposition[64])){
-                adjacentVertices[0]=&listOfVertices[57]; //graphVertex(possibleposition[57]);
-                adjacentVertices[1]=&listOfVertices[63]; //graphVertex(possibleposition[63]);
-                adjacentVertices[2]=&listOfVertices[65]; //graphVertex(possibleposition[65]);
-                          }
-            else if(findpos(actuelposition,possibleposition[65])){
-                adjacentVertices[0]=&listOfVertices[56]; //graphVertex(possibleposition[56]);
-                adjacentVertices[1]=&listOfVertices[64]; //graphVertex(possibleposition[64]);
-                       }
-            else if(findpos(actuelposition,possibleposition[66])){
-                adjacentVertices[0]=&listOfVertices[47]; //graphVertex(possibleposition[47]);
-                adjacentVertices[1]=&listOfVertices[48]; //graphVertex(possibleposition[48]);
-                       }
-    }
-
-
-}
