- Timestamp:
- Apr 18, 2019, 1:26:10 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/3DPacman_FS19/src/modules/pacman/PacmanRandom.cc
r12303 r12304 1 2 #include "PacmanGhost.h" 3 4 5 namespace orxonox{ 6 class PacmanRandom : public PacmanGhost { 7 8 public: 9 10 /* int decision=0; 11 int target_x = 0; 12 int target_z = 0; 13 bool ismoving = false; 14 bool lockmove = false;*/ 15 16 17 //Random choice of new target (not used in game, but useful) 18 void setnewTarget(int firstdec){ 19 //setNewTarget in PacmanGhost seems to be private so we need it here too 20 21 decision = rand()%1; 1 #include "PacmanRandom.h" 2 3 #include "core/CoreIncludes.h" 4 #include "BulletDynamics/Dynamics/btRigidBody.h" 5 6 7 8 9 namespace orxonox { 10 11 12 RegisterClass(PacmanRandom); 13 14 15 16 PacmanRandom::PacmanRandom(Context* context) : PacmanGhost(context){ 17 18 RegisterObject(PacmanRandom); 19 20 21 } 22 23 /** 24 @brief 25 Method for creating a ghost through XML. 26 */ 27 void PacmanRandom::XMLPort(Element& xmlelement, XMLPort::Mode mode) 28 { 29 SUPER(PacmanRandom, XMLPort, xmlelement, mode); 30 } 31 32 void PacmanRandom::tick(float dt) 33 { 34 SUPER(PacmanGhost, tick, dt); 35 36 this->actuelposition = this->getPosition(); 37 38 //Stop, if target arrived 39 if((abs(this->actuelposition.x - this->target_x)<0.5) && (abs(this->actuelposition.z - this->target_z)<0.5)){ 40 this->ismoving = false; 41 } 42 43 //Move, if ghost hasn't arrived yet 44 if(this->ismoving){ 45 if(!(abs(this->actuelposition.z-target_z)<0.5)) { 46 velocity = Vector3(0,0,-sgn(this->actuelposition.z-this->target_z)); 47 move(dt, actuelposition, velocity); 48 } 49 if(!(abs(this->actuelposition.x-target_x)<0.5)){ 50 velocity = Vector3(-sgn(this->actuelposition.x-this->target_x),0,0); 51 move(dt, actuelposition, velocity); 52 } 53 } 54 //Check on which position the ghost has arrived and set new target 55 else{ 56 while(lockmove){}; 57 lockmove = true; 58 59 if(findpos(actuelposition,possibleposition[0])){ 60 setnewTarget(1,17,19); 61 } 62 else if(findpos(actuelposition,possibleposition[1])){ 63 setnewTarget(0,2); 64 } 65 else if(findpos(actuelposition,possibleposition[2])){ 66 setnewTarget(1,3); 67 } 68 else if(findpos(actuelposition,possibleposition[3])){ 69 setnewTarget(2,4,5); 70 } 71 else if(findpos(actuelposition,possibleposition[4])){ 72 setnewTarget(3,6); 73 } 74 else if(findpos(actuelposition,possibleposition[5])){ 75 setnewTarget(3,7); 76 } 77 else if(findpos(actuelposition,possibleposition[6])){ 78 setnewTarget(4,9,26); 79 } 80 else if(findpos(actuelposition,possibleposition[7])){ 81 setnewTarget(5,8); 82 } 83 else if(findpos(actuelposition,possibleposition[8])){ 84 setnewTarget(7,9); 85 } 86 else if(findpos(actuelposition,possibleposition[9])){ 87 setnewTarget(6,8,10,38); 88 } 89 else if(findpos(actuelposition,possibleposition[10])){ 90 setnewTarget(9,11,45); 91 } 92 else if(findpos(actuelposition,possibleposition[11])){ 93 setnewTarget(10,12,13); 94 } 95 else if(findpos(actuelposition,possibleposition[12])){ 96 setnewTarget(11,14); 97 } 98 else if(findpos(actuelposition,possibleposition[13])){ 99 setnewTarget(11,14,16,61); 100 } 101 else if(findpos(actuelposition,possibleposition[14])){ 102 setnewTarget(12,13,15); 103 } 104 else if(findpos(actuelposition,possibleposition[15])){ 105 setnewTarget(14,16); 106 } 107 else if(findpos(actuelposition,possibleposition[16])){ 108 setnewTarget(13,15,62); 109 } 110 else if(findpos(actuelposition,possibleposition[17])){ 111 setnewTarget(0,25); 112 } 113 else if(findpos(actuelposition,possibleposition[18])){ 114 setnewTarget(19,24); 115 } 116 else if(findpos(actuelposition,possibleposition[19])){ 117 setnewTarget(0,18,20); 118 } 119 else if(findpos(actuelposition,possibleposition[20])){ 120 setnewTarget(19,21); 121 } 122 else if(findpos(actuelposition,possibleposition[21])){ 123 setnewTarget(20,22); 124 } 125 else if(findpos(actuelposition,possibleposition[22])){ 126 setnewTarget(21,23,31); 127 } 128 else if(findpos(actuelposition,possibleposition[23])){ 129 setnewTarget(22,30); 130 } 131 else if(findpos(actuelposition,possibleposition[24])){ 132 setnewTarget(18,29); 133 } 134 else if(findpos(actuelposition,possibleposition[25])){ 135 setnewTarget(17,26); 136 } 137 else if(findpos(actuelposition,possibleposition[26])){ 138 setnewTarget(6,25,27); 139 } 140 else if(findpos(actuelposition,possibleposition[27])){ 141 setnewTarget(26,28,37); 142 } 143 else if(findpos(actuelposition,possibleposition[28])){ 144 setnewTarget(27,29,36); 145 } 146 else if(findpos(actuelposition,possibleposition[29])){ 147 setnewTarget(24,28,30); 148 } 149 else if(findpos(actuelposition,possibleposition[30])){ 150 setnewTarget(23,29,34); 151 } 152 else if(findpos(actuelposition,possibleposition[31])){ 153 setnewTarget(22,32); 154 } 155 else if(findpos(actuelposition,possibleposition[32])){ 156 setnewTarget(31,33); 157 } 158 else if(findpos(actuelposition,possibleposition[33])){ 159 setnewTarget(32,34); 160 } 161 else if(findpos(actuelposition,possibleposition[34])){ 162 setnewTarget(30,33,35,42); 163 } 164 else if(findpos(actuelposition,possibleposition[35])){ 165 setnewTarget(34,36,41); 166 } 167 else if(findpos(actuelposition,possibleposition[36])){ 168 setnewTarget(28,35); 169 } 170 else if(findpos(actuelposition,possibleposition[37])){ 171 setnewTarget(27,38); 172 } 173 else if(findpos(actuelposition,possibleposition[38])){ 174 setnewTarget(9,37,39); 175 } 176 else if(findpos(actuelposition,possibleposition[39])){ 177 setnewTarget(38,40,45); 178 } 179 else if(findpos(actuelposition,possibleposition[40])){ 180 setnewTarget(39,41); //Shouldn't be able to return in center 181 } 182 else if(findpos(actuelposition,possibleposition[41])){ 183 setnewTarget(35,43); 184 } 185 else if(findpos(actuelposition,possibleposition[42])){ 186 setnewTarget(34,43,54); 187 } 188 else if(findpos(actuelposition,possibleposition[43])){ 189 setnewTarget(41,46); 190 } 191 else if(findpos(actuelposition,possibleposition[44])){ 192 setnewTarget(40,66); 193 } 194 else if(findpos(actuelposition,possibleposition[45])){ 195 setnewTarget(10,39,49); 196 } 197 else if(findpos(actuelposition,possibleposition[46])){ 198 setnewTarget(43,47); 199 } 200 else if(findpos(actuelposition,possibleposition[47])){ 201 setnewTarget(46,52,66); 202 } 203 else if(findpos(actuelposition,possibleposition[48])){ 204 setnewTarget(49,51,66); 205 } 206 else if(findpos(actuelposition,possibleposition[49])){ 207 setnewTarget(45,48); 208 } 209 else if(findpos(actuelposition,possibleposition[50])){ 210 setnewTarget(51,61); 211 } 212 else if(findpos(actuelposition,possibleposition[51])){ 213 setnewTarget(48,50); 214 } 215 else if(findpos(actuelposition,possibleposition[52])){ 216 setnewTarget(47,53); 217 } 218 else if(findpos(actuelposition,possibleposition[53])){ 219 setnewTarget(52,58); 220 } 221 else if(findpos(actuelposition,possibleposition[54])){ 222 setnewTarget(42,55,57); 223 } 224 else if(findpos(actuelposition,possibleposition[55])){ 225 setnewTarget(54,56); 226 } 227 else if(findpos(actuelposition,possibleposition[56])){ 228 setnewTarget(55,57,65); 229 } 230 else if(findpos(actuelposition,possibleposition[57])){ 231 setnewTarget(54,56,58,64); 232 } 233 else if(findpos(actuelposition,possibleposition[58])){ 234 setnewTarget(53,57,59); 235 } 236 else if(findpos(actuelposition,possibleposition[59])){ 237 setnewTarget(58,59,63); 238 } 239 else if(findpos(actuelposition,possibleposition[60])){ 240 setnewTarget(59,61,62); 241 } 242 else if(findpos(actuelposition,possibleposition[61])){ 243 setnewTarget(13,50,60); 244 } 245 else if(findpos(actuelposition,possibleposition[62])){ 246 setnewTarget(16,60); 247 } 248 else if(findpos(actuelposition,possibleposition[63])){ 249 setnewTarget(59,64); 250 } 251 else if(findpos(actuelposition,possibleposition[64])){ 252 setnewTarget(57,63,65); 253 } 254 else if(findpos(actuelposition,possibleposition[65])){ 255 setnewTarget(56,64); 256 } 257 else if(findpos(actuelposition,possibleposition[66])){ 258 setnewTarget(47,48); 259 } 260 261 else{ 262 this->resetGhost(); //Shouldn't happen... 263 } //End of Position table 264 lockmove = false; 265 } 266 267 } 268 269 void PacmanRandom::setnewTarget(int firstdec){ 270 271 decision = rand()%1; 22 272 switch(decision){ 23 273 case 0: … … 26 276 this->ismoving = true; 27 277 break; 28 } 29 } 30 278 } 279 } 31 280 32 281 //Random choice of new target 33 void setnewTarget(int firstdec, int seconddec){34 282 void PacmanRandom::setnewTarget(int firstdec, int seconddec){ 283 decision = rand()%2; 35 284 switch(decision){ 36 285 case 0: … … 49 298 50 299 //Random choice of new target 51 void setnewTarget(int firstdec, int seconddec, int thirddec){52 53 300 void PacmanRandom::setnewTarget(int firstdec, int seconddec, int thirddec){ 301 302 decision = rand()%3; 54 303 switch(decision){ 55 304 case 0: … … 68 317 this->ismoving = true; 69 318 break; 70 319 } 71 320 72 321 } 73 322 74 323 //Random choice of new target 75 void setnewTarget(int firstdec, int seconddec, int thirddec, int fourthdec){76 77 324 void PacmanRandom::setnewTarget(int firstdec, int seconddec, int thirddec, int fourthdec){ 325 326 decision = rand()%4; 78 327 switch(decision){ 79 328 case 0: … … 93 342 break; 94 343 case 3: 95 344 this->target_x = possibleposition[fourthdec].x; 96 345 this->target_z = possibleposition[fourthdec].z; 97 346 this->ismoving = true; 98 347 break; 99 348 } 100 349 101 } 102 103 void tick(float dt){ 104 105 PacmanGhost::tick(dt); 106 107 108 if(!(this->ismoving)){ 109 110 while(lockmove){}; 111 lockmove = true; 112 113 if(findpos(actuelposition,possibleposition[0])){ 114 setnewTarget(1,17,19); 115 } 116 else if(findpos(actuelposition,possibleposition[1])){ 117 setnewTarget(0,2); 118 } 119 else if(findpos(actuelposition,possibleposition[2])){ 120 setnewTarget(1,3); 121 } 122 else if(findpos(actuelposition,possibleposition[3])){ 123 setnewTarget(2,4,5); 124 } 125 else if(findpos(actuelposition,possibleposition[4])){ 126 setnewTarget(3,6); 127 } 128 else if(findpos(actuelposition,possibleposition[5])){ 129 setnewTarget(3,7); 130 } 131 else if(findpos(actuelposition,possibleposition[6])){ 132 setnewTarget(4,9,26); 133 } 134 else if(findpos(actuelposition,possibleposition[7])){ 135 setnewTarget(5,8); 136 } 137 else if(findpos(actuelposition,possibleposition[8])){ 138 setnewTarget(7,9); 139 } 140 else if(findpos(actuelposition,possibleposition[9])){ 141 setnewTarget(6,8,10,38); 142 } 143 else if(findpos(actuelposition,possibleposition[10])){ 144 setnewTarget(9,11,45); 145 } 146 else if(findpos(actuelposition,possibleposition[11])){ 147 setnewTarget(10,12,13); 148 } 149 else if(findpos(actuelposition,possibleposition[12])){ 150 setnewTarget(11,14); 151 } 152 else if(findpos(actuelposition,possibleposition[13])){ 153 setnewTarget(11,14,16,61); 154 } 155 else if(findpos(actuelposition,possibleposition[14])){ 156 setnewTarget(12,13,15); 157 } 158 else if(findpos(actuelposition,possibleposition[15])){ 159 setnewTarget(14,16); 160 } 161 else if(findpos(actuelposition,possibleposition[16])){ 162 setnewTarget(13,15,62); 163 } 164 else if(findpos(actuelposition,possibleposition[17])){ 165 setnewTarget(0,25); 166 } 167 else if(findpos(actuelposition,possibleposition[18])){ 168 setnewTarget(19,24); 169 } 170 else if(findpos(actuelposition,possibleposition[19])){ 171 setnewTarget(0,18,20); 172 } 173 else if(findpos(actuelposition,possibleposition[20])){ 174 setnewTarget(19,21); 175 } 176 else if(findpos(actuelposition,possibleposition[21])){ 177 setnewTarget(20,22); 178 } 179 else if(findpos(actuelposition,possibleposition[22])){ 180 setnewTarget(21,23,31); 181 } 182 else if(findpos(actuelposition,possibleposition[23])){ 183 setnewTarget(22,30); 184 } 185 else if(findpos(actuelposition,possibleposition[24])){ 186 setnewTarget(18,29); 187 } 188 else if(findpos(actuelposition,possibleposition[25])){ 189 setnewTarget(17,26); 190 } 191 else if(findpos(actuelposition,possibleposition[26])){ 192 setnewTarget(6,25,27); 193 } 194 else if(findpos(actuelposition,possibleposition[27])){ 195 setnewTarget(26,28,37); 196 } 197 else if(findpos(actuelposition,possibleposition[28])){ 198 setnewTarget(27,29,36); 199 } 200 else if(findpos(actuelposition,possibleposition[29])){ 201 setnewTarget(24,28,30); 202 } 203 else if(findpos(actuelposition,possibleposition[30])){ 204 setnewTarget(23,29,34); 205 } 206 else if(findpos(actuelposition,possibleposition[31])){ 207 setnewTarget(22,32); 208 } 209 else if(findpos(actuelposition,possibleposition[32])){ 210 setnewTarget(31,33); 211 } 212 else if(findpos(actuelposition,possibleposition[33])){ 213 setnewTarget(32,34); 214 } 215 else if(findpos(actuelposition,possibleposition[34])){ 216 setnewTarget(30,33,35,42); 217 } 218 else if(findpos(actuelposition,possibleposition[35])){ 219 setnewTarget(34,36,41); 220 } 221 else if(findpos(actuelposition,possibleposition[36])){ 222 setnewTarget(28,35); 223 } 224 else if(findpos(actuelposition,possibleposition[37])){ 225 setnewTarget(27,38); 226 } 227 else if(findpos(actuelposition,possibleposition[38])){ 228 setnewTarget(9,37,39); 229 } 230 else if(findpos(actuelposition,possibleposition[39])){ 231 setnewTarget(38,40,45); 232 } 233 else if(findpos(actuelposition,possibleposition[40])){ 234 setnewTarget(39,41); //Shouldn't be able to return in center 235 } 236 else if(findpos(actuelposition,possibleposition[41])){ 237 setnewTarget(35,43); 238 } 239 else if(findpos(actuelposition,possibleposition[42])){ 240 setnewTarget(34,43,54); 241 } 242 else if(findpos(actuelposition,possibleposition[43])){ 243 setnewTarget(41,46); 244 } 245 else if(findpos(actuelposition,possibleposition[44])){ 246 setnewTarget(40,66); 247 } 248 else if(findpos(actuelposition,possibleposition[45])){ 249 setnewTarget(10,39,49); 250 } 251 else if(findpos(actuelposition,possibleposition[46])){ 252 setnewTarget(43,47); 253 } 254 else if(findpos(actuelposition,possibleposition[47])){ 255 setnewTarget(46,52,66); 256 } 257 else if(findpos(actuelposition,possibleposition[48])){ 258 setnewTarget(49,51,66); 259 } 260 else if(findpos(actuelposition,possibleposition[49])){ 261 setnewTarget(45,48); 262 } 263 else if(findpos(actuelposition,possibleposition[50])){ 264 setnewTarget(51,61); 265 } 266 else if(findpos(actuelposition,possibleposition[51])){ 267 setnewTarget(48,50); 268 } 269 else if(findpos(actuelposition,possibleposition[52])){ 270 setnewTarget(47,53); 271 } 272 else if(findpos(actuelposition,possibleposition[53])){ 273 setnewTarget(52,58); 274 } 275 else if(findpos(actuelposition,possibleposition[54])){ 276 setnewTarget(42,55,57); 277 } 278 else if(findpos(actuelposition,possibleposition[55])){ 279 setnewTarget(54,56); 280 } 281 else if(findpos(actuelposition,possibleposition[56])){ 282 setnewTarget(55,57,65); 283 } 284 else if(findpos(actuelposition,possibleposition[57])){ 285 setnewTarget(54,56,58,64); 286 } 287 else if(findpos(actuelposition,possibleposition[58])){ 288 setnewTarget(53,57,59); 289 } 290 else if(findpos(actuelposition,possibleposition[59])){ 291 setnewTarget(58,59,63); 292 } 293 else if(findpos(actuelposition,possibleposition[60])){ 294 setnewTarget(59,61,62); 295 } 296 else if(findpos(actuelposition,possibleposition[61])){ 297 setnewTarget(13,50,60); 298 } 299 else if(findpos(actuelposition,possibleposition[62])){ 300 setnewTarget(16,60); 301 } 302 else if(findpos(actuelposition,possibleposition[63])){ 303 setnewTarget(59,64); 304 } 305 else if(findpos(actuelposition,possibleposition[64])){ 306 setnewTarget(57,63,65); 307 } 308 else if(findpos(actuelposition,possibleposition[65])){ 309 setnewTarget(56,64); 310 } 311 else if(findpos(actuelposition,possibleposition[66])){ 312 setnewTarget(47,48); 313 } 314 315 else{ 316 this->resetGhost(); //Shouldn't happen... 317 } //End of Position table 318 lockmove = false; 319 } 320 321 //end of function 322 323 324 } 325 326 private: 327 328 329 330 //end of class 331 }; 332 333 334 //namespae orxonox 335 } 350 } 351 352 353 }
Note: See TracChangeset
for help on using the changeset viewer.