Hangman Hilfe

  • Hallo
    ich habe momentan kein Internet und habe voll lw und deswegen wollte ich mir hangman machen
    da habe ich nur ein problem mit den zeichen
    wen ich die hinschreibe dann kommt ein unterstrih und lertaste zuviel

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    Global $r, $string, $var = 1, $point, $stelle[9999], $test2 = 1, $ghi = 1, $def, $abc
    Global $zeichen = "abcdefghijklmnopqrstuvwxyz1234567890"

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

    #Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\Paul\Desktop\ \hangman\hangman.kxf
    $Form1 = GUICreate("Hangman", 423, 415, 192, 124)
    GUISetBkColor(0xFFFFFF)
    $Label1 = GUICtrlCreateLabel("_ _ _ _", 8, 32, 399, 17)
    $Label2 = GUICtrlCreateLabel("Keine falschen Zeichen", 8, 160, 404, 17)
    $Label3 = GUICtrlCreateLabel("Hangman", 168, 8, 50, 17)
    $Label4 = GUICtrlCreateLabel("Ihre Falschen Buchstaben und Zahlen", 104, 136, 185, 17)
    $Input1 = GUICtrlCreateInput("", 40, 96, 121, 21)
    $Label5 = GUICtrlCreateLabel("Bitte geben sie hier ihr Zeichen ein.", 8, 72, 170, 17)
    Dim $Pic[13]
    $Pic[2] = GUICtrlCreatePic("", 112, 352, 153, 57, BitOR($SS_NOTIFY,$WS_CLIPSIBLINGS)) ; Bogen
    $Pic[3] = GUICtrlCreatePic("", 145, 203, 49, 153, BitOR($SS_NOTIFY,$WS_CLIPSIBLINGS)) ; Stange 1
    $Pic[4] = GUICtrlCreatePic("", 193, 209, 49, 41, BitOR($SS_NOTIFY,$WS_CLIPSIBLINGS)) ; stange schreg
    $Pic[5] = GUICtrlCreatePic("", 192, 202, 129, 9, BitOR($SS_NOTIFY,$WS_CLIPSIBLINGS)) ; Stange oben
    $Pic[6] = GUICtrlCreatePic("", 288, 209, 9, 41, BitOR($SS_NOTIFY,$WS_CLIPSIBLINGS)) ;stange über kopf
    $Pic[7] = GUICtrlCreatePic("", 272, 247, 40, 41, BitOR($SS_NOTIFY,$WS_CLIPSIBLINGS)) ; kopf
    $Pic[9] = GUICtrlCreatePic("", 294, 288, 25, 33, BitOR($SS_NOTIFY,$WS_CLIPSIBLINGS)) ; rechter arm
    $Pic[10] = GUICtrlCreatePic("", 264, 288, 25, 33, BitOR($SS_NOTIFY,$WS_CLIPSIBLINGS)) ; linker arm
    $Pic[11] = GUICtrlCreatePic("", 294, 328, 33, 33, BitOR($SS_NOTIFY,$WS_CLIPSIBLINGS)) ;rechetr fuß
    $Pic[12] = GUICtrlCreatePic("", 265, 328, 25, 33, BitOR($SS_NOTIFY,$WS_CLIPSIBLINGS)) ;linker fuß
    $Pic[8] = GUICtrlCreatePic("", 288, 287, 9, 73, BitOR($SS_NOTIFY,$WS_CLIPSIBLINGS)) ; körper
    For $9999999 = 1 To 12
    GUICtrlSetState ($Pic[$9999999],$GUI_Hide)
    Next
    $Pic1 = GUICtrlCreatePic("C:\Dokumente und Einstellungen\Paul\Desktop\ \hangman\hangman.JPG", 112, 200, 204, 204, BitOR($SS_NOTIFY,$WS_CLIPSIBLINGS))
    $Button0 = GUICtrlCreateButton("OK", 16, 192, 75, 25)
    GUICtrlSetState ($Button0,$GUI_DISABLE)
    $Button1 = GUICtrlCreateButton("Start", 16, 232, 75, 25)
    $Button2 = GUICtrlCreateButton("Reset", 16, 272, 75, 25)
    GUICtrlSetState (-1,$GUI_DISABLE)
    $Button3 = GUICtrlCreateButton("Ende", 16, 312, 75, 25)
    $Button4 = GUICtrlCreateButton("Neuen Name", 16, 352, 75, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button4
    $inputbox = InputBox ("Neuer Begriff","Bitte geben sie ein neuen Begriff ein")
    For $a = 1 To 99999999999999999999999999999999
    $read = IniRead ("Hangman.ini","Hangman","Name" & $a,"__")
    If $read = $inputbox Then
    MsgBox (0,"ERROR","Dieser Begriff wird schon benutzt")
    ExitLoop
    ElseIf $read = "__" Then
    IniWrite ("Hangman.ini","Hangman","Name" & $a,$inputbox)
    ExitLoop
    EndIf
    Next
    Case $Button3
    Exit
    Case $Button2
    GUICtrlSetState ($Button2,$GUI_DISABLE)
    GUICtrlSetState ($Button1,$GUI_ENABLE)
    GUICtrlSetState ($Button0,$GUI_DISABLE)
    _reset ()
    Case $Button1
    For $9999999 = 1 To 12
    GUICtrlSetState ($Pic[$9999999],$GUI_Show)
    Next

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

    GUICtrlSetState ($Button0,$GUI_ENABLE)
    GUICtrlSetState ($Button1,$GUI_DISABLE)
    GUICtrlSetState ($Button2,$GUI_ENABLE)
    _start ()
    Case $Button0
    _ok ()
    EndSwitch
    WEnd

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

    Func _reset ()

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

    EndFunc

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

    Func _start ()
    For $a = 1 To 9999999999999999999999999999999999999999
    $read = IniRead ("Hangman.ini","Hangman","Name" & $a,"")
    If $read = "" Then
    MsgBox (0,"ERROR","Es exestieren keine Begriffe")
    Return
    ElseIf $read = @error Then
    ExitLoop
    EndIf
    Next
    Global $r = Random (1,$a+1,1)
    $read2 = IniRead ("Hangman.ini","Hangman","Name" & $r,"")
    ;$read2 = IniRead ("Hangman.ini","Hangman","Name1","")
    $string = StringSplit ($read2,"")
    GUICtrlSetData ($Label1,"")
    For $b = 1 To $string[0]
    GUICtrlSetData ($Label1,GUICtrlRead ($Label1) & "_ ") ; zeichen > <
    Next
    EndFunc

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

    Func _ok ()
    $string2 = StringSplit ($zeichen,"")
    $string3 = StringSplit (GUICtrlRead ($Label1),"")
    GUICtrlSetData ($Label1,"")
    For $c = 1 To $string3[0]
    For $d = 1 To $string2[0]
    If $string3[$c] <> "_ " Then
    If ($string3[$c] = $string2[$d]) And ($string3[$c] <> GUICtrlRead ($Input1)) Then
    GUICtrlSetData ($Label1,GUICtrlRead ($Label1) & $string2[$d] & " ")
    $stelle[$c] = $string3[$c]
    EndIf
    EndIf
    Next
    Next

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

    For $b = 1 To $string[0]
    If $string[$b] = GUICtrlRead ($Input1) Then
    GUICtrlSetData ($Label1,GUICtrlRead ($Label1) & GUICtrlRead ($Input1) & " ")

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

    Else
    GUICtrlSetData ($Label1,GUICtrlRead ($Label1) & "_ ")
    EndIf
    Next

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

    If $point = $string[0] Then
    $point = 0
    $var += 1
    If $var > 12 Then
    MsgBox (0,"ERROR","Sie haben verloren")
    $point = 0
    $var = 1
    Return
    Else
    GUICtrlSetState ($Pic[$var],$GUI_Hide)
    EndIf
    EndIf
    #cs
    $def = StringSplit (GUICtrlRead ($Label1),"")
    _ArrayDisplay ($def)
    $lol = 0
    For $abc = 0 To $string[0]
    MsgBox (0,"",$lol & @CRLF & $abc & @CRLF & $string[0])
    $lol += 1
    If $def[$abc] = $string[$abc] Then
    $ghi += 1
    EndIf
    Next
    If $ghi = $string[0] Then
    MsgBox (0,"","Erfolgreich")
    EndIf
    #ce
    EndFunc

    [/autoit]

    bild gibs im anhang

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

    $read2 = IniRead ("Hangman.ini","Hangman","Name" & $r,"")
    ;$read2 = IniRead ("Hangman.ini","Hangman","Name1","")
    $string = StringSplit ($read2,"")
    GUICtrlSetData ($Label1,"")
    For $b = 1 To $string[0]
    GUICtrlSetData ($Label1,GUICtrlRead ($Label1) & "_ ") ; zeichen > <
    Next

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


    warum machst du das mit StringSplit ?
    StringLen und StringMid würde ich da verwenden

  • Ich hab den script nur grob überflogen,
    und das ist mir aufgefallen da du ja die länge brauchst und dann immer den einzenlnen buchstaben ..
    wenn du scite offen hast drücke mal f1 *sFG*
    Das hilft ungemein