[Orxonox-commit 7729] r12322 - code/branches/3DPacman_FS19/src/modules/pacman
peterf at orxonox.net
peterf at orxonox.net
Wed Apr 24 22:38:08 CEST 2019
Author: peterf
Date: 2019-04-24 22:38:07 +0200 (Wed, 24 Apr 2019)
New Revision: 12322
Modified:
code/branches/3DPacman_FS19/src/modules/pacman/PacmanBrown.cc
code/branches/3DPacman_FS19/src/modules/pacman/PacmanBrown.h
code/branches/3DPacman_FS19/src/modules/pacman/PacmanCyan.cc
code/branches/3DPacman_FS19/src/modules/pacman/PacmanCyan.h
code/branches/3DPacman_FS19/src/modules/pacman/PacmanGhost.cc
code/branches/3DPacman_FS19/src/modules/pacman/PacmanPink.cc
code/branches/3DPacman_FS19/src/modules/pacman/PacmanRed.cc
Log:
continued brown and cyan pacman. Pink pacman still causes SIGSEV
Modified: code/branches/3DPacman_FS19/src/modules/pacman/PacmanBrown.cc
===================================================================
--- code/branches/3DPacman_FS19/src/modules/pacman/PacmanBrown.cc 2019-04-22 13:09:22 UTC (rev 12321)
+++ code/branches/3DPacman_FS19/src/modules/pacman/PacmanBrown.cc 2019-04-24 20:38:07 UTC (rev 12322)
@@ -12,6 +12,10 @@
PacmanBrown::PacmanBrown(Context* context) : PacmanGhost(context){
RegisterObject(PacmanBrown);
+
+ this->target_x=0;
+ this->target_z=15;
+ this->lastPlayerPassedPoint=Vector3(0,0,0); //Vector3(70,10,-135);
}
@@ -28,7 +32,7 @@
int PacmanBrown::absoluteDistance(Vector3 pos1, Vector3 pos2){
- Ogre::Vector3 diffVector;
+ Vector3 diffVector;
diffVector.x=pos2.x-pos1.x;
diffVector.y=pos2.y-pos1.y; //should always be 0
diffVector.z=pos2.z-pos1.z;
@@ -42,6 +46,14 @@
SUPER(PacmanGhost, tick, dt);
this->actuelposition = this->getPosition();
+
+
+ for(int u=0; u < 67; u++){//always check if player passed a point
+ if(jeanfindpos(this->getPlayerPos(), possibleposition[u])){
+ this->lastPlayerPassedPoint=possibleposition[u];
+ }
+ }
+
//Stop, if target arrived
if((abs(this->actuelposition.x - this->target_x)<0.5) && (abs(this->actuelposition.z - this->target_z)<0.5)){
@@ -59,10 +71,19 @@
move(dt, actuelposition, velocity);
}
}
+ else if(this->lastPlayerPassedPoint==Vector3(0,0,0)){
+ //as long as the player has not started the game,
+ //i.e. lastPlayerPastPoint is (0,0,0), brown pacman
+ //cannot possibly move, because it needs the position
+ //of the player to move accordingly
+
+ this->ismoving=false;
+ std::cout<<"weie"<<endl;
+ }
//Check on which position the ghost has arrived and set new target
else{
-
+ std::cout<<"naye"<<endl;
while(lockmove){};
lockmove = true;
@@ -82,12 +103,12 @@
}
- else if((this->isFleeing==true)&&(brownPos!=Vector3(-215,10,-195))){
+ else if((this->isFleeing==true)&&(!findpos(brownPos,Vector3(-215,10,-195)))){
//if fleeing, continue to flee
Vector3 nextMove = getShortestPath(brownPos, Vector3(-215, 10, -195));
setNewTargetGhost(nextMove);
}
- else if ((this->isFleeing==true)&&(brownPos==Vector3(-215,10,-195))){
+ else if ((this->isFleeing==true)&&(findpos(brownPos,Vector3(-215,10,-195)))){
//if fleeing and reached flee point, go back near player
this->isFleeing=false;
Vector3 nextMove = getShortestPath(brownPos, this->lastPlayerPassedPoint);
@@ -98,6 +119,9 @@
Vector3 nextMove = getShortestPath(brownPos, this->lastPlayerPassedPoint);
setNewTargetGhost(nextMove);
}
+ if(this->isFleeing){
+ std::cout<<"fleeing"<<endl;
+ }
}
@@ -130,24 +154,350 @@
lockmove=false; //NEVER FORGET THIS ONE !!!
}
- }
-
+ bool PacmanBrown::isAdjacentToPlayerLastPastPoint(Vector3 pacmanBrownPos, Vector3 arrayForNeighborPositions[]){
+ //return true if brownPacman is on an adjacent position to the last
+ //point visited by the player. return false otherwise.
+ for(int i =0; i < 4; i++){
+ if(arrayForNeighborPositions[i]!=Vector3(0,0,0)){
+ if(findpos(pacmanBrownPos, arrayForNeighborPositions[i])){
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+ 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]);
+ }
+ }
+}
+
+
+
+
+
/*int graphDistance(Vector3 start, Vector3 goal){
Vector3 differenceVector= Vector3(abs(goal.x-start.x), 0,abs(goal.z-start.z));
Modified: code/branches/3DPacman_FS19/src/modules/pacman/PacmanBrown.h
===================================================================
--- code/branches/3DPacman_FS19/src/modules/pacman/PacmanBrown.h 2019-04-22 13:09:22 UTC (rev 12321)
+++ code/branches/3DPacman_FS19/src/modules/pacman/PacmanBrown.h 2019-04-24 20:38:07 UTC (rev 12322)
@@ -34,7 +34,11 @@
bool isFleeing;
+ bool isAdjacentToPlayerLastPastPoint(Vector3 pacmanBrownPos, Vector3 arrayForNeighborPositions[]);
+ void findNeighboorPositions(Vector3 actuelposition, Vector3 adjacentPositions[], Vector3 positionArray[]);
+
+
};
}
Modified: code/branches/3DPacman_FS19/src/modules/pacman/PacmanCyan.cc
===================================================================
--- code/branches/3DPacman_FS19/src/modules/pacman/PacmanCyan.cc 2019-04-22 13:09:22 UTC (rev 12321)
+++ code/branches/3DPacman_FS19/src/modules/pacman/PacmanCyan.cc 2019-04-24 20:38:07 UTC (rev 12322)
@@ -15,6 +15,7 @@
RegisterObject(PacmanCyan);
this->target_x=0;
this->target_z=15;
+ this->setPosition(Vector3(0,10,15));
this->lastPlayerPassedPoint=Vector3(70,10,-135);
this->isPatrolling = false;
@@ -65,6 +66,13 @@
//Check on which position the ghost has arrived and set new target
else{
+ std::cout<<startPatrol<<endl;
+ std::cout<<goalPatrol<<endl;
+ std::cout<<isPatrolling<<endl;
+ std::cout<<this->actuelposition<<endl;
+ std::cout<<this->passedByStart<<endl;
+ std::cout<<this->passedByGoal<<endl;
+
while(lockmove){};
lockmove = true;
@@ -77,20 +85,51 @@
this->nextPatrol();
}
- else if((this->isPatrolling==true)&&(cyanPos!=this->goalPatrol)){
+ else if/*((!findpos(cyanPos, startPatrol))&&*/(this->passedByStart==false)/*)*/{
+ //we have not even reached our startPatrol point
+ if(findpos(cyanPos, startPatrol)){
+ this->passedByStart=true;
+ }
+ else{
+ nextMove(cyanPos, startPatrol);
+ }
+ }
+ else if/*((!findpos(cyanPos, goalPatrol))&&*/(this->passedByGoal==false)/*)*/{
+ //we have reached our startPatrol point, now we go to goalPoint
+ if(findpos(cyanPos, goalPatrol)){
+ this->passedByGoal=true;
+ }
+ else{
+ nextMove(cyanPos, goalPatrol);
+ }
}
- else if(cyanPos==this->goalPatrol){
+ else if(!findpos(cyanPos, this->startPatrol)){
+ //we reached our goal, now we return to start
+ nextMove(cyanPos, startPatrol);
+
}
- else if(cyanPos==this->startPatrol){
+ else /*if(findpos(cyanPos, this->startPatrol))*/{
+ //we reached startPoint again. Either we change patrol
+ //or redo same patrol
+ int redoORNot = rand()%2;
+
+ if(redoORNot==1){
+
+ this->isPatrolling=false;
+ //we will change patrol region
+ }
+ else {
+ this->passedByGoal=false;
+ //repeat patrol region
+ }
}
-
lockmove=false; //NEVER FORGET THIS ONE !!!!!!!
@@ -101,7 +140,7 @@
void PacmanCyan::nextPatrol(){
- int indexRand1=rand()%67;
+ int indexRand1=rand()%67;
while(indexRand1==44){
//new try if index is that of the position in the middle
indexRand1=rand()%67;
@@ -121,8 +160,13 @@
this->startPatrol = possibleposition[indexRand1];
this->goalPatrol = possibleposition[indexRand2];
- Vector3 nextMovement = getShortestPath(startPatrol, goalPatrol);
+ /*PatrolPosition startPatPol = PatrolPosition(startPatrol);
+ PatrolPosition goalPatrol = PatrolPosition(goalPatrol);*/
+ this->passedByStart=false;
+ this->passedByGoal=false;
+ this->isPatrolling=true;
+
}
@@ -129,15 +173,13 @@
void PacmanCyan::nextMove( Vector3 cyanPosP, Vector3 playerPos){
-
- Vector3 nextTarget;
- nextTarget = getShortestPath(cyanPosP, playerPos);
+ Vector3 nextTarget = getShortestPath(cyanPosP, playerPos);
setNewTargetGhost(nextTarget);
}
- struct PacmanCyan::PatrolPosition{
+ /*struct PacmanCyan::PatrolPosition{
//we need to check if PacmanCyan already passed the goal resp. start patrol point
public:
@@ -150,7 +192,7 @@
visitedPoint=false;
}
- };
+ };*/
}
\ No newline at end of file
Modified: code/branches/3DPacman_FS19/src/modules/pacman/PacmanCyan.h
===================================================================
--- code/branches/3DPacman_FS19/src/modules/pacman/PacmanCyan.h 2019-04-22 13:09:22 UTC (rev 12321)
+++ code/branches/3DPacman_FS19/src/modules/pacman/PacmanCyan.h 2019-04-24 20:38:07 UTC (rev 12322)
@@ -28,8 +28,11 @@
struct PatrolPosition;
+ bool passedByStart;
+ bool passedByGoal;
+
};
}
Modified: code/branches/3DPacman_FS19/src/modules/pacman/PacmanGhost.cc
===================================================================
--- code/branches/3DPacman_FS19/src/modules/pacman/PacmanGhost.cc 2019-04-22 13:09:22 UTC (rev 12321)
+++ code/branches/3DPacman_FS19/src/modules/pacman/PacmanGhost.cc 2019-04-24 20:38:07 UTC (rev 12322)
@@ -1310,7 +1310,7 @@
//be in front of pacman
if(indexForSWNE==4){
- std::cout<<"Ryukyu"<<endl;
+ //std::cout<<"Ryukyu"<<endl;
return pacLasVisPos;
}
Modified: code/branches/3DPacman_FS19/src/modules/pacman/PacmanPink.cc
===================================================================
--- code/branches/3DPacman_FS19/src/modules/pacman/PacmanPink.cc 2019-04-22 13:09:22 UTC (rev 12321)
+++ code/branches/3DPacman_FS19/src/modules/pacman/PacmanPink.cc 2019-04-24 20:38:07 UTC (rev 12322)
@@ -15,7 +15,7 @@
this->target_x=0;
this->target_z=15;
- this->lastPlayerPassedPoint=Vector3(70,10,-135);
+ this->lastPlayerPassedPoint=Vector3(0,0,0); //Vector3(70,10,-135);
}
@@ -59,6 +59,14 @@
move(dt, actuelposition, velocity);
}
}
+ else if(this->lastPlayerPassedPoint==Vector3(0,0,0)){
+ //as long as the player has not started the game,
+ //i.e. lastPlayerPastPoint is (0,0,0), pink pacman
+ //cannot possibly move, because it needs the position
+ //of the player to move accordingly
+
+ this->ismoving=false;
+ }
//Check on which position the ghost has arrived and set new target
else{
while(lockmove){};
@@ -66,10 +74,12 @@
Vector3 pinkPos=Vector3(this->target_x, 10, this->target_z);
+ std::cout<<this->lastPlayerPassedPoint<<endl;
+
int directionV = findPlayerTravDir (lastPlayerPassedPoint, this->getPlayerPos());
this->pointInFrontOfPlayer=getPointInFrontOfPacman(lastPlayerPassedPoint, directionV);
-
+ std::cout<<this->pointInFrontOfPlayer<<endl;
nextMove(pinkPos, pointInFrontOfPlayer, lastPlayerPassedPoint);
Modified: code/branches/3DPacman_FS19/src/modules/pacman/PacmanRed.cc
===================================================================
--- code/branches/3DPacman_FS19/src/modules/pacman/PacmanRed.cc 2019-04-22 13:09:22 UTC (rev 12321)
+++ code/branches/3DPacman_FS19/src/modules/pacman/PacmanRed.cc 2019-04-24 20:38:07 UTC (rev 12322)
@@ -15,7 +15,7 @@
RegisterObject(PacmanRed);
this->target_x=0;
this->target_z=15;
- this->lastPlayerPassedPoint=Vector3(70,10,-135);
+ this->lastPlayerPassedPoint=Vector3(0,0,0); //Vector3(70,10,-135);
this->isNearPlayer=false;
}
@@ -81,7 +81,15 @@
}
//std::cout<<"LemanExpress4"<<endl;
}
+ else if(this->lastPlayerPassedPoint==Vector3(0,0,0)){
+ //as long as the player has not started the game,
+ //i.e. lastPlayerPastPoint is (0,0,0), red pacman
+ //cannot possibly move, because it needs the position
+ //of the player to move accordingly
+ this->ismoving=false;
+ }
+
//Check on which position the ghost has arrived and set new target
else{
std::cout<<"LemanExpress3"<<endl;
More information about the Orxonox-commit
mailing list