TicTacToe bauen

Was ich habe ist sehr viel. Für meinen Fall jetzt habe ich das:

Code:
	public void pcStep()
	{
		for(int i = 0; i < 9; i++)
		{
			if(buttonField[i] == -1)
			{
				gui.performClickAction(i); break;
			}
		}
		
	}

Das ist die Methode, wo der PC dran ist zu "spielen". Und es ist halt eine sehr dumme Künstliche Intelligenz, weil er hieri mmer nur das nächstfreie Feld nimmt und es belegt.
 
Ich würde es so machen:

Setzt der Spieler im ersten Zug ins mittlere Feld setzt er seine Figur in eine zufällige Ecke. Wenn nicht setzt er in die Mitte.
Danach hohlt er sich aus Konstanten die Startposition und eine Richtung zum testen, geht sie durch, schaut ob sie 2 feindliche Figuren in einer Reihe sind und setzt seine Figur ins freie Feld. Wenn er keins findet setzt ers irgendwo hin.

Die Startpositionen/Richtungen wären dann:

Code:
0:0 Rechts
0:0 Unten
0:0 Diagional
1:0 Unten
2:0 Unten
2:0 Diagional
0:1 Rechts
0:2 Rechts

Wenn ich mich jetzt nicht vertan habe.
 
Du schreibst eine Methode, die sich immer selbst aufruft, und die Parameter so ändert, dass das nächste Feld getestet wird.
 
Eine Rekursion ist eigentlich nix interessantes, kannst du dir wie eine Schleife vorstellen. Du brauchst halt Daten, mit denen du arbeitest, eine Abbruchbedingung und eine Rückgabe. Die Inputdaten verarbeitest du halt und wenn die Abbruchbedingung erfüllt ist, dann wird eine entsprechende Rückgabe getätigt, andernfalls wird das Ergebnis eines weiteren Aufrufs der Funktion selbst zurückgegeben. Wenn die Funktion sich selbst aufruft, müssen die Inputdaten natürlich geändert werden, sonst hast du eine Abbruchbedingung, die nie erfüllt ist und somit den Effekt einer Endlosschleife.

Ich habe zwar kein Beispiel für deinen Fall, aber vielleicht hilft es dir beim Verständnis, ist eigentlich ziemlich einfach:
Java:
public class RekursionTest {
	public static int indexOfChar(String str, char c, int index) {
		if(str.charAt(index) == c) {
			return index;
		} else {
			return indexOfChar(str, c, ++index);
		}
	}

	public static void main(String[] args) {
		System.out.println(indexOfChar("hallo du da, was geht ab?", 'd', 0));
	}
}
Ausgabe:
 
Zum Beispiel so ;)

Java:
void RekursiveFunktion(int x){
  if( x < 9 )
    RekursiveFunktion(x+1);
}

RekursiveFunktion(0);
 
Zurück