Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/3DPacman_FS19/src/modules/pacman/PacmanRandom.cc @ 12303

Last change on this file since 12303 was 12303, checked in by peterf, 5 years ago

PacmanRandom

File size: 11.5 KB
Line 
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;
22            switch(decision){
23                case 0:
24                    this->target_x = possibleposition[firstdec].x;
25                    this->target_z = possibleposition[firstdec].z; 
26                    this->ismoving = true;
27                    break;
28                }
29    }   
30
31
32    //Random choice of new target
33    void setnewTarget(int firstdec, int seconddec){ 
34           decision = rand()%2;
35            switch(decision){
36                case 0:
37                    this->target_x = possibleposition[firstdec].x;
38                    this->target_z = possibleposition[firstdec].z; 
39                    this->ismoving = true;
40                    break;
41                case 1:
42                    this->target_x = possibleposition[seconddec].x;
43                    this->target_z = possibleposition[seconddec].z; 
44                    this->ismoving = true;
45                    break; 
46            }
47           
48    }
49
50    //Random choice of new target
51    void setnewTarget(int firstdec, int seconddec, int thirddec){
52       
53           decision = rand()%3;
54            switch(decision){
55                case 0:
56                    this->target_x = possibleposition[firstdec].x;
57                    this->target_z = possibleposition[firstdec].z; 
58                    this->ismoving = true;
59                    break;
60                case 1:
61                    this->target_x = possibleposition[seconddec].x;
62                    this->target_z = possibleposition[seconddec].z; 
63                    this->ismoving = true;
64                    break;
65                case 2:
66                    this->target_x = possibleposition[thirddec].x;
67                    this->target_z = possibleposition[thirddec].z; 
68                    this->ismoving = true;
69                    break;   
70                }
71           
72        }
73
74    //Random choice of new target
75    void setnewTarget(int firstdec, int seconddec, int thirddec, int fourthdec){
76       
77           decision = rand()%4;
78            switch(decision){
79                case 0:
80                    this->target_x = possibleposition[firstdec].x;
81                    this->target_z = possibleposition[firstdec].z; 
82                    this->ismoving = true;
83                    break;
84                case 1:
85                    this->target_x = possibleposition[seconddec].x;
86                    this->target_z = possibleposition[seconddec].z; 
87                    this->ismoving = true;
88                    break;
89                case 2:
90                    this->target_x = possibleposition[thirddec].x;
91                    this->target_z = possibleposition[thirddec].z; 
92                    this->ismoving = true;
93                    break;
94                case 3:
95                        this->target_x = possibleposition[fourthdec].x;
96                    this->target_z = possibleposition[fourthdec].z; 
97                    this->ismoving = true;
98                    break;   
99                }
100           
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        }
Note: See TracBrowser for help on using the repository browser.