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

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...

  • @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

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...

  • 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