Teste deinen Schreib Speed

  • Hi

    ich habe hier mal wieder ein Lange-Weile Script.Mit ihm kann mann seine Schreibsicherheit und Geschwindigkeit ermitteln.

    Vlt gefälts euch. Viel Spaß damit.

    Ich benuzte das Smooth _WinSetSize UDF von GtaSpider

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>#include <EditConstants.au3>#include <GUIConstantsEx.au3>#include <WindowsConstants.au3>#include <WinAPI.au3>Global $Edit, $ExitTest = -1, $Timer, $Lab, $Fehler = 0, $DelCount = 0$gui = GUICreate("WriteTest by Sprenger120", 170, 60, -1, -1)$StartTest = GUICtrlCreateButton("Start Test", 16, 16, 145, 33, 0)GUISetState(@SW_SHOW)While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $StartTest _WinSetSize($gui, 523, 300, 1) GUICtrlSetPos($StartTest, 11, 11, 145, 33) GUICtrlSetState($StartTest, $GUI_DISABLE) $Edit = GUICtrlCreateEdit("", 8, 160, 505, 105, 0, -1) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlCreateLabel("Diesen Test bitte unten reinschreiben.", 8, 56, 183, 17) $Lab = GUICtrlCreateLabel("Es ist mir ein Vergnügen, Sie in unserem bescheidenen Haus zu begrüßen. Wenn Sie mir bitte folgen würden, der Lord erwartet Sie bereits.", 8, 80, 509, 64) GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif") MsgBox(64, "Info", "Bitte den Text ein mal komplett durchlesen. Der Test startet wenn das Schreibfeld freigegeben wird.") Sleep(10000) _WinAPI_MessageBeep() GUICtrlSetState($Edit, $GUI_ENABLE) GUICtrlSetState($Edit, $GUI_FOCUS) $Timer = TimerInit() HotKeySet("{BACKSPACE} ", "DelCount") HotKeySet("{DELete}", "DelCount") AdlibRegister("Update", 50) EndSwitchWEndFunc Update() If StringLen(GUICtrlRead($Edit)) = StringLen(GUICtrlRead($Lab)) Then AdlibUnRegister() HotKeySet("{Delete}") HotKeySet("{BACKSPACE}") GUISetState(@SW_LOCK, $gui) Do If StringLen(GUICtrlRead($Edit)) > StringLen(GUICtrlRead($Lab)) Then GUICtrlSetData($Edit, StringTrimRight(GUICtrlRead($Edit), 1)) Until StringLen(GUICtrlRead($Edit)) = StringLen(GUICtrlRead($Lab)) $Timer = TimerDiff($Timer) $Timer = $Timer / 1000 $len = StringLen(GUICtrlRead($Edit)) $Lab = StringSplit(GUICtrlRead($Lab), "") $UserEing = StringSplit(GUICtrlRead($Edit), "") For $x = 1 To $Lab[0] If $Lab[$x] <> $UserEing[$x] Then $Fehler += 1 Next MsgBox(0, 0, "Du schreibst: " & Round($len / $Timer, 1) & " Zeichen pro Sekunde." & @CRLF & "Du hast: " & $Fehler & " Abschreibfehler." & @CRLF & "Du hast: " & $DelCount & " mal deine Eingabe verändert.") Exit EndIfEndFunc ;==>UpdateFunc DelCount() $DelCount += 1 GUICtrlSetData($Edit, StringTrimRight(GUICtrlRead($Edit), 1))EndFunc ;==>DelCount;By GtaSpiderFunc _WinSetSize($hWnd, $iWidth, $iHeigth, $iSleep = -1, $iStep = 4) If $iSleep < 0 Then Return WinMove($hWnd, "", Default, Default, $iWidth, $iHeigth) Local $i, $iStepW = $iStep, $iStepH = $iStep, $iSin, $i2, $iLastI Local $aWinPos = WinGetPos($hWnd) If $iWidth < $aWinPos[2] Then $iStepW *= -1 If $iHeigth < $aWinPos[3] Then $iStepH *= -1 Local $iDegToRad = 3.14159265358979 / 180 Local $iSinMulW = ($iWidth - $aWinPos[2]) / 2.5 Local $iSinMulH = ($iHeigth - $aWinPos[3]) / 2.5 If $iSinMulW < 0 Then $iSinMulW *= -1 If $iSinMulH < 0 Then $iSinMulH *= -1 If $iWidth <> $aWinPos[2] Then For $i = $aWinPos[2] To $iWidth Step $iStepW $iLastI = $i $iSin = $i - $aWinPos[2] $iSin = Sin($iDegToRad * (180 * $iSin / ($iWidth - $aWinPos[2]))) WinMove($hWnd, "", Default, Default, $i + ($iSin * $iSinMulW), Default) Sleep($iSleep) Next If Mod($iWidth - $aWinPos[2], $iStep) Then If $iStepW < 0 Then $iStepW = -1 Else $iStepW = 1 EndIf For $i = $iLastI - 1 To $iWidth Step $iStepW WinMove($hWnd, "", Default, Default, $i, Default) Next EndIf EndIf If $iHeigth <> $aWinPos[3] Then For $i = $aWinPos[3] To $iHeigth Step $iStepH $iLastI = $i $iSin = $i - $aWinPos[3] $iSin = Sin($iDegToRad * (180 * $iSin / ($iHeigth - $aWinPos[3]))) WinMove($hWnd, "", Default, Default, Default, $i + ($iSin * $iSinMulH)) Sleep($iSleep) Next If Mod($iHeigth - $aWinPos[3], $iStep) Then If $iStepH < 0 Then $iStepH = -1 Else $iStepH = 1 EndIf For $i = $iLastI - 1 To $iHeigth Step $iStepH WinMove($hWnd, "", Default, Default, Default, $i) Next EndIf EndIfEndFunc ;==>_WinSetSize

    [/autoit]

    Change Log
    -Rechtschreibfehler berichtigt (Danke an Zacharja und Pinguin94 für die Korrekturen)
    -Text in der MsgBox berichtigt
    -Änderungszähler hinzugefügt
    -Test beendet sich automatisch wenn der Text die Länge der Vorgabe hat
    -Automatische Fokussetzung
    -Start Countdown

    Mein Ergebnis war: 3,1 Zeichen pro Sekunde und 0 Fehler

    Insgesamte Downloads: 24

  • Schick, schick... Funktioniert alles Prima :D

    Aber einiges zu verbessern:
    - Es wäre viel besser, wenn der Test sich nach dem schreiben von selbst beendet, dadurch verliert man an Zeit ;)
    - Kein Abschreibfehlerzähler (Lustiges Wort), sondern eher ein Tippfehlerzähler, da man ja die Fehler schnell berichtigen kann.
    - In der MsgBox aus dem "Secunde" ein "Sekunde" machen :D

    Sonst Top :D (4,7 Zeichen pro Sekunde beim ersten Mal, 4,6 beim zweiten Mal)

  • Kleiner Fehler:

    [autoit]

    MsgBox(0, 0, "Du schreibst: " & Round($len / $Timer, 1) & " Zeichen pro Sekunde" & @CRLF & "Du hast: " & $Fehler & " Abschreibfehler" & @CRLF & "Du hast: " & $DelCount & " deine Eingabe verändert")

    [/autoit]

    Da fehlt das "mal". Hier die Berichtigung:

    [autoit]

    MsgBox(0, 0, "Du schreibst: " & Round($len / $Timer, 1) & " Zeichen pro Sekunde" & @CRLF & "Du hast: " & $Fehler & " Abschreibfehler" & @CRLF & "Du hast: " & $DelCount & " mal deine Eingabe verändert")

    [/autoit]

    P.S. WAS!?! 3 Zeichen pro Sekunde ;(

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Mach doch mal bitte folgendes:
    Statt der leeren Zeile 23 ein

    [autoit]

    GUICtrlSetState($Edit,$GUI_FOCUS)

    [/autoit]


    Schön wäre auch ein Countdown, damit man nicht so unvorbereitet ist...

    Edit: Nachdem ich die Zeile eingefügt hatte, hatte ich 5,3 char/s

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Hmm.
    5.8 Zeichen pro Sekunde, 0 Abschreibfehler, 0 mal korrigiert :D

    Verbesserungsvorschläge.
    - Der Text sollte Case Sensitive sein.
    - Man sollte wissen, wann das Script anfängt (Das Editfeld wird plötzlich freigegeben)
    - Auswählbarer Text
    - Text Presets in einer Datei

    MfG. PrideRage

    Meine Projekte:
    ClipBoard Manager (beendet)
    Gutes ClipBoard Verwaltungs Programm mit nützlichen Funktionen.

    HTML Creator (beendet)
    Nützliches Tool um schnell ein eigenes HTML Dokument zu erstellen.