[Orxonox-commit 7679] r12272 - code/branches/3DPacman_FS19/src/modules/pacman
rueegseb at orxonox.net
rueegseb at orxonox.net
Thu Apr 4 15:33:05 CEST 2019
Author: rueegseb
Date: 2019-04-04 15:33:04 +0200 (Thu, 04 Apr 2019)
New Revision: 12272
Modified:
code/branches/3DPacman_FS19/src/modules/pacman/PacmanGhost.cc
code/branches/3DPacman_FS19/src/modules/pacman/PacmanGhost.h
Log:
overload setnewTarget for Argument Vecor3 and implementation of the red ghost character
Modified: code/branches/3DPacman_FS19/src/modules/pacman/PacmanGhost.cc
===================================================================
--- code/branches/3DPacman_FS19/src/modules/pacman/PacmanGhost.cc 2019-04-04 13:28:50 UTC (rev 12271)
+++ code/branches/3DPacman_FS19/src/modules/pacman/PacmanGhost.cc 2019-04-04 13:33:04 UTC (rev 12272)
@@ -129,14 +129,16 @@
else{
while (lockmove){};
lockmove=true;
+ int goal_x = 0; // faraway goal to dertmine the direction of the target
+ int goal_z =0;
- if(this.colour=1){
- //calculate new goal
+ if(this.colour=1){//follow pacman
+ Vector3 newTar = getShortestPath(actuelposition, currentPosition) //acutuelPosition: ghost, currentPosition: Pacman
+ setnewTarget(newTar)
}
-
- else if(this.colour=2){
-
+ //die uebrigen charakteren verhalten sich noch random
+ /*else if(this.colour=2){
}
else if(this.colour=3){
@@ -145,218 +147,216 @@
else if(this.colour=4){
- }
+ }*/
+
+
+
+ //Check on which position the ghost has arrived and set new target
+ else if{(this.colour=2) || (this.colour=3) || (this.colour=4)}
+ while(lockmove){};
+ lockmove = true;
- getShortestPath(actuelposition, goal_x, goal_z)
- //setnewTarget
- }
- /*
- //Check on which position the ghost has arrived and set new target
- else{
- while(lockmove){};
- lockmove = true;
-
- if(findpos(actuelposition,possibleposition[0])){
- setnewTarget(1,17,19);
+ if(findpos(actuelposition,possibleposition[0])){
+ setnewTarget(1,17,19);
+ }
+ else if(findpos(actuelposition,possibleposition[1])){
+ setnewTarget(0,2);
+ }
+ else if(findpos(actuelposition,possibleposition[2])){
+ setnewTarget(1,3);
+ }
+ else if(findpos(actuelposition,possibleposition[3])){
+ setnewTarget(2,4,5);
+ }
+ else if(findpos(actuelposition,possibleposition[4])){
+ setnewTarget(3,6);
+ }
+ else if(findpos(actuelposition,possibleposition[5])){
+ setnewTarget(3,7);
+ }
+ else if(findpos(actuelposition,possibleposition[6])){
+ setnewTarget(4,9,26);
+ }
+ else if(findpos(actuelposition,possibleposition[7])){
+ setnewTarget(5,8);
+ }
+ else if(findpos(actuelposition,possibleposition[8])){
+ setnewTarget(7,9);
+ }
+ else if(findpos(actuelposition,possibleposition[9])){
+ setnewTarget(6,8,10,38);
+ }
+ else if(findpos(actuelposition,possibleposition[10])){
+ setnewTarget(9,11,45);
+ }
+ else if(findpos(actuelposition,possibleposition[11])){
+ setnewTarget(10,12,13);
+ }
+ else if(findpos(actuelposition,possibleposition[12])){
+ setnewTarget(11,14);
+ }
+ else if(findpos(actuelposition,possibleposition[13])){
+ setnewTarget(11,14,16,61);
+ }
+ else if(findpos(actuelposition,possibleposition[14])){
+ setnewTarget(12,13,15);
+ }
+ else if(findpos(actuelposition,possibleposition[15])){
+ setnewTarget(14,16);
+ }
+ else if(findpos(actuelposition,possibleposition[16])){
+ setnewTarget(13,15,62);
+ }
+ else if(findpos(actuelposition,possibleposition[17])){
+ setnewTarget(0,25);
+ }
+ else if(findpos(actuelposition,possibleposition[18])){
+ setnewTarget(19,24);
+ }
+ else if(findpos(actuelposition,possibleposition[19])){
+ setnewTarget(0,18,20);
+ }
+ else if(findpos(actuelposition,possibleposition[20])){
+ setnewTarget(19,21);
+ }
+ else if(findpos(actuelposition,possibleposition[21])){
+ setnewTarget(20,22);
+ }
+ else if(findpos(actuelposition,possibleposition[22])){
+ setnewTarget(21,23,31);
+ }
+ else if(findpos(actuelposition,possibleposition[23])){
+ setnewTarget(22,30);
+ }
+ else if(findpos(actuelposition,possibleposition[24])){
+ setnewTarget(18,29);
+ }
+ else if(findpos(actuelposition,possibleposition[25])){
+ setnewTarget(17,26);
+ }
+ else if(findpos(actuelposition,possibleposition[26])){
+ setnewTarget(6,25,27);
+ }
+ else if(findpos(actuelposition,possibleposition[27])){
+ setnewTarget(26,28,37);
+ }
+ else if(findpos(actuelposition,possibleposition[28])){
+ setnewTarget(27,29,36);
+ }
+ else if(findpos(actuelposition,possibleposition[29])){
+ setnewTarget(24,28,30);
+ }
+ else if(findpos(actuelposition,possibleposition[30])){
+ setnewTarget(23,29,34);
+ }
+ else if(findpos(actuelposition,possibleposition[31])){
+ setnewTarget(22,32);
+ }
+ else if(findpos(actuelposition,possibleposition[32])){
+ setnewTarget(31,33);
+ }
+ else if(findpos(actuelposition,possibleposition[33])){
+ setnewTarget(32,34);
+ }
+ else if(findpos(actuelposition,possibleposition[34])){
+ setnewTarget(30,33,35,42);
+ }
+ else if(findpos(actuelposition,possibleposition[35])){
+ setnewTarget(34,36,41);
+ }
+ else if(findpos(actuelposition,possibleposition[36])){
+ setnewTarget(28,35);
+ }
+ else if(findpos(actuelposition,possibleposition[37])){
+ setnewTarget(27,38);
+ }
+ else if(findpos(actuelposition,possibleposition[38])){
+ setnewTarget(9,37,39);
+ }
+ else if(findpos(actuelposition,possibleposition[39])){
+ setnewTarget(38,40,45);
+ }
+ else if(findpos(actuelposition,possibleposition[40])){
+ setnewTarget(39,41); //Shouldn't be able to return in center
+ }
+ else if(findpos(actuelposition,possibleposition[41])){
+ setnewTarget(35,43);
+ }
+ else if(findpos(actuelposition,possibleposition[42])){
+ setnewTarget(34,43,54);
+ }
+ else if(findpos(actuelposition,possibleposition[43])){
+ setnewTarget(41,46);
+ }
+ else if(findpos(actuelposition,possibleposition[44])){
+ setnewTarget(40,66);
+ }
+ else if(findpos(actuelposition,possibleposition[45])){
+ setnewTarget(10,39,49);
+ }
+ else if(findpos(actuelposition,possibleposition[46])){
+ setnewTarget(43,47);
+ }
+ else if(findpos(actuelposition,possibleposition[47])){
+ setnewTarget(46,52,66);
+ }
+ else if(findpos(actuelposition,possibleposition[48])){
+ setnewTarget(49,51,66);
+ }
+ else if(findpos(actuelposition,possibleposition[49])){
+ setnewTarget(45,48);
+ }
+ else if(findpos(actuelposition,possibleposition[50])){
+ setnewTarget(51,61);
+ }
+ else if(findpos(actuelposition,possibleposition[51])){
+ setnewTarget(48,50);
+ }
+ else if(findpos(actuelposition,possibleposition[52])){
+ setnewTarget(47,53);
+ }
+ else if(findpos(actuelposition,possibleposition[53])){
+ setnewTarget(52,58);
+ }
+ else if(findpos(actuelposition,possibleposition[54])){
+ setnewTarget(42,55,57);
+ }
+ else if(findpos(actuelposition,possibleposition[55])){
+ setnewTarget(54,56);
+ }
+ else if(findpos(actuelposition,possibleposition[56])){
+ setnewTarget(55,57,65);
+ }
+ else if(findpos(actuelposition,possibleposition[57])){
+ setnewTarget(54,56,58,64);
+ }
+ else if(findpos(actuelposition,possibleposition[58])){
+ setnewTarget(53,57,59);
+ }
+ else if(findpos(actuelposition,possibleposition[59])){
+ setnewTarget(58,59,63);
+ }
+ else if(findpos(actuelposition,possibleposition[60])){
+ setnewTarget(59,61,62);
+ }
+ else if(findpos(actuelposition,possibleposition[61])){
+ setnewTarget(13,50,60);
+ }
+ else if(findpos(actuelposition,possibleposition[62])){
+ setnewTarget(16,60);
+ }
+ else if(findpos(actuelposition,possibleposition[63])){
+ setnewTarget(59,64);
+ }
+ else if(findpos(actuelposition,possibleposition[64])){
+ setnewTarget(57,63,65);
+ }
+ else if(findpos(actuelposition,possibleposition[65])){
+ setnewTarget(56,64);
+ }
+ else if(findpos(actuelposition,possibleposition[66])){
+ setnewTarget(47,48);
}
- else if(findpos(actuelposition,possibleposition[1])){
- setnewTarget(0,2);
- }
- else if(findpos(actuelposition,possibleposition[2])){
- setnewTarget(1,3);
- }
- else if(findpos(actuelposition,possibleposition[3])){
- setnewTarget(2,4,5);
- }
- else if(findpos(actuelposition,possibleposition[4])){
- setnewTarget(3,6);
- }
- else if(findpos(actuelposition,possibleposition[5])){
- setnewTarget(3,7);
- }
- else if(findpos(actuelposition,possibleposition[6])){
- setnewTarget(4,9,26);
- }
- else if(findpos(actuelposition,possibleposition[7])){
- setnewTarget(5,8);
- }
- else if(findpos(actuelposition,possibleposition[8])){
- setnewTarget(7,9);
- }
- else if(findpos(actuelposition,possibleposition[9])){
- setnewTarget(6,8,10,38);
- }
- else if(findpos(actuelposition,possibleposition[10])){
- setnewTarget(9,11,45);
- }
- else if(findpos(actuelposition,possibleposition[11])){
- setnewTarget(10,12,13);
- }
- else if(findpos(actuelposition,possibleposition[12])){
- setnewTarget(11,14);
- }
- else if(findpos(actuelposition,possibleposition[13])){
- setnewTarget(11,14,16,61);
- }
- else if(findpos(actuelposition,possibleposition[14])){
- setnewTarget(12,13,15);
- }
- else if(findpos(actuelposition,possibleposition[15])){
- setnewTarget(14,16);
- }
- else if(findpos(actuelposition,possibleposition[16])){
- setnewTarget(13,15,62);
- }
- else if(findpos(actuelposition,possibleposition[17])){
- setnewTarget(0,25);
- }
- else if(findpos(actuelposition,possibleposition[18])){
- setnewTarget(19,24);
- }
- else if(findpos(actuelposition,possibleposition[19])){
- setnewTarget(0,18,20);
- }
- else if(findpos(actuelposition,possibleposition[20])){
- setnewTarget(19,21);
- }
- else if(findpos(actuelposition,possibleposition[21])){
- setnewTarget(20,22);
- }
- else if(findpos(actuelposition,possibleposition[22])){
- setnewTarget(21,23,31);
- }
- else if(findpos(actuelposition,possibleposition[23])){
- setnewTarget(22,30);
- }
- else if(findpos(actuelposition,possibleposition[24])){
- setnewTarget(18,29);
- }
- else if(findpos(actuelposition,possibleposition[25])){
- setnewTarget(17,26);
- }
- else if(findpos(actuelposition,possibleposition[26])){
- setnewTarget(6,25,27);
- }
- else if(findpos(actuelposition,possibleposition[27])){
- setnewTarget(26,28,37);
- }
- else if(findpos(actuelposition,possibleposition[28])){
- setnewTarget(27,29,36);
- }
- else if(findpos(actuelposition,possibleposition[29])){
- setnewTarget(24,28,30);
- }
- else if(findpos(actuelposition,possibleposition[30])){
- setnewTarget(23,29,34);
- }
- else if(findpos(actuelposition,possibleposition[31])){
- setnewTarget(22,32);
- }
- else if(findpos(actuelposition,possibleposition[32])){
- setnewTarget(31,33);
- }
- else if(findpos(actuelposition,possibleposition[33])){
- setnewTarget(32,34);
- }
- else if(findpos(actuelposition,possibleposition[34])){
- setnewTarget(30,33,35,42);
- }
- else if(findpos(actuelposition,possibleposition[35])){
- setnewTarget(34,36,41);
- }
- else if(findpos(actuelposition,possibleposition[36])){
- setnewTarget(28,35);
- }
- else if(findpos(actuelposition,possibleposition[37])){
- setnewTarget(27,38);
- }
- else if(findpos(actuelposition,possibleposition[38])){
- setnewTarget(9,37,39);
- }
- else if(findpos(actuelposition,possibleposition[39])){
- setnewTarget(38,40,45);
- }
- else if(findpos(actuelposition,possibleposition[40])){
- setnewTarget(39,41); //Shouldn't be able to return in center
- }
- else if(findpos(actuelposition,possibleposition[41])){
- setnewTarget(35,43);
- }
- else if(findpos(actuelposition,possibleposition[42])){
- setnewTarget(34,43,54);
- }
- else if(findpos(actuelposition,possibleposition[43])){
- setnewTarget(41,46);
- }
- else if(findpos(actuelposition,possibleposition[44])){
- setnewTarget(40,66);
- }
- else if(findpos(actuelposition,possibleposition[45])){
- setnewTarget(10,39,49);
- }
- else if(findpos(actuelposition,possibleposition[46])){
- setnewTarget(43,47);
- }
- else if(findpos(actuelposition,possibleposition[47])){
- setnewTarget(46,52,66);
- }
- else if(findpos(actuelposition,possibleposition[48])){
- setnewTarget(49,51,66);
- }
- else if(findpos(actuelposition,possibleposition[49])){
- setnewTarget(45,48);
- }
- else if(findpos(actuelposition,possibleposition[50])){
- setnewTarget(51,61);
- }
- else if(findpos(actuelposition,possibleposition[51])){
- setnewTarget(48,50);
- }
- else if(findpos(actuelposition,possibleposition[52])){
- setnewTarget(47,53);
- }
- else if(findpos(actuelposition,possibleposition[53])){
- setnewTarget(52,58);
- }
- else if(findpos(actuelposition,possibleposition[54])){
- setnewTarget(42,55,57);
- }
- else if(findpos(actuelposition,possibleposition[55])){
- setnewTarget(54,56);
- }
- else if(findpos(actuelposition,possibleposition[56])){
- setnewTarget(55,57,65);
- }
- else if(findpos(actuelposition,possibleposition[57])){
- setnewTarget(54,56,58,64);
- }
- else if(findpos(actuelposition,possibleposition[58])){
- setnewTarget(53,57,59);
- }
- else if(findpos(actuelposition,possibleposition[59])){
- setnewTarget(58,59,63);
- }
- else if(findpos(actuelposition,possibleposition[60])){
- setnewTarget(59,61,62);
- }
- else if(findpos(actuelposition,possibleposition[61])){
- setnewTarget(13,50,60);
- }
- else if(findpos(actuelposition,possibleposition[62])){
- setnewTarget(16,60);
- }
- else if(findpos(actuelposition,possibleposition[63])){
- setnewTarget(59,64);
- }
- else if(findpos(actuelposition,possibleposition[64])){
- setnewTarget(57,63,65);
- }
- else if(findpos(actuelposition,possibleposition[65])){
- setnewTarget(56,64);
- }
- else if(findpos(actuelposition,possibleposition[66])){
- setnewTarget(47,48);
- }
else{
this->resetGhost(); //Shouldn't happen...
@@ -363,9 +363,16 @@
} //End of Position table
lockmove = false;
}
- */
+ }
}
+ //set a specific newTarget
+ void PacmanGhost::setnewTarget(Vector3 newTarget){
+ this->target_x = newTarget.x;
+ this->target_z = newTarget.;
+ this->ismoving = true;
+ }
+
//Random choice of new target (not used in game, but useful)
void PacmanGhost::setnewTarget(int firstdec){
Modified: code/branches/3DPacman_FS19/src/modules/pacman/PacmanGhost.h
===================================================================
--- code/branches/3DPacman_FS19/src/modules/pacman/PacmanGhost.h 2019-04-04 13:28:50 UTC (rev 12271)
+++ code/branches/3DPacman_FS19/src/modules/pacman/PacmanGhost.h 2019-04-04 13:33:04 UTC (rev 12272)
@@ -72,19 +72,17 @@
Vector3 actuelposition;
bool ismoving = false;
- int target_x = 0; // next step
- int target_z = 0;
- int goal_x = 0; // faraway goal to dertmine the direction of the target
- int goal_z =0;
+ int target_x = 0; // one step
+ int target_z = 0;
bool lockmove = false;
int colour=0;
/*
colour=
- 1: red
- 2: blue
- 3: orange
- 4: pink
+ 1: red: follow
+ 2: pink: get infront of him
+ 3: blue: patrol an area
+ 4: orange: get away of Pacman
*/
void setnewTarget(int firstdec);
void setnewTarget(int firstdec, int seconddec);
More information about the Orxonox-commit
mailing list