Hallo,
Ich habe mich mit dem MinMax Algorithmus beschäftig und folgenden Code aufgestellt:
Ich habe das auch soweit alles verstanden nur eine Frage bleibt mir ungeklärt.
Wenn ich mir in der if Abfrage
Meiner Meinung nach kann das aber eigentlich nicht sein da der MinMax doch davon ausgeht, dass beide Spieler perfekt spielen also müsste doch 0 herauskommen da 0 ein Unentschieden bedeuten würde.
Grüße Phänox
Ich habe mich mit dem MinMax Algorithmus beschäftig und folgenden Code aufgestellt:
Java:
private int computerzug(String[] board,int depth,String spieler)
{
if(!humansturn)
{
if(checkGewinnerComputer((spieler.equals("X")?"O":"X"), board))
{
return -10 -depth;
}
if(checkfull(board))
{
return 0;
}
String spieler1 = (spieler.equals("X")?"X":"O");
int max = Integer.MIN_VALUE;
int index = 0;
for(int i =0;i<board.length;i++)
{
if(board[i].equals(""))
{
String[] board1;
board1 = board.clone();
board1[i] = spieler1;
int moval = -computerzug(board1, depth+1, (spieler.equals("X")?"O":"X"));
if(moval> max)
{
max = moval;
index = i;
}
}
}
if(depth==0)
{
gameFrame.getSpielfeld()[index].setAllreadyclicked(true);
gameFrame.getSpielfeld()[index].setText(auswahl);
humansturn = true;
if(checkwinner())
{
gameFrame.sieg(auswahl);
}
else
{
if(auswahl.equals("X"))
auswahl = "O";
else
auswahl = "X";
}
}
return max;
}
return 500;
}
Ich habe das auch soweit alles verstanden nur eine Frage bleibt mir ungeklärt.
Wenn ich mir in der if Abfrage
if(moval>max)
immer max
und moval
ausgeben lasse steht da am Endemax = 17
und moval = 19
. Meiner Meinung nach kann das aber eigentlich nicht sein da der MinMax doch davon ausgeht, dass beide Spieler perfekt spielen also müsste doch 0 herauskommen da 0 ein Unentschieden bedeuten würde.
Grüße Phänox