# KI für TicTacToe programmieren > Probleme



## phip1611 (31. Dez 2012)

Also es ist keine richtige KI (Künstliche Intelligenz), aber der Computer setzt halt Symbole bei meinem TicTacToe-Spiel.
Ich habe es so gelöst, dass der Computer zwei Zufallszahlen zwischen 1 und 3 generiert.
Diese stehen für die Korodinaten der Felder im TicTacToe-Feld.
Ist in dem Feld bereits ein Inhalt wird die Methode erneut (von sich selbst) aufgerufen und generiert zwei neue Zufallszahlen (Koordinaten). Wenn diesmal ein freies Feld generiert wurde, so wird das Feld mit dem Symbol des Computers gefüllt.
Allerdings passiert es manchmal, dass sich die Methode x-Mal selbst aufruft und keine freien Koordinaten findet. 
--> StackOverFlow.

Gibt es eine bessere Lösung?

Mein Code:

```
private void _AI_Turn()
    {
        byte x, y;
        boolean ok;
        
        ok = false;
        
        while( !ok )
        {

            x = (byte) ( java.lang.Math.random() * ( ( 3 + 1 ) - 1 ) + 1 ); // Algorithmus aus dem Internet ..
            y = (byte) ( java.lang.Math.random() * ( ( 3 + 1 ) - 1 ) + 1 );
            
            // zur info. this._gameField enthält eine Instanz meiner Klass für Spielfelder
            if( this._gameField.getFieldContent( x, y ).equals( " " ) )
            {
                this._gameField.updateField( x, y, this._AI);
                ok = true;
            }
            else
            {
                this._AI_Turn();
            }
        }
    }
```


----------



## Marcinek (31. Dez 2012)

Ja, du brauchst eine Liste mit verfügbaren koordinaten.

Aus dieser Liste entnimmst du genau eine per Zufall.

Wenn der Spieler Koordinaten spielt, dann müssen diese aus der Liste ebenfalls entfernt werden.

--

Außerdem ist die Rekursion auch falsch. Entweder while(!ok) oder Rekusion, wobei das hier eher ein Iteratives Problem ist, als rekusriv.


----------



## phip1611 (31. Dez 2012)

Marcinek hat gesagt.:


> [...] Liste mit verfügbaren koordinaten [...]



Danke! Ich hab viel zu kompliziert gedacht!


----------

