LottoAutomat von Mars(i) :P

  • Moin

    Es gibt schon einige Lottoversuchsautomaten hier im Forum.
    Auch relativ schnelle.

    Damit ich auf der Welle mal mitschwimme habe ich auch einen gebastelt.

    Features:
    - Keine Doppelten Lottozahlen
    - Berechnung der Wahrscheinlichkeit jeder Lottozahl
    - (bei mir) 5200 Versuche pro Sekunde
    - Hintergrundmodus der die cpu etwas verschnaufen lässt. (Ist dann halt langsamer...^^)
    - blubb

    Spoiler anzeigen
    [autoit]


    #include <GDIPlus.au3>

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

    Opt("GUIOnEventMode", 1)

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

    _GDIPlus_Startup()

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

    Global $Berechnen = False ; True = Es Wird Berechnet, Sonst Leerlauf
    Global $Breite = 400, $Hoehe = 200
    Global $hGUI = GUICreate('Lotto Automat (von Mars(i) :P)', $Breite, $Hoehe, _Center(0, $Breite), _Center(1, $Hoehe), -1, 0x40080)
    GUISetOnEvent(-3, '_Exit', $hGUI)
    WinSetTrans($hGUI, '', 255)

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

    Global $hButton = GUICtrlCreateButton('Starten', 5, 5, 100, 20)
    GUICtrlSetOnEvent(-1, '_Go')

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

    Global $hCheckBox = GUICtrlCreateCheckbox('Hintergrund', 110, 5, 100, 20)
    GUICtrlSetOnEvent(-1, '_Hintergrund')

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

    Global $Input[6]

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

    For $i = 0 To 5 Step 1
    $Input[$i] = GUICtrlCreateEdit($i + 1, 2 + $i * $Breite / 6, $Hoehe - 25, $Breite / 6 - 4, 20, 1, 0)
    GUICtrlSetBkColor(-1, 0x000000)
    GUICtrlSetColor(-1, 0x8888FF)
    GUICtrlSetFont(-1, 13, 400, 0, 'Courier New', 5)
    Next

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

    Global $Hintergrund = False
    Global $Versuche = 0
    Global $Zahlen[50]

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

    Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    Global $hBitmap = _GDIPlus_BitmapCreateFromGraphics($Breite, $Hoehe - 60, $hGraphics)
    Global $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    Global $tLayout1 = _GDIPlus_RectFCreate(5, 5, $Breite / 3 - 10, $Hoehe - 70)
    Global $tLayout2 = _GDIPlus_RectFCreate($Breite / 3 + 5, 5, $Breite / 3 + 15, $Hoehe - 70)
    Global $tLayout3 = _GDIPlus_RectFCreate(2 * $Breite / 3 + 25, 5, $Breite / 3 - 25, $Hoehe - 70)
    Global $hFamily = _GDIPlus_FontFamilyCreate('Courier New')
    Global $hFont = _GDIPlus_FontCreate($hFamily, 8)
    Global $hFormat = _GDIPlus_StringFormatCreate()
    _GDIPlus_StringFormatSetAlign($hFormat, 0)
    Global $hBrush = _GDIPlus_BrushCreateSolid(0xFF4040E0)

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

    Global $Versuche_sek = 0

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

    AdlibRegister('_Versuche_sek', 1000)

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

    GUISetState(@SW_SHOW, $hGUI)

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

    Global $Zahl[6]
    Global $String1 = '', $String2 = '', $String3 = ''
    Global $Gewinne[6]
    Global $Tipp[6]

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

    _LottoZahlen()

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

    _GDIPlus_GraphicsClear($hBackbuffer, 0xFF000000)
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 30)

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

    Func _Gewinn()
    Local $t[6]
    For $i = 0 To 5 Step 1
    For $x = 0 To 5 Step 1
    If $Tipp[$i] = $Zahl[$x] Then $t[$i] = 1
    Next
    Next
    Switch _Summe($t)
    Case 1
    $Gewinne[0] += 1
    Case 2
    $Gewinne[1] += 1
    Case 3
    $Gewinne[2] += 1
    Case 4
    $Gewinne[3] += 1
    Case 5
    $Gewinne[4] += 1
    Case 6
    $Gewinne[5] += 1
    EndSwitch
    EndFunc ;==>_Gewinn

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

    Func _Summe($a)
    Local $b
    For $i = 0 To 5 Step 1
    $b += $a[$i]
    Next
    Return $b
    EndFunc ;==>_Summe

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

    While 1
    Switch $Berechnen
    Case True
    $Versuche += 1
    _LottoZahlen()
    _Gewinn()
    If $Hintergrund Then
    If Round($Versuche / 100) = $Versuche / 100 Then
    _Stats()
    Sleep(20)
    EndIf
    Else
    If Round($Versuche / 2000) = $Versuche / 2000 Then _Stats()
    EndIf
    Case Else
    Sleep(10)
    EndSwitch
    WEnd

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

    Func _Stats()
    _GDIPlus_GraphicsClear($hBackbuffer, 0xFF000000)
    _GDIPlus_GraphicsDrawStringEx($hBackbuffer, $String1, $hFont, $tLayout1, $hFormat, $hBrush)
    _GDIPlus_GraphicsDrawStringEx($hBackbuffer, $String2, $hFont, $tLayout2, $hFormat, $hBrush)
    _GDIPlus_GraphicsDrawStringEx($hBackbuffer, $String3, $hFont, $tLayout3, $hFormat, $hBrush)
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 30)
    EndFunc ;==>_Stats

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

    Func _Versuche_sek()
    Static $Versuche_alt = $Versuche
    Local $a
    $Versuche_sek = $Versuche - $Versuche_alt
    $Versuche_alt = $Versuche

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

    $String1 = ''
    $String2 = ''
    $String3 = ''
    $String1 &= 'Versuche/Sek: ' & $Versuche_sek & @CRLF & @CRLF
    $String2 &= 'Gesamt: ' & $Versuche & @CRLF & @CRLF
    $String3 &= 'Häufigkeit: ' & @CRLF & @CRLF

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

    For $i = 0 To 5 Step 1
    $String1 &= ' Zahl ' & $i + 1 & ' = ' & $Zahl[$i] & @CRLF

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

    Switch $i
    Case 0
    $String2 &= ' ' & $i + 1 & ' Richtiger: ' & $Gewinne[$i] & @CRLF
    Case Else
    $String2 &= ' ' & $i + 1 & ' Richtige: ' & $Gewinne[$i] & @CRLF
    If $Gewinne[$i] > 0 And $i = 5 Then
    MsgBox(0, 'Herzlichen Glückwunsch', 'Sie haben grade einen 6er im Lotto gemacht.' & @CRLF & 'Dafür wurden ' & $Versuche & ' Versuche benötigt.')
    exit
    endif

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

    EndSwitch

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

    $a = Round($Gewinne[$i] / $Versuche * 100, 5)
    If $a < 10 Then $a = '0' & $a
    ;~ For $o = 0 To 3 Step 1
    If StringLen($a) < 8 Then $a &= '0'
    ;~ Next
    $String3 &= ' ( ' & $a & '% )' & @CRLF

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

    Next

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

    $String1 &= @CRLF & 'Unten Tipp abgeben'
    $String2 &= @CRLF & '(C) Mars(i).'

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

    EndFunc ;==>_Versuche_sek

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

    Func _Hintergrund()
    Switch GUICtrlRead($hCheckBox)
    Case 1
    $Hintergrund = True
    Case 4
    $Hintergrund = False
    EndSwitch
    EndFunc ;==>_Hintergrund

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

    Func _ValidInput()
    Local $a[6], $ret[6]
    For $i = 0 To 5 Step 1
    $a[$i] = GUICtrlRead($Input[$i])
    For $x = 1 To 49 Step 1
    If $a[$i] = $x Then
    $ret[$i] = 1
    ExitLoop
    Else
    $ret[$i] = 0
    EndIf

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

    Next
    If $ret[$i] = 0 Then Return 0
    Next
    $Tipp = $a
    Local $Temp[50]
    For $i = 0 To 5 Step 1
    $Temp[$a[$i]] += 1
    If $Temp[$a[$i]] > 1 Then Return 0 ;Ist eine Zahl Doppelt ?
    Next
    Return 1
    EndFunc ;==>_ValidInput

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

    Func _Go()
    Switch $Berechnen
    Case False
    If _ValidInput() Then
    ToolTip('')
    $Berechnen = True
    GUICtrlSetData($hButton, 'Stop')
    For $i = 0 To 5 Step 1
    GUICtrlSetStyle($Input[$i], 2048)
    Next
    Else
    ToolTip('Nicht unterstützer Inhalt')
    EndIf
    Case True
    $Berechnen = False
    GUICtrlSetData($hButton, 'Starten')
    For $i = 0 To 5 Step 1
    GUICtrlSetStyle($Input[$i], 1)
    Next
    EndSwitch
    EndFunc ;==>_Go

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

    Func _Exit()
    AdlibUnRegister('_Versuche_sek')
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_GraphicsDispose($hBackbuffer)
    _GDIPlus_ImageDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>_Exit

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

    Func _Center($a, $b)
    If $a = 0 Then Return @DesktopWidth / 2 - $b / 2
    Return @DesktopHeight / 2 - $b / 2
    EndFunc ;==>_Center

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

    Func _LottoZahlen()
    Local $tmp = Random(1, 49, 1)
    $Zahl[0] = $tmp
    $Zahlen[$tmp] += 1
    Do
    $tmp = Random(1, 49, 1)
    Until $tmp <> $Zahl[0]
    $Zahl[1] = $tmp
    $Zahlen[$tmp] += 1
    Do
    $tmp = Random(1, 49, 1)
    Until $tmp <> $Zahl[0] And $tmp <> $Zahl[1]
    $Zahl[2] = $tmp
    $Zahlen[$tmp] += 1
    Do
    $tmp = Random(1, 49, 1)
    Until $tmp <> $Zahl[0] And $tmp <> $Zahl[1] And $tmp <> $Zahl[2]
    $Zahl[3] = $tmp
    $Zahlen[$tmp] += 1
    Do
    $tmp = Random(1, 49, 1)
    Until $tmp <> $Zahl[0] And $tmp <> $Zahl[1] And $tmp <> $Zahl[2] And $tmp <> $Zahl[3]
    $Zahl[4] = $tmp
    $Zahlen[$tmp] += 1
    Do
    $tmp = Random(1, 49, 1)
    Until $tmp <> $Zahl[0] And $tmp <> $Zahl[1] And $tmp <> $Zahl[2] And $tmp <> $Zahl[3] And $tmp <> $Zahl[4]
    $Zahl[5] = $tmp
    $Zahlen[$tmp] += 1
    EndFunc ;==>_LottoZahlen

    [/autoit]

    lg
    Mars(i)

  • :rofl:
    Das wollte ich hören :P

    //Edit:
    Ich hab das Teil jetzt schon die ganze Zeit an.
    Habe jetzt 10,9 Mio Versuche und keinen 6er^^
    //

  • Schlecht gemacht !
    Wenn ich 6 Richtige habe ist ein "Herzlicher Glückwunsch" schon ganz gut.
    Aber es sollte auch die MsgBox mal wieder sich wegklicken lassen.
    Und Speedregeler, Pause Button wärn auch nicht schlecht.
    Es ist zu unüberschaulich.
    Farbwahl verursacht ebenfalls "Augenkrebs" !

    MfG

  • Bei mir sind 16000 pro sekunde :)

    Gleich bei 2 sek 6 richtige :D

    Welche CPU? 8|
    Ich hab 7000 pro Sekunde, bei nem Intel i7 920 Quadcore.


    Also zum Programm:

    + Pause-Button fehlt
    + Speed-Regler fehlt
    + eine genaue (evtl. grafische) Statistik fehlt
    + setzt man auf 49 stürzt das Programm ab

    Und warum zeichnest du den Content als BMP mit GDI?
    Das ist ersten irre langsam, zweitens kann man den Text nicht kopieren, und drittens viel zu umständlich.

    Einmal editiert, zuletzt von Pennywise (18. Januar 2011 um 13:09)

  • Hö ?^^

    zu den Punkten:
    - Mit GDI ist das 5Mal so schnell wie mit GuiCtrlSetData. (außerdem wird nur alle paar hundert durchläufe gezeichnet)
    - Pause = Stop, da es keinen Reset gibt.
    - Wer braucht einen Speedregler ? Entweder man Rechnet Schnell, Langsam oder garnicht. das ist Regelung genug.
    - Erst kein GDI+ wollen, dann aber ne grafische Darst. xD
    - Ups... wusste ich nicht^^

    Spoiler anzeigen

    Wenn man Zeile 183 zu
    Local $Temp[50]
    ändert klappts. (Stand vorher ne 49. Weil ich wieder von der 49 ausgegangen bin^^)

    Erkläre Mir bitte mal dass GDI langsam ist. Schau mal meine GDI Spiele an...
    Desweiteren hätte ich das Teil lieber in Off Topic Posten sollen.... War eig als Nonsense geplant.^^

    lg

  • Wenn manns als CPU Test umbaut hat es noch weniger sinn :)

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <File.au3>
    #include <FTPEx.au3>
    #include <Guiconstants.au3>
    Opt("GUIOnEventMode", 1)

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

    _GDIPlus_Startup()

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

    Global $Berechnen = False ; True = Es Wird Berechnet, Sonst Leerlauf
    Global $Breite = 400, $Hoehe = 200
    Global $hGUI = GUICreate('CPU PickTest', $Breite, $Hoehe, _Center(0, $Breite), _Center(1, $Hoehe), -1, 0x40080)
    GUISetOnEvent(-3, '_Exit', $hGUI)
    WinSetTrans($hGUI, '', 255)

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

    Global $hButton = GUICtrlCreateButton('Starten', 5, 5, 100, 20)
    GUICtrlSetOnEvent(-1, '_Go')

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

    Global $hCheckBox = GUICtrlCreateCheckbox('halbe Leistung', 110, 5, 100, 20)
    GUICtrlSetOnEvent(-1, '_Hintergrund')

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

    Global $lbl = GUICtrlCreateLabel("Max. Pickwert: ", 215, 8, 200)

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

    Global $Input[6]

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

    For $i = 0 To 5 Step 1
    $Input[$i] = GUICtrlCreateEdit($i + Random(1,30,1), 2 + $i * $Breite / 6, $Hoehe - 25, $Breite / 6 - 4, 20, 1, 0)
    GUICtrlSetBkColor(-1, 0x000000)
    GUICtrlSetColor(-1, 0x8888FF)
    GUICtrlSetFont(-1, 13, 400, 0, 'Courier New', 5)
    Next

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

    Global $Hintergrund = False
    Global $Versuche = 0
    Global $Zahlen[50]
    Global $maxpick = 0

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

    Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    Global $hBitmap = _GDIPlus_BitmapCreateFromGraphics($Breite, $Hoehe - 60, $hGraphics)
    Global $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    Global $tLayout1 = _GDIPlus_RectFCreate(5, 5, $Breite / 3 - 10, $Hoehe - 70)
    Global $tLayout2 = _GDIPlus_RectFCreate($Breite / 3 + 5, 5, $Breite / 3 + 15, $Hoehe - 70)
    Global $tLayout3 = _GDIPlus_RectFCreate(2 * $Breite / 3 + 25, 5, $Breite / 3 - 25, $Hoehe - 70)
    Global $hFamily = _GDIPlus_FontFamilyCreate('Courier New')
    Global $hFont = _GDIPlus_FontCreate($hFamily, 8)
    Global $hFormat = _GDIPlus_StringFormatCreate()
    _GDIPlus_StringFormatSetAlign($hFormat, 0)
    Global $hBrush = _GDIPlus_BrushCreateSolid(0xFF4040E0)

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

    Global $Versuche_sek = 0

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

    AdlibRegister('_Versuche_sek', 1000)

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

    GUISetState(@SW_SHOW, $hGUI)

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

    Global $Zahl[6]
    Global $String1 = '', $String2 = '', $String3 = ''
    Global $Gewinne[6]
    Global $Tipp[6]

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

    _LottoZahlen()

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

    _GDIPlus_GraphicsClear($hBackbuffer, 0xFF000000)
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 30)

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

    Func _Gewinn()
    Local $t[6]
    For $i = 0 To 5 Step 1
    For $x = 0 To 5 Step 1
    If $Tipp[$i] = $Zahl[$x] Then $t[$i] = 1
    Next
    Next
    Switch _Summe($t)
    Case 1
    $Gewinne[0] += 1
    Case 2
    $Gewinne[1] += 1
    Case 3
    $Gewinne[2] += 1
    Case 4
    $Gewinne[3] += 1
    Case 5
    $Gewinne[4] += 1
    Case 6
    $Gewinne[5] += 1
    EndSwitch
    EndFunc ;==>_Gewinn

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

    Func _Summe($a)
    Local $b
    For $i = 0 To 5 Step 1
    $b += $a[$i]
    Next
    Return $b
    EndFunc ;==>_Summe

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

    While 1
    Switch $Berechnen
    Case True
    $Versuche += 1
    _LottoZahlen()
    _Gewinn()
    If $Hintergrund Then
    If Round($Versuche / 100) = $Versuche / 100 Then
    _Stats()
    Sleep(20)
    EndIf
    Else
    If Round($Versuche / 2000) = $Versuche / 2000 Then _Stats()
    EndIf
    Case Else
    Sleep(1)
    EndSwitch
    WEnd

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

    Func _Stats()
    _GDIPlus_GraphicsClear($hBackbuffer, 0xFF000000)
    _GDIPlus_GraphicsDrawStringEx($hBackbuffer, $String1, $hFont, $tLayout1, $hFormat, $hBrush)
    _GDIPlus_GraphicsDrawStringEx($hBackbuffer, $String2, $hFont, $tLayout2, $hFormat, $hBrush)
    _GDIPlus_GraphicsDrawStringEx($hBackbuffer, $String3, $hFont, $tLayout3, $hFormat, $hBrush)
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 30)
    EndFunc ;==>_Stats

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

    Func _Versuche_sek()
    Static $Versuche_alt = $Versuche
    Local $a
    $Versuche_sek = $Versuche - $Versuche_alt
    $Versuche_alt = $Versuche

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

    $String1 = ''
    $String2 = ''
    $String3 = ''
    $String1 &= 'Picks/Sek: ' & $Versuche_sek & @CRLF & @CRLF
    $String2 &= 'Picks Gesamt: ' & $Versuche & @CRLF & @CRLF
    $String3 &= 'Häufigkeit: ' & @CRLF & @CRLF

    If $Versuche_sek > $maxpick Then
    $maxpick = $Versuche_sek
    Else
    Sleep(1)
    EndIf

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

    For $i = 0 To 5 Step 1
    $String1 &= ' Zahl ' & $i + 1 & ' = ' & $Zahl[$i] & @CRLF

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

    Switch $i
    Case 0
    $String2 &= ' ' & $i + 1 & ' Pick: ' & $Gewinne[$i] & @CRLF
    Case Else
    $String2 &= ' ' & $i + 1 & ' Picks: ' & $Gewinne[$i] & @CRLF
    EndSwitch

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

    $a = Round($Gewinne[$i] / $Versuche * 100, 5)
    If $a < 10 Then $a = '0' & $a
    ;~ For $o = 0 To 3 Step 1
    If StringLen($a) < 8 Then $a &= '0'
    ;~ Next
    $String3 &= ' ( ' & $a & '% )' & @CRLF

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

    Next

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

    $String1 &= @CRLF & 'Akt. Pickwert:'
    $String2 &= @CRLF & $Versuche_sek*2
    GUICtrlSetData($lbl, "Max. Pickwert: " & $maxpick*2)

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

    EndFunc ;==>_Versuche_sek

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

    Func _Hintergrund()
    Switch GUICtrlRead($hCheckBox)
    Case 1
    $Hintergrund = True
    Case 4
    $Hintergrund = False
    EndSwitch
    EndFunc ;==>_Hintergrund

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

    Func _ValidInput()
    Local $a[6], $ret[6]
    For $i = 0 To 5 Step 1
    $a[$i] = GUICtrlRead($Input[$i])
    For $x = 1 To 49 Step 1
    If $a[$i] = $x Then
    $ret[$i] = 1
    ExitLoop
    Else
    $ret[$i] = 0
    EndIf

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

    Next
    If $ret[$i] = 0 Then Return 0
    Next
    $Tipp = $a
    Local $Temp[49]
    For $i = 0 To 5 Step 1
    $Temp[$a[$i]] += 1
    If $Temp[$a[$i]] > 1 Then Return 0 ;Ist eine Zahl Doppelt ?
    Next
    Return 1
    EndFunc ;==>_ValidInput

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

    Func _Go()
    Switch $Berechnen
    Case False
    If _ValidInput() Then
    ToolTip('')
    $Berechnen = True
    GUICtrlSetData($hButton, 'Stoppen')
    For $i = 0 To 5 Step 1
    GUICtrlSetStyle($Input[$i], 2048)
    Next
    Else
    ToolTip('Noch einmal drücken!')
    For $i = 0 To 5 Step 1
    $Input[$i] = GUICtrlCreateEdit($i + Random(1,30,1), 2 + $i * $Breite / 6, $Hoehe - 25, $Breite / 6 - 4, 20, 1, 0)
    GUICtrlSetBkColor(-1, 0x000000)
    GUICtrlSetColor(-1, 0x8888FF)
    GUICtrlSetFont(-1, 13, 400, 0, 'Courier New', 5)
    Next
    EndIf
    Case True
    $Berechnen = False
    GUICtrlSetData($hButton, 'Starten')
    For $i = 0 To 5 Step 1
    GUICtrlSetStyle($Input[$i], 1)
    Next
    EndSwitch
    EndFunc ;==>_Go

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

    Func _Exit()
    If $maxpick >8000 Then
    $strg = "5 von 5 Punkten!"
    EndIf
    If $maxpick >6000 Then
    $strg = "4 von 5 Punkten!"
    EndIf
    If $maxpick >4000 Then
    $strg = "3 von 5 Punkten!"
    EndIf
    If $maxpick > 2500 Then
    $strg = "1 von 5 Punkten"
    EndIf
    If $maxpick < 3500 Then
    $strg = "0 von 5 Punkten!"
    EndIf
    If FileExists(@scriptdir&"\log.txt") Then
    $file = FileOpen(@scriptdir&"\log.txt", 1)
    if $file = -1 Then
    MsgBox(0, "Error", "Melden sie sich als Administrator an!")
    Exit
    Endif
    FileWriteLine($file, "===========================================================================")
    FileWriteLine($file, "Ihr Computer hat einen Pickwert von: "&$maxpick*2&"!")
    FileWriteLine($file, "Ihr CPU kann "&$maxpick&" Picks in einer Sekunde durchführen!")
    FileWriteLine($file, "In einer Millisekunde schafft er folglich "&$maxpick/1000&" Picks!")
    FileWriteLine($file, "1 mit den unteren Zahlen übereinstimmenden Pick gab es "&$Gewinne[0]&" mal!")
    FileWriteLine($file, "2 mit den unteren Zahlen übereinstimmenden Pick gab es "&$Gewinne[1]&" mal!")
    FileWriteLine($file, "3 mit den unteren Zahlen übereinstimmenden Pick gab es "&$Gewinne[2]&" mal!")
    FileWriteLine($file, "4 mit den unteren Zahlen übereinstimmenden Pick gab es "&$Gewinne[3]&" mal!")
    FileWriteLine($file, "5 mit den unteren Zahlen übereinstimmenden Pick gab es "&$Gewinne[4]&" mal!")
    FileWriteLine($file, "6 mit den unteren Zahlen übereinstimmenden Pick gab es "&$Gewinne[5]&" mal!")
    FileWriteLine($file, "===========================================================================")
    FileClose($file)
    Run($file)
    Else
    _FileCreate(@scriptdir&"\log.txt")
    $file = FileOpen(@scriptdir&"\log.txt", 1)
    if $file = -1 Then
    MsgBox(0, "Error", "Melden sie sich als Administrator an!")
    Exit
    Endif
    FileWriteLine($file, "===========================================================================")
    FileWriteLine($file, "Ihr Computer hat einen Pickwert von: "&$maxpick*2&"!")
    FileWriteLine($file, "Ihr CPU kann "&$maxpick&" Picks in einer Sekunde durchführen!")
    FileWriteLine($file, "In einer Millisekunde schafft er folglich "&$maxpick/1000&" Picks!")
    FileWriteLine($file, "1 mit den unteren Zahlen übereinstimmenden Pick gab es "&$Gewinne[0]&" mal!")
    FileWriteLine($file, "2 mit den unteren Zahlen übereinstimmenden Pick gab es "&$Gewinne[1]&" mal!")
    FileWriteLine($file, "3 mit den unteren Zahlen übereinstimmenden Pick gab es "&$Gewinne[2]&" mal!")
    FileWriteLine($file, "4 mit den unteren Zahlen übereinstimmenden Pick gab es "&$Gewinne[3]&" mal!")
    FileWriteLine($file, "5 mit den unteren Zahlen übereinstimmenden Pick gab es "&$Gewinne[4]&" mal!")
    FileWriteLine($file, "6 mit den unteren Zahlen übereinstimmenden Pick gab es "&$Gewinne[5]&" mal!")
    FileWriteLine($file, "===========================================================================")
    FileClose($file)
    Run($file)
    EndIf
    ;==================================================================================================================================
    AdlibUnRegister('_Versuche_sek')
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_GraphicsDispose($hBackbuffer)
    _GDIPlus_ImageDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>_Exit

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

    Func _Center($a, $b)
    If $a = 0 Then Return @DesktopWidth / 2 - $b / 2
    Return @DesktopHeight / 2 - $b / 2
    EndFunc ;==>_Center

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

    Func _LottoZahlen()
    Local $tmp = Random(1, 49, 1)
    $Zahl[0] = $tmp
    $Zahlen[$tmp] += 1
    Do
    $tmp = Random(1, 49, 1)
    Until $tmp <> $Zahl[0]
    $Zahl[1] = $tmp
    $Zahlen[$tmp] += 1
    Do
    $tmp = Random(1, 49, 1)
    Until $tmp <> $Zahl[0] And $tmp <> $Zahl[1]
    $Zahl[2] = $tmp
    $Zahlen[$tmp] += 1
    Do
    $tmp = Random(1, 49, 1)
    Until $tmp <> $Zahl[0] And $tmp <> $Zahl[1] And $tmp <> $Zahl[2]
    $Zahl[3] = $tmp
    $Zahlen[$tmp] += 1
    Do
    $tmp = Random(1, 49, 1)
    Until $tmp <> $Zahl[0] And $tmp <> $Zahl[1] And $tmp <> $Zahl[2] And $tmp <> $Zahl[3]
    $Zahl[4] = $tmp
    $Zahlen[$tmp] += 1
    Do
    $tmp = Random(1, 49, 1)
    Until $tmp <> $Zahl[0] And $tmp <> $Zahl[1] And $tmp <> $Zahl[2] And $tmp <> $Zahl[3] And $tmp <> $Zahl[4]
    $Zahl[5] = $tmp
    $Zahlen[$tmp] += 1
    EndFunc ;==>_LottoZahlen

    [/autoit]
  • Ein Bitmap zeichnen geht echt schneller als GUICtrlSetData? 8|
    Ich meinte ja nicht, dass die GDI langsam ist, sondern vielmehr die Relation.

    Ist ein Bitmap in dem Hallo steht nicht kleiner als ne Text-Datei, in der Hallo steht?
    Oder um es anders zu formulieren: ein Bitmap braucht für jeden Pixel Speicherplatz, ein Text nur für jeden Buchstaben.

    Die grafische Darstellung würde ich auch nur in einem zweiten Tab, oder nach dem pausieren einfügen. ;)

    Ich werd gleich mal was ausprobieren. ^^