MinMax Algorithmus

Phänox

Aktives Mitglied
Hallo,
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 🙂
 

Neue Themen


Zurück
Oben