[Mini Release] Reaktionsmesser :D

  • Hallo Leute,
    mir war langweilig und ich wollte 2 Funktionen ausprobieren:

    [autoit]

    Random()
    ;und
    TimerInit()
    TimerDiff()

    [/autoit]

    Deshalb habe ich einen kleinen Reaktionstester geschrieben.
    Er ist wirklich einfach programmiert.
    Verbesserungsvorschläge & Kritik sind erwünscht!!! :thumbup:

    Screen:
    http://www.bilder-upload.eu/show.php?file=…-1331229822.png
    http://www.bilder-upload.eu/show.php?file=…-1331229853.png

    ~~~~~#Update!!#~~~~
    Enthält sicherlich noch einige Fehler!
    {Zeile 67 bitte entfernen!!! (im download)}

    Code:

    Spoiler anzeigen
    [autoit]

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

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

    GUICreate("Reaction", 625, 380, 190, 120)
    GUISetFont(10, 400, 0, "GoodTimes")
    GUISetBkColor(0xFFFFFF)
    $mode1 = GUICtrlCreateButton("", 168, 132, 270, 25, BitOR($BS_BITMAP, $BS_FLAT))
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetImage(-1, "Button1.bmp")
    $mode2 = GUICtrlCreateButton("", 168, 212, 270, 25, BitOR($BS_BITMAP, $BS_FLAT))
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetImage(-1, "Button2.bmp")
    $Pic = GUICtrlCreatePic("bg.bmp", 70, 50, 485, 280, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)

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

    Dim $time[10]
    $a = 0
    $b = 0
    $plus = 0
    $mode = 0
    $running = False
    $created = False

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

    While 1

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

    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $mode1
    $mode = 1

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

    Case $mode2
    $mode = 2

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

    EndSwitch

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

    ;_______________________________________________________________MODE1_______________________________________________________________________________________________________________________________
    If $mode = 1 Then
    If $running = False Then
    $running = True
    GUICtrlDelete($mode1)
    GUICtrlDelete($mode2)
    $label1 = GUICtrlCreateLabel("Time:", 8, 352, 38, 20)
    $label2 = GUICtrlCreateLabel("0000", 68, 352, 32, 20)

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

    GUICtrlSetImage($Pic, "3.bmp")
    Sleep(1000)
    GUICtrlSetImage($Pic, "2.bmp")
    Sleep(1000)
    GUICtrlSetImage($Pic, "1.bmp")
    Sleep(1000)
    GUICtrlDelete($Pic)
    Sleep(Random(600, 3000, 1))
    $button = GUICtrlCreateButton("", 262.5, 172.5, 100, 35, BitOR($WS_GROUP, $BS_BITMAP, $BS_FLAT))
    GUICtrlSetImage(-1, "Button.bmp")

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

    $timer = TimerInit()

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

    EndIf

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

    Switch $nMsg
    Case $button
    $diff = Round(TimerDiff($timer), 0)

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

    If $a > 0 Or $a = 0 Then
    If $a < 9 Then
    $time[$a] = $diff
    GUICtrlSetData($label2, $diff)
    $a += 1
    GUICtrlDelete($button)
    Sleep(Random(600, 3000, 1))
    $button = GUICtrlCreateButton("", 262.5, 172.5, 100, 35, BitOR($WS_GROUP, $BS_BITMAP, $BS_FLAT))
    GUICtrlSetImage(-1, "Button.bmp")
    $timer = TimerInit()
    Else
    GUICtrlDelete($button)
    GUICtrlDelete($label1)
    GUICtrlDelete($label2)
    $a = -1
    EndIf
    EndIf
    EndSwitch

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

    If $a < 0 Then _calculate()
    EndIf
    ;_______________________________________________________________END_________________________________________________________________________________________________________________________________

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

    ;_______________________________________________________________MODE2_______________________________________________________________________________________________________________________________
    If $mode = 2 Then

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

    If $running = False Then
    $running = True
    GUICtrlDelete($mode1)
    GUICtrlDelete($mode2)

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

    $label1 = GUICtrlCreateLabel("Time:", 8, 352, 38, 20)
    $label2 = GUICtrlCreateLabel("0000", 68, 352, 32, 20)

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

    GUICtrlSetImage($Pic, "3.bmp")
    Sleep(1000)
    GUICtrlSetImage($Pic, "2.bmp")
    Sleep(1000)
    GUICtrlSetImage($Pic, "1.bmp")
    Sleep(1000)
    GUICtrlDelete($Pic)

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

    $button = GUICtrlCreateButton("", Random(4, 520, 1), Random(4, 315, 1), 100, 35, BitOR($WS_GROUP, $BS_BITMAP, $BS_FLAT))
    GUICtrlSetImage(-1, "Button.bmp")
    $timer = TimerInit()
    EndIf

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

    Switch $nMsg
    Case $button
    $diff = Round(TimerDiff($timer), 0)

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

    If $a > 0 Or $a = 0 Then

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

    If $a < 9 Then

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

    $time[$a] = $diff
    $a += 1

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

    GUICtrlDelete($button)
    GUICtrlSetData($label2, $diff)

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

    $button = GUICtrlCreateButton("", Random(4, 520, 1), Random(4, 315, 1), 100, 35, BitOR($WS_GROUP, $BS_BITMAP, $BS_FLAT))
    GUICtrlSetImage(-1, "Button.bmp")

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

    $timer = TimerInit()

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

    Else
    GUICtrlDelete($button)
    GUICtrlDelete($label1)
    GUICtrlDelete($label2)
    $a = -1
    _calculate()
    EndIf

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

    EndIf
    EndSwitch

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

    EndIf
    ;_______________________________________________________________END_________________________________________________________________________________________________________________________________

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

    WEnd

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

    Func _calculate()
    For $b = 0 To 9
    $plus += $time[$b]
    Next

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

    $b = 0
    $a = 0

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

    $plus /= 10
    MsgBox(0, "Reaction", "Your reaction average was " & Round($plus, 0) & " milliseconds!!")
    $running = False
    $mode = 0
    $plus = 0

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

    $mode1 = GUICtrlCreateButton("", 168, 132, 270, 25, BitOR($BS_BITMAP, $BS_FLAT))
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetImage(-1, "Button1.bmp")
    $mode2 = GUICtrlCreateButton("", 168, 212, 270, 25, BitOR($BS_BITMAP, $BS_FLAT))
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetImage(-1, "Button2.bmp")
    $Pic = GUICtrlCreatePic("bg.bmp", 70, 50, 485, 280, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    EndFunc ;==>_calculate

    [/autoit]

    mfg Yellow

  • Gute Idee, aber für einen "reinen" Reaktionstest musst du das Label nicht bewegen lassen. Man muss z.B. warten bis es sich rot färbt und dann drücken.
    Ein Bug tritt auf, wenn man am Anfang ganz schnell und oft Links-Klick macht. Ich habe so eine Reaktionszeit von 38ms bekommen.

    [autoit]


    Func Ulam($n)
    Return 1
    EndFunc

    [/autoit]


    Rekursion FTW :D

  • @retrokid
    Ich weiß das es nicht ein reiner Reaktionsmesser ist, aber das wollte ich garnicht, denn ich berechne ja den Durchschnitt aus mehreren Positionen.
    Klar mit bisschen Glück kann man da schon gute Zeiten bekommen.
    Evtl. bau ich noch einen "reinen" ein :D

    Zu deinem Bug, tritt er auf wenn der Button schon da ist oder wenn noch der "Countdown' läuft?

    Mfg Yellow

    §1 Ich kann nicht für meine scripts inhaftiert werden, auch wenn bereits 3 Menschen erblindeten an den Folgen der Korrekturlesung.  8o

  • ok, ich werd mich nächste Woche drum kümmern (diese Woche hab ich eider keine Zeit)

    §1 Ich kann nicht für meine scripts inhaftiert werden, auch wenn bereits 3 Menschen erblindeten an den Folgen der Korrekturlesung.  8o

  • Auf jeden Fall gefällt mir das Design!


    echt?
    Wobei ich ne absolute 0 im Designen bin ^^
    Aber trotzdem danke :thumbup:

    €1: @retrokid:
    Ich hab deinen Bug nicht. Oder ich finde ihn nicht. Kannst du evtl. nochmal genau beschreiben wann er auftritt?

    mfg Yellow

    §1 Ich kann nicht für meine scripts inhaftiert werden, auch wenn bereits 3 Menschen erblindeten an den Folgen der Korrekturlesung.  8o

    2 Mal editiert, zuletzt von YellowWeedSeed (8. März 2012 um 22:42)

  • Man fängt sobald der Countdown bei 1 ist ganz schnell an hintereinander Links-Klick zu machen. Manchmal ist der Test dann sofort vorbei und man hat 30ms Reaktionszeit.

    [autoit]


    Func Ulam($n)
    Return 1
    EndFunc

    [/autoit]


    Rekursion FTW :D

  • Update!!
    jetzt hab ich auch den reinen reaktionsmesser eingebaut :D

    §1 Ich kann nicht für meine scripts inhaftiert werden, auch wenn bereits 3 Menschen erblindeten an den Folgen der Korrekturlesung.  8o

  • Da stimmt was noch nicht ganz...

    Gruß stay

  • Da stimmt was noch nicht ganz...


    Gruß stay

    sorry, hab ich wohl vergessen wieder weg zu machen^^
    Im Code oben steht's jetzt richtig, beim download im script einfach die Zeile 67 entfernen

    §1 Ich kann nicht für meine scripts inhaftiert werden, auch wenn bereits 3 Menschen erblindeten an den Folgen der Korrekturlesung.  8o