Probleme mit nem kleinem Spiel [Wieder so ein "Ich steh voll auf der Leitung Prob" xD]

  • Wie die Überschrift schon sagt steht ich im Moment ziemlich auf der Leitung xD
    Also ich hatte die Idee mal nen kleines Spiel in AutoIt zu machen.
    Bei dem Spiel geht es darum den Timer nach 5 Sekunden anzuhalten.
    Ich bekomm das iwi voll net mit den Buttons auf die Reihe bzw. das der Timer stopt, wenn man auf den Button drückt oder wenn die Zeit über 10sekunden ist!

    Hier is der Code:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    Opt("GUIOnEventMode", 1)
    $gesamt = 0
    $1 = 0

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("5 Seconds", 223, 202, 192, 124)
    GUISetBkColor(0x000000)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")
    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1Maximize")
    GUISetOnEvent($GUI_EVENT_RESTORE, "Form1Restore")

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

    $sekunden = GUICtrlCreateLabel("0", 100, 48, 100, 36)
    GUICtrlSetFont($sekunden, 32, 800, 0, "Terminal")
    GUICtrlSetColor($sekunden, 0x00FF00)

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

    $anleitung = GUICtrlCreateLabel("Stoppe den Timer nach genau 5 Sekunden!", 16, 160, 199, 50)
    GUICtrlSetFont($anleitung, 9, 400, 0, "Terminal")
    GUICtrlSetColor($anleitung, 0x00FF00)

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

    $gobutt = GUICtrlCreateButton("Go!", 40, 112, 121, 33, $WS_GROUP)
    GUICtrlSetFont($gobutt, 12, 400, 0, "Terminal")
    GUICtrlSetBkColor($gobutt, 0x00FF00)
    GUICtrlSetOnEvent($gobutt, "StopgobuttClick")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    Sleep(100)

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

    WEnd

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

    Func Form1Close()
    Exit
    EndFunc
    Func Form1Maximize()

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

    EndFunc
    Func Form1Minimize()

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

    EndFunc
    Func Form1Restore()

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

    EndFunc

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

    Func StopgobuttClick()
    If $1 = 0 Then
    $stop = 0
    $1 = 1
    GUICtrlDelete($gobutt)
    $stopbutt = GUICtrlCreateButton("Stop!", 40, 112, 121, 33, $WS_GROUP)
    GUICtrlSetFont($stopbutt, 12, 400, 0, "Terminal")
    GUICtrlSetBkColor($stopbutt, 0x00FF00)
    GUICtrlSetOnEvent($stopbutt, "StopbuttClick")
    $start = TimerInit()
    While 1
    $bisher = TimerDiff($start)
    $bisher = $bisher / 1000
    $gesamt = Round($bisher, 2)
    GUICtrlSetData($sekunden,$gesamt)
    Sleep(100)
    If $stop = 1 Then
    ExitLoop
    EndIf

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

    WEnd
    EndIf

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

    EndFunc
    Func StopbuttClick()
    If $1 = 1 Then
    $stop = 1
    $1 = 0
    GUICtrlDelete($stopbutt)
    $gobutt = GUICtrlCreateButton("Go!", 40, 112, 121, 33, $WS_GROUP)
    GUICtrlSetFont($gobutt, 12, 400, 0, "Terminal")
    GUICtrlSetBkColor($gobutt, 0x00FF00)
    GUICtrlSetOnEvent($gobutt, "StopgobuttClick")
    EndIf
    EndFunc

    [/autoit]

    Nicht sehr dringendes Problem. ^^


    Mfg. Tro

    • Offizieller Beitrag

    Hi,
    ich hatte mal eine Stoppuhr gebastelt, da kannst du dir anschauen, wie es geht.
    Der Code ist noch etwas verbugt (hatte nicht weitergemacht), aber das Prinzip wird deutlich.

    Spoiler anzeigen
    [autoit]

    #include<EditConstants.au3>
    #include<GUIConstantsEx.au3>
    Global $start, $UsedTime, $diff_Alt = 0
    Global $SetTime = False, $Break = False, $Pause = False, $Run = True
    Global $colBG = 0x0000FF, $colFont = 0xFFEA00

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

    $GUI = GUICreate('Stoppuhr', 400, 100, -1, -1)
    $Time = GUICtrlCreateInput('00:00:00,000', 100, 20, 200, 20, BitOR($ES_CENTER,$ES_READONLY))
    GUICtrlSetBkColor(-1, $colBG)
    GUICtrlSetColor(-1, $colFont)
    $bStart = GUICtrlCreateButton('Start', 40, 60, 80, 20)
    $bBreak = GUICtrlCreateButton('Unterbrechen', 160, 60, 80, 20)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $bPause = GUICtrlCreateButton('Pause', 280, 60, 80, 20)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState()

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

    While True
    $msg = GUIGetMsg()
    If $SetTime Then $UsedTime = SetTime()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $bStart ; Start/Stop Messung absolut
    $Run = Not $Run
    If $Run Then
    $SetTime = False
    SetTime()
    GUICtrlSetData($bStart, 'Start')
    GUICtrlSetState($bBreak, $GUI_DISABLE)
    GUICtrlSetState($bPause, $GUI_DISABLE)
    Else
    GUICtrlSetData($Time, '00:00:00,000')
    $SetTime = True
    $start = TimerInit()
    GUICtrlSetData($bStart, 'Stop')
    GUICtrlSetState($bBreak, $GUI_ENABLE)
    GUICtrlSetState($bPause, $GUI_ENABLE)
    EndIf
    Case $bBreak ; nur Anzeige wird angehalten (z.B. Rundenmessung)
    $Break = Not $Break
    If $Break Then
    $SetTime = False
    GUICtrlSetData($bBreak, 'Fortsetzen')
    GUICtrlSetState($bPause, $GUI_DISABLE)
    Else
    $SetTime = True
    GUICtrlSetData($bBreak, 'Unterbrechen')
    GUICtrlSetState($bPause, $GUI_ENABLE)
    EndIf
    Case $bPause ; Messung wird angehalten (Additionsmessung)
    $Pause = Not $Pause
    If $Pause Then
    $diff_Alt = $UsedTime ; abgelaufene Zeit aufaddieren
    $SetTime = False
    GUICtrlSetData($bPause, 'Weiter')
    GUICtrlSetState($bBreak, $GUI_DISABLE)
    Else
    $SetTime = True
    $start = TimerInit() ; Zeitmessung neu initialisieren
    GUICtrlSetData($bPause, 'Pause')
    GUICtrlSetState($bBreak, $GUI_ENABLE)
    EndIf
    EndSwitch
    WEnd

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

    Func SetTime()
    Local $diff = TimerDiff($start)/1000 + $diff_Alt
    Local $hour = 0
    Local $min = 0
    Local $sec = Floor($diff)
    Local $rest = ($diff-$sec)*1000
    Local $secShow, $minShow, $hourShow
    If $sec > 59 Then
    $min = Floor($sec/60)
    $secShow = Mod($sec, 60)
    ElseIf $sec > 3599 Then ; ???? testen
    $hourShow = Mod(Mod($sec,3600),60)
    $minShow = Floor(Mod($sec,3600)/60)
    $secShow = Floor($sec/3600)
    Else
    $secShow = $sec
    $minShow = $min
    $hourShow = $hour
    EndIf
    GUICtrlSetData($Time, StringFormat('%02u', $hourShow) & ':' & StringFormat('%02u', $minShow) & ':' & StringFormat('%02u', $secShow) & ',' & StringFormat('%03u', $rest))
    Return $diff ; gibt abgelaufene Zeit als absolute Differenz zurück
    EndFunc

    [/autoit]
  • [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    Opt("GUIOnEventMode", 1)
    $gesamt = 0
    $1 = 0
    Global $start, $UsedTime, $diff_Alt = 0,$blende = 0
    Global $SetTime = False, $Break = False, $Pause = False, $Run = True
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("5 Seconds", 223, 202, 192, 124)
    GUISetBkColor(0x000000)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")
    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1Maximize")
    GUISetOnEvent($GUI_EVENT_RESTORE, "Form1Restore")

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

    $sekunden = GUICtrlCreateLabel("", 85, 48, 100, 36)
    GUICtrlSetFont($sekunden, 32, 800, 0, "Terminal")
    GUICtrlSetColor($sekunden, 0x00FF00)

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

    $blende = GUICtrlCreateLabel("Blende", 32, 40, 138, 41)
    GUICtrlSetState ( $blende, $GUI_HIDE )

    $anleitung = GUICtrlCreateLabel("Stoppe den Timer nach genau 5 Sekunden!", 16, 160, 199, 50)
    GUICtrlSetFont($anleitung, 9, 400, 0, "Terminal")
    GUICtrlSetColor($anleitung, 0x00FF00)

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

    $gobutt = GUICtrlCreateButton("Go!", 40, 112, 121, 33, $WS_GROUP)
    GUICtrlSetFont($gobutt, 12, 400, 0, "Terminal")
    GUICtrlSetBkColor($gobutt, 0x00FF00)
    GUICtrlSetOnEvent($gobutt, "StopgobuttClick")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1

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

    If $SetTime Then
    Time()

    EndIf
    WEnd

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

    Func Form1Close()
    Exit
    EndFunc
    Func Form1Maximize()

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

    EndFunc
    Func Form1Minimize()

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

    EndFunc
    Func Form1Restore()

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

    EndFunc

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

    Func StopgobuttClick()

    $Run = Not $Run
    If $Run Then
    $SetTime = False

    GUICtrlSetData($gobutt,"Go!")

    Time()
    GUICtrlSetData($sekunden,$gesamt)

    GUICtrlSetState ( $blende, $GUI_HIDE )
    GUICtrlSetColor($sekunden, 0x00FF00)
    Else


    GUICtrlSetData($gobutt,"Stop!")
    GUICtrlSetData($sekunden,"")
    $SetTime = True
    $start = TimerInit()
    EndIf

    EndFunc

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

    Func Time()
    GUICtrlSetState ( $blende, $GUI_HIDE )
    If $gesamt > 2 Then

    GUICtrlSetState ( $blende, $GUI_SHOW )
    EndIf
    $bisher = TimerDiff($start)
    $bisher = $bisher / 1000
    $gesamt = Round($bisher, 2)
    GUICtrlSetData($sekunden,$gesamt)
    Sleep(100)

    EndFunc

    [/autoit]


    So Fertig!

    Es is nen kleines Spiel mit Suchtgefahr.
    Nur die Umsetzung is mir nich so gut gelungen.... :D