TicTacToe Computer als gegner

  • Hi ich hab grade eine ziemlich einfache version von TicTacToe gemacht.

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>
    $S1P=0
    $S2P=0
    $SA=1
    $GUI = GUICreate("TicTacToe œœœœ WOnder", 1677, 975, 18, 49,Bitor($WS_POPUP,$WS_MAXIMIZE))
    $Button1 = GUICtrlCreateButton("", 472, 240, 219, 185, $WS_GROUP)
    GUICtrlSetFont(-1, 150, 800, 0, "MS Sans Serif")
    $Button2 = GUICtrlCreateButton("", 694, 240, 219, 185, $WS_GROUP)
    GUICtrlSetFont(-1, 150, 800, 0, "MS Sans Serif")
    $Button3 = GUICtrlCreateButton("", 916, 240, 219, 185, $WS_GROUP)
    GUICtrlSetFont(-1, 150, 800, 0, "MS Sans Serif")
    $Button4 = GUICtrlCreateButton("", 472, 428, 219, 185, $WS_GROUP)
    GUICtrlSetFont(-1, 150, 800, 0, "MS Sans Serif")
    $Button5 = GUICtrlCreateButton("", 694, 428, 219, 185, $WS_GROUP)
    GUICtrlSetFont(-1, 150, 800, 0, "MS Sans Serif")
    $Button6 = GUICtrlCreateButton("", 916, 428, 219, 185, $WS_GROUP)
    GUICtrlSetFont(-1, 150, 800, 0, "MS Sans Serif")
    $Button7 = GUICtrlCreateButton("", 472, 617, 219, 185, $WS_GROUP)
    GUICtrlSetFont(-1, 150, 800, 0, "MS Sans Serif")
    $Button8 = GUICtrlCreateButton("", 694, 617, 219, 185, $WS_GROUP)
    GUICtrlSetFont(-1, 150, 800, 0, "MS Sans Serif")
    $Button9 = GUICtrlCreateButton("", 916, 617, 219, 185, $WS_GROUP)
    GUICtrlSetFont(-1, 150, 800, 0, "MS Sans Serif")
    $Group1 = GUICtrlCreateGroup("Statistik", 28, 248, 383, 253)
    GUICtrlSetFont(-1, 23, 800, 2, "Myriad Pro")
    $Label1 = GUICtrlCreateLabel("Spieler1 : "&$S1P&" Punkte", 40, 296, 315, 43)
    GUICtrlSetFont(-1, 20, 800, 2, "Myriad Pro")
    $Label2 = GUICtrlCreateLabel("Spieler2 : "&$S2P&" Punkte", 40, 367, 323, 43)
    GUICtrlSetFont(-1, 20, 800, 2, "Myriad Pro")
    $Label3 = GUICtrlCreateLabel("Spiel Nummer : "&$SA&"", 40, 434, 329, 43)
    GUICtrlSetFont(-1, 20, 800, 2, "Myriad Pro")
    $Label4 = GUICtrlCreateLabel("",395,140,8000,55)
    GUICtrlSetColor(-1,0xff0000)
    GUICtrlSetFont(-1,30,800,6,"Woodcut")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    $player = 1
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    IF $player=1 Then
    GUICtrlSetData($Button1,"X")
    $player=2
    GUICtrlSetDAta($Label4,"Spieler 2 ist an der Reihe!!!")
    elseIF $player=2 Then
    GUICtrlSetData($Button1,"O")
    $player=1
    GUICtrlSetDAta($Label4,"Spieler 1 ist an der Reihe!!!")
    Endif
    GUICTRlsetstate($Button1,$GUI_DISABLE)
    win()
    Case $Button2
    IF $player=1 Then
    GUICtrlSetData($Button2,"X")
    $player=2
    GUICtrlSetDAta($Label4,"Spieler 2 ist an der Reihe!!!")
    elseIF $player=2 Then
    GUICtrlSetData($Button2,"O")
    $player=1
    GUICtrlSetDAta($Label4,"Spieler 1 ist an der Reihe!!!")
    Endif
    GUICTRlsetstate($Button2,$GUI_DISABLE)
    win()
    Case $Button3
    IF $player=1 Then
    GUICtrlSetData($Button3,"X")
    $player=2
    GUICtrlSetDAta($Label4,"Spieler 2 ist an der Reihe!!!")
    elseIF $player=2 Then
    GUICtrlSetData($Button3,"O")
    $player=1
    GUICtrlSetDAta($Label4,"Spieler 1 ist an der Reihe!!!")
    Endif
    GUICTRlsetstate($Button3,$GUI_DISABLE)
    win()
    Case $Button4
    IF $player=1 Then
    GUICtrlSetData($Button4,"X")
    $player=2
    GUICtrlSetDAta($Label4,"Spieler 2 ist an der Reihe!!!")
    elseIF $player=2 Then
    GUICtrlSetData($Button4,"O")
    $player=1
    GUICtrlSetDAta($Label4,"Spieler 1 ist an der Reihe!!!")
    Endif
    GUICTRlsetstate($Button4,$GUI_DISABLE)
    win()
    Case $Button5
    IF $player=1 Then
    GUICtrlSetData($Button5,"X")
    $player=2
    GUICtrlSetDAta($Label4,"Spieler 2 ist an der Reihe!!!")
    elseIF $player=2 Then
    GUICtrlSetData($Button5,"O")
    $player=1
    GUICtrlSetDAta($Label4,"Spieler 1 ist an der Reihe!!!")
    Endif
    GUICTRlsetstate($Button5,$GUI_DISABLE)
    win()
    Case $Button6
    IF $player=1 Then
    GUICtrlSetData($Button6,"X")
    $player=2
    GUICtrlSetDAta($Label4,"Spieler 2 ist an der Reihe!!!")
    elseIF $player=2 Then
    GUICtrlSetData($Button6,"O")
    $player=1
    GUICtrlSetDAta($Label4,"Spieler 1 ist an der Reihe!!!")
    Endif
    GUICTRlsetstate($Button6,$GUI_DISABLE)
    win()

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

    Case $Button7
    IF $player=1 Then
    GUICtrlSetData($Button7,"X")
    $player=2
    GUICtrlSetDAta($Label4,"Spieler 2 ist an der Reihe!!!")
    elseIF $player=2 Then
    GUICtrlSetData($Button7,"O")
    $player=1
    GUICtrlSetDAta($Label4,"Spieler 1 ist an der Reihe!!!")
    Endif
    GUICTRlsetstate($Button7,$GUI_DISABLE)
    win()
    Case $Button8
    IF $player=1 Then
    GUICtrlSetData($Button8,"X")
    $player=2
    GUICtrlSetDAta($Label4,"Spieler 2 ist an der Reihe!!!")
    elseIF $player=2 Then
    GUICtrlSetData($Button8,"O")
    $player=1
    GUICtrlSetDAta($Label4,"Spieler 1 ist an der Reihe!!!")
    Endif
    GUICTRlsetstate($Button8,$GUI_DISABLE)
    win()
    Case $Button9
    IF $player=1 Then
    GUICtrlSetData($Button9,"X")
    $player=2
    GUICtrlSetDAta($Label4,"Spieler 2 ist an der Reihe!!!")
    elseiF $player=2 Then
    GUICtrlSetData($Button9,"O")
    $player=1
    GUICtrlSetDAta($Label4,"Spieler 1 ist an der Reihe!!!")
    Endif
    GUICTRlsetstate($Button9,$GUI_DISABLE)
    win()
    EndSwitch
    WEnd
    Func win()
    ;~ WIN FÜR "X"
    $XO="X"
    ;~ 1
    IF GUICtrlRead($Button1)=$XO and GUICtrlRead($Button2)=$XO and GUICtrlRead($Button3)=$XO Then
    $S1P=$S1P+1
    GUICtrlSetDAta($Label4,"Spieler 1 gewinnt!!!")
    For $i = 0 to 7 step 1
    sleep(100)
    GUICTRLSETSTATE($Button1,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button2,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button3,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button1,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button2,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button3,$GUI_DISABLE)
    NEXT
    clean()
    endif
    ;~ 2
    IF GUICtrlRead($Button4)=$XO and GUICtrlRead($Button5)=$XO and GUICtrlRead($Button6)=$XO Then
    $S1P=$S1P+1
    GUICtrlSetDAta($Label4,"Spieler 1 gewinnt!!!")
    For $i = 0 to 7 step 1
    sleep(100)
    GUICTRLSETSTATE($Button4,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button5,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button6,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button4,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button5,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button6,$GUI_DISABLE)
    NEXT
    clean()
    endif
    ;~ 3
    IF GUICtrlRead($Button7)=$XO and GUICtrlRead($Button8)=$XO and GUICtrlRead($Button9)=$XO Then
    $S1P=$S1P+1
    GUICtrlSetDAta($Label4,"Spieler 1 gewinnt!!!")
    For $i = 0 to 7 step 1
    sleep(100)
    GUICTRLSETSTATE($Button7,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button8,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button9,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button7,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button8,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button9,$GUI_DISABLE)
    NEXT
    clean()
    endif
    ;~ 4
    IF GUICtrlRead($Button1)=$XO and GUICtrlRead($Button4)=$XO and GUICtrlRead($Button7)=$XO Then
    $S1P=$S1P+1
    GUICtrlSetDAta($Label4,"Spieler 1 gewinnt!!!")
    For $i = 0 to 7 step 1
    sleep(100)
    GUICTRLSETSTATE($Button1,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button4,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button7,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button1,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button4,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button7,$GUI_DISABLE)
    NEXT
    clean()
    endif
    ;~ 5
    IF GUICtrlRead($Button2)=$XO and GUICtrlRead($Button5)=$XO and GUICtrlRead($Button8)=$XO Then
    $S1P=$S1P+1
    GUICtrlSetDAta($Label4,"Spieler 1 gewinnt!!!")
    For $i = 0 to 7 step 1
    sleep(100)
    GUICTRLSETSTATE($Button2,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button5,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button8,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button2,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button5,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button8,$GUI_DISABLE)
    NEXT
    clean()
    Endif
    ;~ 6
    IF GUICtrlRead($Button3)=$XO and GUICtrlRead($Button6)=$XO and GUICtrlRead($Button9)=$XO Then
    $S1P=$S1P+1
    GUICtrlSetDAta($Label4,"Spieler 1 gewinnt!!!")
    For $i = 0 to 7 step 1
    sleep(100)
    GUICTRLSETSTATE($Button3,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button6,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button9,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button3,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button9,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button9,$GUI_DISABLE)
    NEXT
    clean()
    Endif
    ;~ 7
    IF GUICtrlRead($Button1)=$XO and GUICtrlRead($Button5)=$XO and GUICtrlRead($Button9)=$XO Then
    $S1P=$S1P+1
    GUICtrlSetDAta($Label4,"Spieler 1 gewinnt!!!")
    For $i = 0 to 7 step 1
    sleep(100)
    GUICTRLSETSTATE($Button1,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button5,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button9,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button1,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button5,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button9,$GUI_DISABLE)
    NEXT
    clean()
    Endif
    ;~ 8
    IF GUICtrlRead($Button3)=$XO and GUICtrlRead($Button5)=$XO and GUICtrlRead($Button7)=$XO Then
    $S1P=$S1P+1
    GUICtrlSetDAta($Label4,"Spieler 1 gewinnt!!!")
    For $i = 0 to 7 step 1
    sleep(100)
    GUICTRLSETSTATE($Button3,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button5,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button7,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button3,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button5,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button7,$GUI_DISABLE)
    NEXT
    clean()
    Endif
    ;~ WIN FÜR "O"
    $XO="O"
    ;~ 1
    IF GUICtrlRead($Button1)=$XO and GUICtrlRead($Button2)=$XO and GUICtrlRead($Button3)=$XO Then
    $S2P=$S2P+1
    GUICtrlSetDAta($Label4,"Spieler 2 gewinnt!!!")
    For $i = 0 to 7 step 1
    sleep(100)
    GUICTRLSETSTATE($Button1,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button2,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button3,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button1,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button2,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button3,$GUI_DISABLE)
    NEXT
    clean()
    endif
    ;~ 2
    IF GUICtrlRead($Button4)=$XO and GUICtrlRead($Button5)=$XO and GUICtrlRead($Button6)=$XO Then
    $S2P=$S2P+1
    GUICtrlSetDAta($Label4,"Spieler 2 gewinnt!!!")
    For $i = 0 to 7 step 1
    sleep(100)
    GUICTRLSETSTATE($Button4,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button5,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button6,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button4,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button5,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button6,$GUI_DISABLE)
    NEXT
    clean()
    endif
    ;~ 3
    IF GUICtrlRead($Button7)=$XO and GUICtrlRead($Button8)=$XO and GUICtrlRead($Button9)=$XO Then
    $S2P=$S2P+1
    GUICtrlSetDAta($Label4,"Spieler 2 gewinnt!!!")
    For $i = 0 to 7 step 1
    sleep(100)
    GUICTRLSETSTATE($Button7,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button8,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button9,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button7,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button8,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button9,$GUI_DISABLE)
    NEXT
    clean()
    endif
    ;~ 4
    IF GUICtrlRead($Button1)=$XO and GUICtrlRead($Button4)=$XO and GUICtrlRead($Button7)=$XO Then
    $S2P=$S2P+1
    GUICtrlSetDAta($Label4,"Spieler 2 gewinnt!!!")
    For $i = 0 to 7 step 1
    sleep(100)
    GUICTRLSETSTATE($Button1,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button4,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button7,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button1,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button4,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button7,$GUI_DISABLE)
    NEXT
    clean()
    endif
    ;~ 5
    IF GUICtrlRead($Button2)=$XO and GUICtrlRead($Button5)=$XO and GUICtrlRead($Button8)=$XO Then
    $S2P=$S2P+1
    GUICtrlSetDAta($Label4,"Spieler 2 gewinnt!!!")
    For $i = 0 to 7 step 1
    sleep(100)
    GUICTRLSETSTATE($Button2,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button5,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button8,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button2,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button5,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button8,$GUI_DISABLE)
    NEXT
    clean()
    Endif
    ;~ 6
    IF GUICtrlRead($Button3)=$XO and GUICtrlRead($Button6)=$XO and GUICtrlRead($Button9)=$XO Then
    $S2P=$S2P+1
    GUICtrlSetDAta($Label4,"Spieler 2 gewinnt!!!")
    For $i = 0 to 7 step 1
    sleep(100)
    GUICTRLSETSTATE($Button3,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button6,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button9,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button3,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button9,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button9,$GUI_DISABLE)
    NEXT
    clean()
    Endif
    ;~ 7
    IF GUICtrlRead($Button1)=$XO and GUICtrlRead($Button5)=$XO and GUICtrlRead($Button9)=$XO Then
    $S2P=$S2P+1
    GUICtrlSetDAta($Label4,"Spieler 2 gewinnt!!!")
    For $i = 0 to 7 step 1
    sleep(100)
    GUICTRLSETSTATE($Button1,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button5,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button9,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button1,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button5,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button9,$GUI_DISABLE)
    NEXT
    clean()
    Endif
    ;~ 8
    IF GUICtrlRead($Button3)=$XO and GUICtrlRead($Button5)=$XO and GUICtrlRead($Button7)=$XO Then
    $S2P=$S2P+1
    GUICtrlSetDAta($Label4,"Spieler 2 gewinnt!!!")
    For $i = 0 to 6 step 1
    sleep(100)
    GUICTRLSETSTATE($Button3,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button5,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button7,$GUI_DISABLE)
    sleep(100)
    GUICTRLSETSTATE($Button3,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button5,$GUI_ENABLE)
    sleep(100)
    GUICTRLSETSTATE($Button7,$GUI_ENABLE)
    NEXT
    clean()
    Endif
    IF GUICtrlGetState(3)=144 and GUICtrlGetState(4)=144 and GUICtrlGetState(5)= 144 and GUICtrlGetState(6)=144 and GUICtrlGetState(7)=144 and GUICtrlGetState(8)=144 and GUICtrlGetState(9)=GUICtrlGetState(10)=144 and GUICtrlGetState(11)=144 Then
    GUICtrlSetDAta($Label4,"Spiel endet unentschieden!!!")
    For $i=0 to 10 step 1
    GUICtrlSetState($Button1,$GUI_ENABLE)
    GUICtrlSetState($Button2,$GUI_ENABLE)
    GUICtrlSetState($Button3,$GUI_ENABLE)
    GUICtrlSetState($Button4,$GUI_ENABLE)
    GUICtrlSetState($Button5,$GUI_ENABLE)
    GUICtrlSetState($Button6,$GUI_ENABLE)
    GUICtrlSetState($Button7,$GUI_ENABLE)
    GUICtrlSetState($Button8,$GUI_ENABLE)
    GUICtrlSetState($Button9,$GUI_ENABLE)
    sleep(100)
    GUICtrlSetState($Button1,$GUI_DISABLE)
    GUICtrlSetState($Button2,$GUI_DISABLE)
    GUICtrlSetState($Button3,$GUI_DISABLE)
    GUICtrlSetState($Button4,$GUI_DISABLE)
    GUICtrlSetState($Button5,$GUI_DISABLE)
    GUICtrlSetState($Button6,$GUI_DISABLE)
    GUICtrlSetState($Button7,$GUI_DISABLE)
    GUICtrlSetState($Button8,$GUI_DISABLE)
    GUICtrlSetState($Button9,$GUI_DISABLE)
    sleep(100)
    next
    clean()
    EndIf
    EndFunc

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

    Func clean()
    $SA=$SA+1
    GUICtrlSetDAta($Label4,"Spieler "&$player&" ist an der Reihe !!!")
    GUICtrlsetdata($Label1,"Spieler1 : "&$S1P&" Punkt(e)")
    GUICtrlsetdata($Label2,"Spieler2 : "&$S2P&" Punkt(e)")
    GUICtrlSetDATA($Label3,"Spiel Nummer : "&$SA&" ")
    GUICtrlSetData($Button1,"")
    GUICtrlSetData($Button2,"")
    GUICtrlSetData($Button3,"")
    GUICtrlSetData($Button4,"")
    GUICtrlSetData($Button5,"")
    GUICtrlSetData($Button6,"")
    GUICtrlSetData($Button7,"")
    GUICtrlSetData($Button8,"")
    GUICtrlSetData($Button9,"")
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    GUICtrlSetState($Button1,$GUI_ENABLE)
    GUICtrlSetState($Button2,$GUI_ENABLE)
    GUICtrlSetState($Button3,$GUI_ENABLE)
    GUICtrlSetState($Button4,$GUI_ENABLE)
    GUICtrlSetState($Button5,$GUI_ENABLE)
    GUICtrlSetState($Button6,$GUI_ENABLE)
    GUICtrlSetState($Button7,$GUI_ENABLE)
    GUICtrlSetState($Button8,$GUI_ENABLE)
    GUICtrlSetState($Button9,$GUI_ENABLE)
    EndFunc

    [/autoit]

    ich will jetzt aber das man auch die Option hat gegen den PC zu spielen .

    Also bräuchte ich einen Spielfigur die automatisch erkennt wenn sie dran ist dann ein logische Feld "angekreuzt".

    Wäre cool wenn jemand einen Anfang hat .

    Einmal editiert, zuletzt von WOnder (22. Dezember 2010 um 21:06)

  • Vlt hilfts.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    Global $board[9][2]
    ; [x][0]= CtrlId
    ; [x][1]= flag (1=X 2=O)
    Global $p1, $p2, $p3

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

    Opt("GUIOnEventMode", 1)

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

    DirCreate(@TempDir & "/Tic Tac Toe/")
    FileInstall("Base.bmp", @TempDir & "/Tic Tac Toe/Back.bmp", 1)

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

    $Form = GUICreate("Tic Tac Toe - Bot", 425, 425, -1, -1)
    $Back = GUICtrlCreatePic(@TempDir & "/Tic Tac Toe/Back.bmp", 0, 0, 425, 425)
    GUICtrlSetState($Back, $GUI_DISABLE)

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

    $board[0][0] = GUICtrlCreateButton("", 40, 40, 100, 100)
    $board[1][0] = GUICtrlCreateButton("", 162, 40, 100, 100)
    $board[2][0] = GUICtrlCreateButton("", 284, 40, 100, 100)

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

    $board[3][0] = GUICtrlCreateButton("", 40, 162, 100, 100)
    $board[4][0] = GUICtrlCreateButton("", 162, 162, 100, 100)
    $board[5][0] = GUICtrlCreateButton("", 284, 162, 100, 100)

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

    $board[6][0] = GUICtrlCreateButton("", 40, 284, 100, 100)
    $board[7][0] = GUICtrlCreateButton("", 162, 284, 100, 100)
    $board[8][0] = GUICtrlCreateButton("", 284, 284, 100, 100)

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

    For $i = 0 To 8
    GUICtrlSetOnEvent($board[$i][0], "_PlayerTurn")
    Next

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "close")
    GUISetState()

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

    Do
    Sleep(10)
    Until False

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

    Func _PlayerTurn()
    For $i = 0 To UBound($board) - 1
    If @GUI_CtrlId = $board[$i][0] And $board[$i][1] = 0 Then
    GUICtrlSetData(@GUI_CtrlId, "X")
    $board[$i][1] = 1
    $result = _CheckWin($board, 1)
    If $result Then
    _Win(1)
    Return
    EndIf
    _BotTurn()
    Return
    EndIf
    Next

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

    EndFunc ;==>_PlayerTurn

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

    Func _BotTurn()
    ;-> Check Middle
    If $board[4][1] = 0 Then
    $board[4][1] = 2
    GUICtrlSetData($board[4][0], "O")
    Return
    EndIf

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

    ;-> Check Winchance
    For $i = 0 To UBound($board) - 1
    If $board[$i][1] = 0 Then
    $board[$i][1] = 2
    If _CheckWin($board, 2) Then
    GUICtrlSetData($board[$i][0], "O")
    _Win(2)
    Return
    EndIf
    $board[$i][1] = 0
    EndIf
    Next

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

    ;-> Check Blockchance
    For $i = 0 To UBound($board) - 1
    If $board[$i][1] = 0 Then
    $board[$i][1] = 1
    If _CheckWin($board, 1) Then
    GUICtrlSetData($board[$i][0], "O")
    $board[$i][1] = 2
    Return
    EndIf
    $board[$i][1] = 0
    EndIf
    Next

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

    ;-> Check Corner
    If $board[0][1] = "0" Then
    $board[0][1] = 2
    GUICtrlSetData($board[0][0], "O")
    Return
    ElseIf $board[2][1] = "0" Then
    $board[2][1] = 2
    GUICtrlSetData($board[2][0], "O")
    Return
    ElseIf $board[6][1] = "0" Then
    $board[6][1] = 2
    GUICtrlSetData($board[6][0], "O")
    Return
    ElseIf $board[8][1] = "0" Then
    $board[8][1] = 2
    GUICtrlSetData($board[8][0], "O")
    Return
    EndIf

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

    ;-> Random Set
    $inc = 0
    Do
    $t = Random(0, 8, 1)
    $inc += 1
    If $inc > 100 Then
    _Win(0)
    Return
    EndIf

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

    Until $board[$t][1] = 0
    GUICtrlSetData($board[$t][0], "O")
    $board[$t][1] = 2
    EndFunc ;==>_BotTurn

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

    Func _CheckWin($data, $player)
    If $player = 1 Then
    $product = 1
    Else
    $product = 8
    EndIf

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

    If $data[0][1] * $data[1][1] * $data[2][1] = $product Then Return True
    If $data[3][1] * $data[4][1] * $data[5][1] = $product Then Return True
    If $data[6][1] * $data[7][1] * $data[8][1] = $product Then Return True
    If $data[0][1] * $data[3][1] * $data[6][1] = $product Then Return True
    If $data[1][1] * $data[4][1] * $data[7][1] = $product Then Return True
    If $data[2][1] * $data[5][1] * $data[8][1] = $product Then Return True
    If $data[0][1] * $data[4][1] * $data[8][1] = $product Then Return True
    If $data[2][1] * $data[4][1] * $data[6][1] = $product Then Return True
    EndFunc ;==>_CheckWin

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

    Func close()
    MsgBox(0, "Results:", "Player: " & $p1 & @CRLF & "Bot: " & $p2 & @CRLF & "Draws: " & $p3)
    Exit
    EndFunc ;==>close

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

    Func _Win($who)
    If $who = 1 Then
    MsgBox(0, "Victory", "You won!")
    $p1 = $p1 + 1
    ElseIf $who = 2 Then
    MsgBox(0, "Fail", "You lost...")
    $p2 = $p2 + 1
    Else
    MsgBox(0, "Draw", "Nobody won")
    $p3 = $p3 + 1
    EndIf
    For $i = 0 To UBound($board) - 1
    $board[$i][1] = 0
    GUICtrlSetData($board[$i][0], "")
    Next
    EndFunc ;==>_Win

    [/autoit]
  • für deine KI hilft vielleicht dieser Artikel:
    http://de.wikipedia.org/wiki/Minimax-Algorithmus

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • @WOnder: Wenn du genug Zeit in die KI steckst, wird sie bei TicTacToe unschlagbar, da man bei dem Spiel nur durch einen Fehler des anderen Gewinnen kann.

  • Kennst Du den Film "WarGames"?

    Bei TicTacToe kann keiner gewinnen.
    Das ist der Witz des Spiels. ;)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • ProblemUser: Wetten, dass nicht.
    -Du drückst G
    -Ich drücke E
    -Du drückst C
    -Ich drücke H
    -Du musst B (sonst verloren)
    -Ich drücke A (sonst verloren)
    -Du musst I (sonst verloren)
    -Ich drücke F (sonst verloren)
    -Du musst D
    -Unentschieden :D