Hallo,
Ich habe für die Schule das Spiel 4 gewinnt mit Hilfe des MinMax Algorithmus programmiert.
Nur leider funktioniert mein Algorithmus nicht und ich komme einfach nicht weiter...
Es scheint als würde sich meine kI in einer Endlosschleife befinden.
Es wäre wirklich toll, wenn mir hier jemand bei meinem Problem helfen könnte und mir sagen könnte welche Fehler ich gemacht habe.
Hier ist der Code meines Algorithmus:
Falls nötig kann ich auch mein ganzes Greenfootprojekt hochladen.
Ich habe für die Schule das Spiel 4 gewinnt mit Hilfe des MinMax Algorithmus programmiert.
Nur leider funktioniert mein Algorithmus nicht und ich komme einfach nicht weiter...
Es scheint als würde sich meine kI in einer Endlosschleife befinden.
Es wäre wirklich toll, wenn mir hier jemand bei meinem Problem helfen könnte und mir sagen könnte welche Fehler ich gemacht habe.
Hier ist der Code meines Algorithmus:
Java:
public void minmax()
{
erstelleMatrix();
z=-1;
int gewuenschteTiefe = 2;
int bewertung = max(2, gewuenschteTiefe);
if (z == -1)
System.out.println("Fehler");
else
getWorld().addObject(new Computer(),bewertung,1);
}
int max(int spieler, int tiefe) {
if (tiefe == 0 || keineZuegeMehr())
return bewerten();
int maxWert = -1000000;
for(int x = 0; x <= 6; x++){
for(int y=5; y>=0; y--)
{if(Spielbrett.board[x][y]==0)
{
Zug zug=new Zug(spieler,x,y);
Spielbrett.board[zug.getx()][zug.gety()]=spieler;
int wert = min(1 , tiefe-1);
Spielbrett.board[zug.getx()][zug.gety()]=0;
if (wert > maxWert) {
maxWert = wert;
if (tiefe==0)
z= zug.getx();
}
}
}
}
return z;
}
int min(int spieler, int tiefe) {
if (tiefe == 0 || keineZuegeMehr())
return bewerten();
int minWert = 1000000;
for(int x = 0; x <= 6; x++){
{for(int y=5; y>=0; y--)
{if(Spielbrett.board[x][y]==0)
{
Zug zug=new Zug(spieler,x,y);
Spielbrett.board[zug.getx()][zug.gety()]=spieler;
int wert = max(2 , tiefe-1);
Spielbrett.board[zug.getx()][zug.gety()]=0;
if (wert < minWert) {
minWert = wert;
}
}
}
}
}
return minWert;
}
Falls nötig kann ich auch mein ganzes Greenfootprojekt hochladen.