Hallo, ich programmiere gerade Pac Man und bin nun bei dem schlimmsten Part, der Ai, angekommen. Mein Problem ist, dass ja den kürzest möglichen Weg zu Pacman herausbekommen muss, ohne durch Wände zu laufen. Die Wände habe ich mit Lines geklont und das klappt alles, nur wenn der kürzeste Weg durch eine Wand wäre, würde der Geist ewigkeiten gegen die Wand laufen.
(Das gleiche mit der Y Achse, direction = 0 bedeutet rechts, 1 = links, 2 = unten, 3 = oben)
Soweit bin ich jetzt gekommen und jetzt ist das oben erwähnte Problem. Wie würde das am Besten funktionieren?
Wand Probe:
Java:
public class Ghost1{
public int movex(boolean inCage, boolean attacking, boolean chase, int pacx, int pacy) {
if (inCage) {
if (direction == 0) {
x += speed;
} else if (direction == 1) {
x -= speed;
}
} else {
if (direction == 0) {
int weg1 = (int) (Math.pow(pacx - x + 1, 2) + Math.pow(pacy - y, 2));
int weg2 = (int) (Math.pow(pacx - x, 2) + Math.pow(pacy - y + 1, 2));
int weg3 = (int) (Math.pow(pacx - x, 2) + Math.pow(pacy - y - 1, 2));
//+1, um den Schritt zu "simulieren"
if (weg1 >= weg2 && weg1 >= weg3) {
x += speed;
}
}
}
return x;
}
}
Soweit bin ich jetzt gekommen und jetzt ist das oben erwähnte Problem. Wie würde das am Besten funktionieren?
Wand Probe:
Java:
public class Wall{
// List walls speichert alle Wände
public boolean isCollaps(List<Point> allpoints){
boolean collapsed = false;
for (Point p : allpoints){
for (Rectangle wand : walls){
if (wand.contains(p)){
collapsed = true;
}
}
}
return collpapsed;
}
}
Zuletzt bearbeitet: