Tic Tac Toe - Computergegner

  • so ich wollte mal fragen ob man bei meinem script das ich unten poste irgendwie einen computergegner hinzufügen kann sonst funktioniert es eigentlich ganz gut bis auf das das ich im mom noch keine win msg hinzugefügt habe aber das dürfte eh das kleinere übel sein ^^

    ach ja und noch was sind bei euch die felder auch so rot weil die müsten eigentlich wie auf den bildern grau sein sind sie aber bei mir nicht ^^

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    FileInstall ( "C:\Dokumente und Einstellungen\Johannes\Desktop\Tictactoe( ).bmp", @TempDir & "\Tictactoe( ).bmp", 1 )
    FileInstall ( "C:\Dokumente und Einstellungen\Johannes\Desktop\Tictactoe(x).bmp", @TempDir & "\Tictactoe(x).bmp", 1 )
    FileInstall ( "C:\Dokumente und Einstellungen\Johannes\Desktop\Tictactoe(o).bmp", @TempDir & "\Tictactoe(o).bmp", 1 )

    [/autoit] [autoit][/autoit] [autoit]

    #Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\Johannes\Desktop\Tictactoe.kxf
    $TicTacToe = GUICreate("Tic Tac Toe", 300, 355, -1, -1)
    GUISetIcon ( "C:\Programme\PopCap Games\Plants vs. Zombies\PlantsVsZombies.exe" )
    GUISetBkColor(0x800000)
    $Pic1 = GUICtrlCreatePic(@TempDir & "\Tictactoe( ).bmp", 0, 0, 100, 100)
    $Pic2 = GUICtrlCreatePic(@TempDir & "\Tictactoe( ).bmp", 100, 0, 100, 100)
    $Pic3 = GUICtrlCreatePic(@TempDir & "\Tictactoe( ).bmp", 200, 0, 100, 100)
    $Pic4 = GUICtrlCreatePic(@TempDir & "\Tictactoe( ).bmp", 0, 100, 100, 100)
    $Pic5 = GUICtrlCreatePic(@TempDir & "\Tictactoe( ).bmp", 100, 100, 100, 100)
    $Pic6 = GUICtrlCreatePic(@TempDir & "\Tictactoe( ).bmp", 200, 100, 100, 100)
    $Pic7 = GUICtrlCreatePic(@TempDir & "\Tictactoe( ).bmp", 0, 200, 100, 100)
    $Pic8 = GUICtrlCreatePic(@TempDir & "\Tictactoe( ).bmp", 100, 200, 100, 100)
    $Pic9 = GUICtrlCreatePic(@TempDir & "\Tictactoe( ).bmp", 200, 200, 100, 100)
    $RButton = GUICtrlCreateButton("Reset", 120, 315, 60, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    $click = 0
    $click1 = 0
    $click2 = 0
    $click3 = 0
    $click4 = 0
    $click5 = 0
    $click6 = 0
    $click7 = 0
    $click8 = 0
    $click9 = 0

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    FileDelete (@TempDir & "\Tictactoe( ).bmp")
    FileDelete (@TempDir & "\Tictactoe(x).bmp")
    FileDelete (@TempDir & "\Tictactoe(o).bmp")
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Case $Pic1
    $click1 = $click1 + 1
    If mod($click, 2) = 0 And $click1 = 1 Then
    $click = $click + 1
    GUICtrlDelete ( $Pic1 )
    $Pic1 = GUICtrlCreatePic(@TempDir & "\Tictactoe(x).bmp", 0, 0, 100, 100)
    ElseIf $click1 = 1 Then
    $click = $click + 1
    GUICtrlDelete ( $Pic1 )
    $Pic1 = GUICtrlCreatePic(@TempDir & "\Tictactoe(o).bmp", 0, 0, 100, 100)
    EndIf

    Case $Pic2
    $click2 = $click2 + 1
    If mod($click, 2) = 0 And $click2 = 1 Then
    $click = $click + 1
    GUICtrlDelete ( $Pic2 )
    $Pic2 = GUICtrlCreatePic(@TempDir & "\Tictactoe(x).bmp", 100, 0, 100, 100)
    ElseIf $click2 = 1 Then
    $click = $click + 1
    GUICtrlDelete ( $Pic2 )
    $Pic2 = GUICtrlCreatePic(@TempDir & "\Tictactoe(o).bmp", 100, 0, 100, 100)
    EndIf

    Case $Pic3
    $click3 = $click3 + 1
    If mod($click, 2) = 0 And $click3 = 1 Then
    $click = $click + 1
    GUICtrlDelete ( $Pic3 )
    $Pic3 = GUICtrlCreatePic(@TempDir & "\Tictactoe(x).bmp", 200, 0, 100, 100)
    ElseIf $click3 = 1 Then
    $click = $click + 1
    GUICtrlDelete ( $Pic3 )
    $Pic3 = GUICtrlCreatePic(@TempDir & "\Tictactoe(o).bmp", 200, 0, 100, 100)
    EndIf

    Case $Pic4
    $click4 = $click4 + 1
    If mod($click, 2) = 0 And $click4 = 1 Then
    $click = $click + 1
    GUICtrlDelete ( $Pic4 )
    $Pic4 = GUICtrlCreatePic(@TempDir & "\Tictactoe(x).bmp", 0, 100, 100, 100)
    ElseIf $click4 = 1 Then
    $click = $click + 1
    GUICtrlDelete ( $Pic4 )
    $Pic4 = GUICtrlCreatePic(@TempDir & "\Tictactoe(o).bmp", 0, 100, 100, 100)
    EndIf

    Case $Pic5
    $click5 = $click5 + 1
    If mod($click, 2) = 0 And $click5 = 1 Then
    $click = $click + 1
    GUICtrlDelete ( $Pic5 )
    $Pic5 = GUICtrlCreatePic(@TempDir & "\Tictactoe(x).bmp", 100, 100, 100, 100)
    ElseIf $click5 = 1 Then
    $click = $click + 1
    GUICtrlDelete ( $Pic5 )
    $Pic5 = GUICtrlCreatePic(@TempDir & "\Tictactoe(o).bmp", 100, 100, 100, 100)
    EndIf

    Case $Pic6
    $click6 = $click6 + 1
    If mod($click, 2) = 0 And $click6 = 1 Then
    $click = $click + 1
    GUICtrlDelete ( $Pic6 )
    $Pic6 = GUICtrlCreatePic(@TempDir & "\Tictactoe(x).bmp", 200, 100, 100, 100)
    ElseIf $click6 = 1 Then
    $click = $click + 1
    GUICtrlDelete ( $Pic6 )
    $Pic6 = GUICtrlCreatePic(@TempDir & "\Tictactoe(o).bmp", 200, 100, 100, 100)
    EndIf

    Case $Pic7
    $click7 = $click7 + 1
    If mod($click, 2) = 0 And $click7 = 1 Then
    $click = $click + 1
    GUICtrlDelete ( $Pic7 )
    $Pic7 = GUICtrlCreatePic(@TempDir & "\Tictactoe(x).bmp", 0, 200, 100, 100)
    ElseIf $click7 = 1 Then
    $click = $click + 1
    GUICtrlDelete ( $Pic7 )
    $Pic7 = GUICtrlCreatePic(@TempDir & "\Tictactoe(o).bmp", 0, 200, 100, 100)
    EndIf

    Case $Pic8
    $click8 = $click8 + 1
    If mod($click, 2) = 0 And $click8 = 1 Then
    $click = $click + 1
    GUICtrlDelete ( $Pic8 )
    $Pic8 = GUICtrlCreatePic(@TempDir & "\Tictactoe(x).bmp", 100, 200, 100, 100)
    ElseIf $click8 = 1 Then
    $click = $click + 1
    GUICtrlDelete ( $Pic8 )
    $Pic8 = GUICtrlCreatePic(@TempDir & "\Tictactoe(o).bmp", 100, 200, 100, 100)
    EndIf

    Case $Pic9
    $click9 = $click9 + 1
    If mod($click, 2) = 0 And $click9 = 1 Then
    $click = $click + 1
    GUICtrlDelete ( $Pic9 )
    $Pic9 = GUICtrlCreatePic(@TempDir & "\Tictactoe(x).bmp", 200, 200, 100, 100)
    ElseIf $click9 = 1 Then
    $click = $click + 1
    GUICtrlDelete ( $Pic9 )
    $Pic9 = GUICtrlCreatePic(@TempDir & "\Tictactoe(o).bmp", 200, 200, 100, 100)
    EndIf
    Case $RButton
    $click1 = 0
    $click2 = 0
    $click3 = 0
    $click4 = 0
    $click5 = 0
    $click6 = 0
    $click7 = 0
    $click8 = 0
    $click9 = 0
    GUICtrlDelete ( $Pic1 )
    GUICtrlDelete ( $Pic2 )
    GUICtrlDelete ( $Pic3 )
    GUICtrlDelete ( $Pic4 )
    GUICtrlDelete ( $Pic5 )
    GUICtrlDelete ( $Pic6 )
    GUICtrlDelete ( $Pic7 )
    GUICtrlDelete ( $Pic8 )
    GUICtrlDelete ( $Pic9 )
    $Pic1 = GUICtrlCreatePic(@TempDir & "\Tictactoe( ).bmp", 0, 0, 100, 100)
    $Pic2 = GUICtrlCreatePic(@TempDir & "\Tictactoe( ).bmp", 100, 0, 100, 100)
    $Pic3 = GUICtrlCreatePic(@TempDir & "\Tictactoe( ).bmp", 200, 0, 100, 100)
    $Pic4 = GUICtrlCreatePic(@TempDir & "\Tictactoe( ).bmp", 0, 100, 100, 100)
    $Pic5 = GUICtrlCreatePic(@TempDir & "\Tictactoe( ).bmp", 100, 100, 100, 100)
    $Pic6 = GUICtrlCreatePic(@TempDir & "\Tictactoe( ).bmp", 200, 100, 100, 100)
    $Pic7 = GUICtrlCreatePic(@TempDir & "\Tictactoe( ).bmp", 0, 200, 100, 100)
    $Pic8 = GUICtrlCreatePic(@TempDir & "\Tictactoe( ).bmp", 100, 200, 100, 100)
    $Pic9 = GUICtrlCreatePic(@TempDir & "\Tictactoe( ).bmp", 200, 200, 100, 100)
    EndSwitch
    WEnd

    [/autoit]

    Edit: ach ja ich hab das nicht hier reingestellt das es mir einer macht sondern das mir jemand erklärt wie sowas geht weil von allein der lösung lernt man ja nicht wirklich viel ^^

    • Offizieller Beitrag

    Mal ein klener Tip, Du musst nicht immer mit

    [autoit]


    GUICtrlDelete ( $Pic1 )
    $Pic1 = GUICtrlCreatePic(@TempDir & "\Tictactoe(x).bmp", 0, 0, 100, 100)

    [/autoit]

    die Bilder aktualisieren, es reicht auch

    [autoit]


    GUICtrlSetImage($Pic1, @TempDir & "\Tictactoe(x).bmp")

    [/autoit]
  • Ich würde dir empfehlen dich mit Backtrack zu befassen, damit kannst du den jeweils besten Schritt für den Computergegner berechnen lassen. Geht auch noch relativ schnell bei einer 3x3 Feldgröße. Kann grad nur dir nen Java-Beispiel-Code geben.

    Spoiler anzeigen


    Best.java

    TicTacToeSlow.java

    TicTacMainSlow.java