Tic Tac Toe



  • Hallo, versuche mich gerade mit SDL und C an Tic Tac Toe. Leider hapert es gerade an der Gewinnabfrage bzw. die Aktion des Computers.
    Das Spiel ist soweit, dass man in eines der 9 Felder klickt und ein kreuz gemalt wird (Spieler= Kreuz; PC = Kreis). Der computer agiert, indem er einfach ein Kreis hinterwirft an der nächsten freien Stelle. Etwas besseres fiel mir nicht ein. Ich tüftle gerade an etwas aber bekomme es nicht hin.

    Das ist der Code womit der PC den Kreis hinterher zeichnet.

    for (e = 0; e < FIELDS; e++) {
    if(Box[e].set == 1){
    apply_surface(Box[e].x, Box[e].y, kreis, screen);
    Box[e].set = 0;
    break;
    } 
    }
    

    Das Feld ist so aufgebaut

    0 | 1 | 2
    3 | 4 | 5
    6 | 7 | 8
    

    Ich habe es nicht gegoogelt, weil ich keine Lösung vorgeworfen kriegen möchte. Sondern nur einen denkanstoß. Ich möchte das Programm lieber selbst schreiben. Nur komme ich eben nicht weiter. Also keinen kompletten Code posten, sondern eher beschreiben wie ich es umsetzen kann.

    Ich habe einen Ansatz aber weiss nichts damit anzufangen. Und zwar wenn man das Feld 0 wählt (Kreuzt) kann man -1, -3 und -4 rechnen. Der Betrag von dem Ergebnis ergibt jeweils das Feld, welches der PC nehmen kann um den Spieler zu blockieren. Leider funktioniert das nicht mit allen Feldern.



  • Also wenn dein Problem die künstliche Intelligenz ist, dann empfehle ich dir den MinMax-Algorithmus bzw. die Weiterentwicklung davon: AlphaBeta.

    L. G.
    Steffo



  • ich habe es auch schon mal versucht bin aber aus Zeit Gründen nicht fertig geworden. meine Idee war alle möglichen Spielverläufe durch zu simulieren und den Zug zu wählen der am häufigsten gewinnt.



  • Danke an euch beiden. Der Min Max Algorithmus scheint genau das zu sein, was ich brauche. Also danke nochmals. Ich werde mich dann an die Arbeit machen und mich sicherlich dazu nochmal melden 😉


Anmelden zum Antworten