Gui spiel

  • Hey, Ich habe an einem kleinem "spiel" gearbeitet bei dem man 2 sek zeit hat bei einer Gui das richtige Button zu klicken.
    Man muss immer auf die richtige Farbe klicken, nicht das was in der Gui steht ;)

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <Timers.au3>
    #include <Misc.au3>
    $schwierigkeit = 2000
    MsgBox (0,"Aufgabe", "Versuche so schnell wie möglich den richtigen Button zu klicken.")
    ;sleep(1000) , guiDelete()
    $richtig = 0
    $falsch = 0
    $zeit = _Timer_Init ()

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

    _naechstes_richtig()

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

    Func _naechstes_richtig()
    $zeit = _Timer_Init () ; Von dem Punkt zu Timer_diff
    While 1
    Dim $var[4]
    $var[0] = "Rot rechts richtig, links falsch"
    $var[1] = "Blau links falsch, rechts richtig"
    $var[2] = "Blau links richtig, rechts falsch"
    $var[3] = "Rot rechts falsch, links richtig"

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

    If $falsch = 10 Then
    MsgBox (0,"Verloren", "Du hast 10 Fehler, es ist vorbei")
    Exit
    EndIf
    If $richtig = 10 Then
    MsgBox (0,"Gewonnen","Du hast 10 richtig! Herzlichen Glückwunsch")
    Exit
    EndIf

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

    $rnd = Random(0, 4, 1)
    Switch $rnd

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

    Case 0

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

    $Gui = GUICreate ("Farben Spiel", 300,200, 300, 300)
    GUICtrlCreateLabel ("Blau Richtig: " & $richtig & " Falsch:" & $falsch , 50, 30, 150, 15)
    $rot_btn_links_falsch = GUICtrlCreateButton ("Blau", 30, 100, 50, 20)
    $blau_btn_rechts_richtig = GUICtrlCreateButton ("Rot", 200, 100, 50, 20)
    GUICtrlSetColor ($rot_btn_links_falsch, 0xFF0000);blau farbe
    GuiCtrlSetColor ($blau_btn_rechts_richtig, 0x0044aa);rot farbe
    GUISetState(@SW_SHOW)

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

    While 1

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

    $time = _Timer_Diff ($zeit)
    $nMsg = GUIGetMsg()
    If $time >= $schwierigkeit Then
    $falsch += 1
    GUIDelete ($Gui)

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

    _naechstes_richtig()
    EndIf
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $blau_btn_rechts_richtig
    $richtig += 1
    GUIDelete ($Gui)

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

    _naechstes_richtig()
    Case $rot_btn_links_falsch
    $falsch += 1
    GUIDelete ($Gui)
    _naechstes_richtig()

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

    EndSwitch

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

    WEnd

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

    Case 1

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

    $Gui = GUICreate ("Farben Spiel", 300,200, 300, 300)
    GUICtrlCreateLabel ("Rot Richtig: " & $richtig & " Falsch:" & $falsch , 50, 30, 150, 15)
    $blau_btn_links_falsch = GUICtrlCreateButton ("Rot", 30, 100, 50, 20)
    $rot_btn_rechts_richtig = GUICtrlCreateButton ("Blau", 200, 100, 50, 20)
    GUICtrlSetColor ($blau_btn_links_falsch, 0x0044aa);blau farbe
    GuiCtrlSetColor ($rot_btn_rechts_richtig, 0xFF0000);rot farbe
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()

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

    $time = _Timer_Diff ($zeit)
    If $time >= $schwierigkeit Then
    $falsch += 1
    GUIDelete ($Gui)

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

    _naechstes_richtig()
    EndIf
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $rot_btn_rechts_richtig
    $richtig += 1
    GUIDelete ($Gui)

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

    _naechstes_richtig()
    Case $blau_btn_links_falsch
    $falsch += 1
    GUIDelete ($Gui)

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

    _naechstes_richtig()
    EndSwitch

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

    WEnd

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

    Case 2
    $Gui =GUICreate ("Farben Spiel", 300,200, 300, 300)
    GUICtrlCreateLabel ("Blau Richtig: " & $richtig & " Falsch:" & $falsch , 50, 30, 150, 15)
    $blau_btn_links_richtig = GUICtrlCreateButton ("Rot", 30, 100, 50, 20)
    $rot_btn_rechts_falsch = GUICtrlCreateButton ("Blau", 200, 100, 50, 20)
    GUICtrlSetColor ($rot_btn_rechts_falsch, 0xFF0000)
    GuiCtrlSetColor ($blau_btn_links_richtig, 0x0044aa)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()

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

    $time = _Timer_Diff ($zeit)
    If $time >= $schwierigkeit Then
    $falsch += 1
    GUIDelete ($Gui)

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

    _naechstes_richtig()
    EndIf
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $blau_btn_links_richtig
    $richtig += 1
    GUIDelete ($Gui)

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

    _naechstes_richtig()
    Case $rot_btn_rechts_falsch
    $falsch += 1
    GUIDelete ($Gui)
    $time = 0
    _naechstes_richtig ()
    EndSwitch

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

    WEnd

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

    Case 3

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

    $Gui = GUICreate ("Farben Spiel", 300,200, 300, 300)
    GUICtrlCreateLabel ("Rot Richtig: " & $richtig & " Falsch:" & $falsch , 50, 30, 150, 15)
    $rot_btn_links_richtig = GUICtrlCreateButton ("Blau", 30, 100, 50, 20)
    $blau_btn_rechts_falsch = GUICtrlCreateButton ("Rot", 200, 100, 50, 20)
    GUICtrlSetColor ($blau_btn_rechts_falsch, 0x0044aa)
    GuiCtrlSetColor ($rot_btn_links_richtig, 0xFF0000)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()

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

    $time = _Timer_Diff ($zeit)
    If $time >= $schwierigkeit Then
    $falsch += 1
    GUIDelete ($Gui)

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

    _naechstes_richtig()
    EndIf
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $rot_btn_links_richtig
    $richtig += 1
    GUIDelete ($Gui)

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

    _naechstes_richtig()
    Case $blau_btn_rechts_falsch
    $falsch += 1
    GUIDelete ($Gui)

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

    _naechstes_richtig ()
    EndSwitch

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

    WEnd

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

    EndSwitch

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

    WEnd
    EndFunc

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


    ich denke man kann das viel kürzer schreiben mit arrays aber es war mein erster Versuche für das Spiel.Ich werde auch demnächst noch lvl hinzufügen , das die zeit die man hat um den button zu klicken kürzer wird.
    Bitte ein kurzes Feedback geben oder verbesserungen und bugs.

  • Guten Abend,

    Ich würde das ganze auf die kürze so Lösen

    Spoiler anzeigen
    [autoit]

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

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

    Global $iSchwierigkeit = 2000
    Global $iRichtig = 0
    Global $iFalsch = 0
    Global $iSpieldauer = 10

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

    Global $aButton[2]
    Global $aColor[2][2]
    $aColor[0][0] = 0xFF0000
    $aColor[0][1] = "Blau"
    $aColor[1][0] = 0x0044aa
    $aColor[1][1] = "Rot"

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

    $hWindow = GUICreate ("Farben Spiel", 300,100)
    $hLabel_Spielstand = GUICtrlCreateLabel ("Richtig: 0 Falsch: 0" , 100, 20, 150, 15)
    $hLabel_Color = GUICtrlCreateLabel("Blau",40,20)
    $aButton[0] = GUICtrlCreateButton ("Blau", 30, 50, 50, 30)
    $aButton[1] = GUICtrlCreateButton ("Rot", 200, 50, 50, 30)
    GUISetState(@SW_SHOW)

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

    $hTimer = TimerInit()
    $aColorButton = _NewColor()

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

    While 1
    Local $aColorButton
    Sleep(50)
    $smsg = GUIGetMsg()
    Switch $smsg
    Case -3
    Exit
    Case $aColorButton[0]
    $iRichtig +=1
    _Spielstand($iRichtig,$iFalsch)
    $aColorButton = _NewColor()
    $hTimer = TimerInit()
    Case $aColorButton[1]
    $iFalsch +=1
    _Spielstand($iRichtig,$iFalsch)
    $aColorButton = _NewColor()
    $hTimer = TimerInit()
    EndSwitch

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

    If TimerDiff($hTimer) > $iSchwierigkeit Then
    $iFalsch +=1
    _Spielstand($iRichtig,$iFalsch)
    $aColorButton = _NewColor()
    $hTimer = TimerInit()
    EndIf
    WEnd

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

    Func _Spielstand($iRight,$iFalse)
    GUICtrlSetData($hLabel_Spielstand ,"Richtig: " & $iRight & " Falsch:" & $iFalse)
    If $iRight = $iSpieldauer Then
    MsgBox(0,"","Gewonnen")
    Exit
    EndIf
    If $iFalse = $iSpieldauer Then
    MsgBox(0,"","Verloren")
    Exit
    EndIf
    EndFunc

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

    Func _NewColor()
    Local $iRandom_Color = Random(0,1,1)
    Local $iRandom_Button = Random(0,1,1)
    Local $aNewButton[2]
    $aNewButton[0] = $aButton[$iRandom_Button]
    $aNewButton[1] = $aButton[_Flop($iRandom_Button)]

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

    GUICtrlSetData($hLabel_Color,$aColor[$iRandom_Color][1])
    GUICtrlSetColor($aNewButton[1],$aColor[$iRandom_Color][0])
    GUICtrlSetColor($aNewButton[0],$aColor[_Flop($iRandom_Color)][0])

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

    Return $aNewButton
    EndFunc

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

    Func _Flop($iNumber)
    If $iNumber = 0 Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc

    [/autoit]

    Lg, Fabian