Hi peeps,
I’m building a sort of maze game, I’m pretty new to this. I’ve made games before but none of them where tile-based.
Now I followed a tutorial from Outside Of Society, this tutorial helped me with the tiles, walls and enemies.
The enemies are pretty basic and choose random directions. The problem is that I don’t want the enemies to be able to walk over each other, but they have to find a new direction at that moment.
But I can’t figure out how :h:
here is the code of the enemy MC:
ActionScript Code:
[FONT=Courier New][LEFT][COLOR=#000000]function[/COLOR] moveMe COLOR=#000000[/COLOR] [COLOR=#000000]{[/COLOR]
[COLOR=#808080]// Waar zijn de hoeken?[/COLOR]
[COLOR=#000000]var[/COLOR] downY = [COLOR=#0000FF]Math[/COLOR].[COLOR=#0000FF]floor[/COLOR][COLOR=#000000]([/COLOR] [COLOR=#000000]([/COLOR] [COLOR=#0000FF]_y[/COLOR] + COLOR=#000000[/COLOR] [COLOR=#000000])[/COLOR] / tileH [COLOR=#000000])[/COLOR];
[COLOR=#000000]var[/COLOR] upY = [COLOR=#0000FF]Math[/COLOR].[COLOR=#0000FF]floor[/COLOR][COLOR=#000000]([/COLOR] [COLOR=#000000]([/COLOR] [COLOR=#0000FF]_y[/COLOR] - COLOR=#000000[/COLOR] [COLOR=#000000])[/COLOR] / tileH [COLOR=#000000])[/COLOR];
[COLOR=#000000]var[/COLOR] leftX = [COLOR=#0000FF]Math[/COLOR].[COLOR=#0000FF]floor[/COLOR][COLOR=#000000]([/COLOR] [COLOR=#000000]([/COLOR] [COLOR=#0000FF]_x[/COLOR] - COLOR=#000000[/COLOR] [COLOR=#000000])[/COLOR] / tileW [COLOR=#000000])[/COLOR];
[COLOR=#000000]var[/COLOR] rightX = [COLOR=#0000FF]Math[/COLOR].[COLOR=#0000FF]floor[/COLOR][COLOR=#000000]([/COLOR] [COLOR=#000000]([/COLOR] [COLOR=#0000FF]_x[/COLOR] + COLOR=#000000[/COLOR] [COLOR=#000000])[/COLOR] / tileW [COLOR=#000000])[/COLOR];
centerX = [COLOR=#0000FF]Math[/COLOR].[COLOR=#0000FF]floor[/COLOR][COLOR=#000000]([/COLOR] [COLOR=#0000FF]_x[/COLOR] / tileW [COLOR=#000000])[/COLOR];
centerY = [COLOR=#0000FF]Math[/COLOR].[COLOR=#0000FF]floor[/COLOR][COLOR=#000000]([/COLOR] [COLOR=#0000FF]_y[/COLOR] / tileW [COLOR=#000000])[/COLOR];
[COLOR=#000000]**var**[/COLOR] x = [COLOR=#0000FF]_x[/COLOR]/tileW;
[COLOR=#000000]**var**[/COLOR] y = [COLOR=#0000FF]_y[/COLOR]/tileH;
[COLOR=#000000]**var**[/COLOR] offsetX = x-centerX;
[COLOR=#000000]**var**[/COLOR] offsetY = y-centerY;
[COLOR=#808080]*// collission detectie*[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] dir == [COLOR=#FF0000]"up"[/COLOR] && cMap[COLOR=#000000][[/COLOR]upY[COLOR=#000000]][/COLOR][COLOR=#000000][[/COLOR]centerX[COLOR=#000000]][/COLOR] > [COLOR=#000080]0[/COLOR] || dir == [COLOR=#FF0000]"up"[/COLOR] && cMap[COLOR=#000000][[/COLOR]upY[COLOR=#000000]][/COLOR][COLOR=#000000][[/COLOR]centerX[COLOR=#000000]][/COLOR] > [COLOR=#000080]0[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
newDir = [COLOR=#000000]**true**[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] dir == [COLOR=#FF0000]"down"[/COLOR] && cMap[COLOR=#000000][[/COLOR]downY[COLOR=#000000]][/COLOR][COLOR=#000000][[/COLOR]centerX[COLOR=#000000]][/COLOR] > [COLOR=#000080]0[/COLOR] || dir == [COLOR=#FF0000]"down"[/COLOR] && cMap[COLOR=#000000][[/COLOR]downY[COLOR=#000000]][/COLOR][COLOR=#000000][[/COLOR]centerX[COLOR=#000000]][/COLOR] > [COLOR=#000080]0[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
newDir = [COLOR=#000000]**true**[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] dir == [COLOR=#FF0000]"left"[/COLOR] && cMap[COLOR=#000000][[/COLOR]centerY[COLOR=#000000]][/COLOR][COLOR=#000000][[/COLOR]leftX[COLOR=#000000]][/COLOR] > [COLOR=#000080]0[/COLOR] || dir == [COLOR=#FF0000]"left"[/COLOR] && cMap[COLOR=#000000][[/COLOR]centerY[COLOR=#000000]][/COLOR][COLOR=#000000][[/COLOR]leftX[COLOR=#000000]][/COLOR] > [COLOR=#000080]0[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
newDir = [COLOR=#000000]**true**[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] dir == [COLOR=#FF0000]"right"[/COLOR] && cMap[COLOR=#000000][[/COLOR]centerY[COLOR=#000000]][/COLOR][COLOR=#000000][[/COLOR]rightX[COLOR=#000000]][/COLOR] > [COLOR=#000080]0[/COLOR] || dir == [COLOR=#FF0000]"right"[/COLOR] && cMap[COLOR=#000000][[/COLOR]centerY[COLOR=#000000]][/COLOR][COLOR=#000000][[/COLOR]rightX[COLOR=#000000]][/COLOR] > [COLOR=#000080]0[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
newDir = [COLOR=#000000]**true**[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#808080]*// Nieuwe richting*[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] centerX != oldX || centerY != oldY [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
[COLOR=#808080]*// waar kanh ik lopen?*[/COLOR]
[COLOR=#808080]*// omhoog*[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] cMap[COLOR=#000000][[/COLOR]centerY-[COLOR=#000080]1[/COLOR][COLOR=#000000]][/COLOR][COLOR=#000000][[/COLOR]centerX[COLOR=#000000]][/COLOR] <= [COLOR=#000080]0[/COLOR] && dir != [COLOR=#FF0000]"down"[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
newDir2 = [COLOR=#000000]**true**[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#808080]*// naar beneden*[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] cMap[COLOR=#000000][[/COLOR]centerY+[COLOR=#000080]1[/COLOR][COLOR=#000000]][/COLOR][COLOR=#000000][[/COLOR]centerX[COLOR=#000000]][/COLOR] <= [COLOR=#000080]0[/COLOR] && dir != [COLOR=#FF0000]"up"[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
newDir2 = [COLOR=#000000]**true**[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#808080]*// naar links*[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] cMap[COLOR=#000000][[/COLOR]centerY[COLOR=#000000]][/COLOR][COLOR=#000000][[/COLOR]centerX-[COLOR=#000080]1[/COLOR][COLOR=#000000]][/COLOR] <= [COLOR=#000080]0[/COLOR] && dir != [COLOR=#FF0000]"right"[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
newDir2 = [COLOR=#000000]**true**[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#808080]*// naar rechts*[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] cMap[COLOR=#000000][[/COLOR]centerY[COLOR=#000000]][/COLOR][COLOR=#000000][[/COLOR]centerX+[COLOR=#000080]1[/COLOR][COLOR=#000000]][/COLOR] <= [COLOR=#000080]0[/COLOR] && dir != [COLOR=#FF0000]"left"[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
newDir2 = [COLOR=#000000]**true**[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#000000]}[/COLOR]
[COLOR=#808080]*// nieuwe richting*[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] [COLOR=#000000]([/COLOR]newDir || newDir2[COLOR=#000000])[/COLOR] && offsetX == [COLOR=#000080]0[/COLOR].[COLOR=#000080]5[/COLOR] && offsetY == [COLOR=#000080]0[/COLOR].[COLOR=#000080]5[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] newDir [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
[COLOR=#808080]*// waar kan ik lopen?*[/COLOR]
[COLOR=#000000]**var**[/COLOR] dirArray = [COLOR=#000000][[/COLOR][COLOR=#000000]][/COLOR];
[COLOR=#808080]*// omhoog*[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] cMap[COLOR=#000000][[/COLOR]centerY-[COLOR=#000080]1[/COLOR][COLOR=#000000]][/COLOR][COLOR=#000000][[/COLOR]centerX[COLOR=#000000]][/COLOR] <= [COLOR=#000080]0[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
dirArray.[COLOR=#0000FF]push[/COLOR][COLOR=#000000]([/COLOR] [COLOR=#FF0000]"up"[/COLOR] [COLOR=#000000])[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#808080]*// naar beneden*[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] cMap[COLOR=#000000][[/COLOR]centerY+[COLOR=#000080]1[/COLOR][COLOR=#000000]][/COLOR][COLOR=#000000][[/COLOR]centerX[COLOR=#000000]][/COLOR] <= [COLOR=#000080]0[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
dirArray.[COLOR=#0000FF]push[/COLOR][COLOR=#000000]([/COLOR] [COLOR=#FF0000]"down"[/COLOR] [COLOR=#000000])[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#808080]*// naar links*[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] cMap[COLOR=#000000][[/COLOR]centerY[COLOR=#000000]][/COLOR][COLOR=#000000][[/COLOR]centerX-[COLOR=#000080]1[/COLOR][COLOR=#000000]][/COLOR] <= [COLOR=#000080]0[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
dirArray.[COLOR=#0000FF]push[/COLOR][COLOR=#000000]([/COLOR] [COLOR=#FF0000]"left"[/COLOR] [COLOR=#000000])[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#808080]*// naar rechts*[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] cMap[COLOR=#000000][[/COLOR]centerY[COLOR=#000000]][/COLOR][COLOR=#000000][[/COLOR]centerX+[COLOR=#000080]1[/COLOR][COLOR=#000000]][/COLOR] <= [COLOR=#000080]0[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
dirArray.[COLOR=#0000FF]push[/COLOR][COLOR=#000000]([/COLOR] [COLOR=#FF0000]"right"[/COLOR] [COLOR=#000000])[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#808080]*// kies een random richting uit alle beschikbare richtingen*[/COLOR]
[COLOR=#000000]**var**[/COLOR] num = [COLOR=#0000FF]random[/COLOR][COLOR=#000000]([/COLOR]dirArray.[COLOR=#0000FF]length[/COLOR][COLOR=#000000])[/COLOR];
dir = dirArray[COLOR=#000000][[/COLOR]num[COLOR=#000000]][/COLOR];
newDir = [COLOR=#000000]**false**[/COLOR];
[COLOR=#000000]}[/COLOR] [COLOR=#0000FF]else[/COLOR] [COLOR=#000000]{[/COLOR]
[COLOR=#808080]*// waar kan ik lopen? nummer 2 niet geforceerd.*[/COLOR]
[COLOR=#000000]**var**[/COLOR] dirArray = [COLOR=#000000][[/COLOR][COLOR=#000000]][/COLOR];
[COLOR=#808080]*// omhoog*[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] cMap[COLOR=#000000][[/COLOR]centerY-[COLOR=#000080]1[/COLOR][COLOR=#000000]][/COLOR][COLOR=#000000][[/COLOR]centerX[COLOR=#000000]][/COLOR] <= [COLOR=#000080]0[/COLOR] && dir != [COLOR=#FF0000]"down"[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
dirArray.[COLOR=#0000FF]push[/COLOR][COLOR=#000000]([/COLOR] [COLOR=#FF0000]"up"[/COLOR] [COLOR=#000000])[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#808080]*// naar beneden*[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] cMap[COLOR=#000000][[/COLOR]centerY+[COLOR=#000080]1[/COLOR][COLOR=#000000]][/COLOR][COLOR=#000000][[/COLOR]centerX[COLOR=#000000]][/COLOR] <= [COLOR=#000080]0[/COLOR] && dir != [COLOR=#FF0000]"up"[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
dirArray.[COLOR=#0000FF]push[/COLOR][COLOR=#000000]([/COLOR] [COLOR=#FF0000]"down"[/COLOR] [COLOR=#000000])[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#808080]*// naar links*[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] cMap[COLOR=#000000][[/COLOR]centerY[COLOR=#000000]][/COLOR][COLOR=#000000][[/COLOR]centerX-[COLOR=#000080]1[/COLOR][COLOR=#000000]][/COLOR] <= [COLOR=#000080]0[/COLOR] && dir != [COLOR=#FF0000]"right"[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
dirArray.[COLOR=#0000FF]push[/COLOR][COLOR=#000000]([/COLOR] [COLOR=#FF0000]"left"[/COLOR] [COLOR=#000000])[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#808080]*// naar rechts*[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] cMap[COLOR=#000000][[/COLOR]centerY[COLOR=#000000]][/COLOR][COLOR=#000000][[/COLOR]centerX+[COLOR=#000080]1[/COLOR][COLOR=#000000]][/COLOR] <= [COLOR=#000080]0[/COLOR] && dir != [COLOR=#FF0000]"left"[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
dirArray.[COLOR=#0000FF]push[/COLOR][COLOR=#000000]([/COLOR] [COLOR=#FF0000]"right"[/COLOR] [COLOR=#000000])[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#808080]*// kies een random richting uit alle beschikbare richtingen*[/COLOR]
[COLOR=#000000]**var**[/COLOR] num = [COLOR=#0000FF]random[/COLOR][COLOR=#000000]([/COLOR]dirArray.[COLOR=#0000FF]length[/COLOR][COLOR=#000000])[/COLOR];
dir = dirArray[COLOR=#000000][[/COLOR]num[COLOR=#000000]][/COLOR];
newDir2 = [COLOR=#000000]**false**[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#000000]}[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] dir == [COLOR=#FF0000]"up"[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]_y[/COLOR] -= speed;
[COLOR=#0000FF]_x[/COLOR] = [COLOR=#000000]([/COLOR]centerX*tileW[COLOR=#000000])[/COLOR] + [COLOR=#000000]([/COLOR]tileW*[COLOR=#000080]0[/COLOR].[COLOR=#000080]5[/COLOR][COLOR=#000000])[/COLOR];
enemy_dude.[COLOR=#0000FF]gotoAndStop[/COLOR][COLOR=#000000]([/COLOR][COLOR=#000080]1[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] dir == [COLOR=#FF0000]"down"[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]_y[/COLOR] += speed;
[COLOR=#0000FF]_x[/COLOR] = [COLOR=#000000]([/COLOR]centerX*tileW[COLOR=#000000])[/COLOR] + [COLOR=#000000]([/COLOR]tileW*[COLOR=#000080]0[/COLOR].[COLOR=#000080]5[/COLOR][COLOR=#000000])[/COLOR];;
enemy_dude.[COLOR=#0000FF]gotoAndStop[/COLOR][COLOR=#000000]([/COLOR][COLOR=#000080]3[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] dir == [COLOR=#FF0000]"left"[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]_x[/COLOR] -= speed;
[COLOR=#0000FF]_y[/COLOR] = [COLOR=#000000]([/COLOR]centerY * tileH[COLOR=#000000])[/COLOR] + [COLOR=#000000]([/COLOR]tileH*[COLOR=#000080]0[/COLOR].[COLOR=#000080]5[/COLOR][COLOR=#000000])[/COLOR];
enemy_dude.[COLOR=#0000FF]gotoAndStop[/COLOR][COLOR=#000000]([/COLOR][COLOR=#000080]4[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR] dir == [COLOR=#FF0000]"right"[/COLOR] [COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]_x[/COLOR] += speed;
[COLOR=#0000FF]_y[/COLOR] = [COLOR=#000000]([/COLOR]centerY * tileH[COLOR=#000000])[/COLOR] + [COLOR=#000000]([/COLOR]tileH*[COLOR=#000080]0[/COLOR].[COLOR=#000080]5[/COLOR][COLOR=#000000])[/COLOR];
enemy_dude.[COLOR=#0000FF]gotoAndStop[/COLOR][COLOR=#000000]([/COLOR][COLOR=#000080]2[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#000000]}[/COLOR]
oldDir = dir;
oldX = centerX;
oldY = centerY;
[COLOR=#000000]}[/COLOR]
[/LEFT]
[/FONT]
Is there someone who can give me a hint, how to solve this? Or even better, maybe knows how to solve this?
Thanks in advance