Problem beim programmieren von einem Hundewettenspiel

  • Ich versuch mich gerade am programmieren eines kleinnen wetspiel. Es sollte so ausschauen, dass in jedem Hunderennen 6 hunde mitmachen und man dan auf Sieg und Kobmb(1und 2 Platz)i wetten kann. Ich hab mir schon videos von allen 30 möglichen Rennausgängen runtergeladen. Ich habe diese auch schon durch eine Html datei in ein objekt eingebettet. Zwischen den Rennen sollen immer 3 minuten pause sein und daher hab ich mir noch nen 3 min Countdown runtergeladen. Soweit so gut :) ich habe mir auch vorgestellt, dass die verschiedenen wettquoten nach jedem rennen geändert werden. das habe ich jetzt schon alles geschafft und es funktioniert auch soweit. Jetzt wollte ich noch ein Feld machen, indem die quote der wette angezeigt wird die man ausgewählt hat jetzt habe ich aber dass problem, dass das nicht funktioniert. Ich glaube es liegt daran, dass ich die videos (abwechselnd Hunderennen und Countdown) mit der Sleepfunktion aneinandergereit habe und ich habe die Sekunden genau so gewählt dass das Viedeo bis zum Ende durchgespielt wird =>

    $obj.navigate("pfadvideo1")

    "sleep(182000)
    $obj.stop
    $obj.navigate("pfadvideo2")

    während der 182 sekunden sleep sollte man aber seine wetten auswählen können und dann soll die Quote angezeigt werden und anschließend soll man sie auch abgeben können.

    Im Anhang finden sie mein Skript wird aber aufgrund Fehlender Videos und Bilder nicht funktionieren.

    Hoffe es kann mir schnell jemand helfen :) würde gern in der Nacht bzw noch am Abend weitermachen.


    Danke schon im vorraus

  • Hi, Während einem Sleep bleibt das ganze Skript stehen.

    Ich denke, per AdlibRegister solltest du das am besten lösen können oder auch eine While-Schleife mit TimerInit/TimerDiff.

  • kannst du mir die 2 methoden kurz erklären bitte


    LG

    danke für die rasche antwort

  • Das steht alles in der Hilfe
    Ein blick und du verstehst es besser als ich dir jetzt alles erkläre

  • Hier ist ein Beispiel mit AdlibRegister. Es zeigt 3 Sekunden nach dem Klick eine Messagebox, während das normale Skript weiterläuft.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    #region - GUI Create
    GUICreate('test')
    $b = GUICtrlCreateButton("start", 10, 10)
    GUISetState()
    #endregion

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

    #region - GUI SelectLoop
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $b
    AdlibRegister("_Stop", 3000)
    EndSelect
    ToolTip(@sec & "." & @MSEC)
    WEnd
    #endregion

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

    Func _Stop()
    AdlibUnRegister("_Stop")
    MsgBox(0, '', "Stop")
    EndFunc

    [/autoit]
  • PASST SCHON

    habs mir eh schon durchgelesen und verstanden

    Andere frage: Kann man es irgendwie schaffen dass man das html video nicht stoppen bzw vorspielen kann? Also dass es gesperrt ist?


    LG

  • warum funktioniert das nicht:

    $begin = TimerInit()
    $dif = TimerDiff($begin)
    While $dif < 3000
    sleep(10)
    WEnd
    MsgBox(0,"Time Difference","asdfsad")

  • hallo hab schon wieder ein problem:

    Wo liegt da der fehler?

    Bzw wie würdet ihr das lösen

    bitte wieder um rasche antwort

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $qoute = "2"
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 426, 193, 125)
    $Button1 = GUICtrlCreateButton("wette abgeben", 240, 368, 401, 57, 0)
    $Einsatz = GUICtrlCreateInput("Einsatz", 96, 32, 361, 32)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $Quote = GUICtrlCreateLabel("Quote", 48, 80, 56, 28)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $gewinn = GUICtrlCreateLabel("gewinn", 40, 120, 66, 28)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $qoute1 = "dd"
    $qoute2 = "dsa"
    $qoute3 = "sasd"
    $Label1 = GUICtrlCreateLabel("0", 128, 88, 42, 17)
    $Label2 = GUICtrlCreateLabel("0", 144, 128, 10, 17)
    $Button2 = GUICtrlCreateButton($qoute1, 72, 248, 75, 25, 0)
    $Button3 = GUICtrlCreateButton($qoute2, 272, 248, 75, 25, 0)
    $Button4 = GUICtrlCreateButton($qoute3, 472, 256, 75, 25, 0)
    $Edit1 = GUICtrlCreateEdit("", 200, 88, 89, 65)
    GUICtrlSetData(-1, "das")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    GUICtrlSetData($Button2, "3,2")
    GUICtrlSetData($Button3, "4,3")
    GUICtrlSetData($Button4, "5,6")
    $begin30 = TimerInit()
    While TimerDiff($begin30) <50000
    switch $nMsg
    case $Button2
    GUICtrlSetData($Edit1, $qoute1)
    case $Button3
    GUICtrlSetData($Edit1, $qoute2)
    case $Button4
    GUICtrlSetData($Edit1, $qoute3)

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

    WEnd
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Du musst lernen die Fehlermeldungen zu verstehen da steht ganz ausdrücklich "EndSwitch is missing"
    Sprich du musst dein Switch beenden.

    Was vielleicht noch wichtig ist, dass sich deine GUI auch schließen lässt!

  • das ist leider nicht der fehler denn mein skript schaut mittlerweile so aus und geht noch immer nicht trotzdem danke

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $qoute = "2"
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 426, 193, 125)
    $Button1 = GUICtrlCreateButton("wette abgeben", 240, 368, 401, 57, 0)
    $Einsatz = GUICtrlCreateInput("Einsatz", 96, 32, 361, 32)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $Quote = GUICtrlCreateLabel("Quote", 48, 80, 56, 28)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $gewinn = GUICtrlCreateLabel("gewinn", 40, 120, 66, 28)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")

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

    $Label1 = GUICtrlCreateLabel("0", 128, 88, 42, 17)
    $Label2 = GUICtrlCreateLabel("0", 144, 128, 10, 17)
    $Button2 = GUICtrlCreateButton("", 72, 248, 75, 25, 0)
    $Button3 = GUICtrlCreateButton("", 272, 248, 75, 25, 0)
    $Button4 = GUICtrlCreateButton("", 472, 256, 75, 25, 0)
    $Edit1 = GUICtrlCreateEdit("", 200, 88, 89, 65)
    GUICtrlSetData(-1, "das")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    GUICtrlSetData($Button2, "3,2")
    GUICtrlSetData($Button3, "4,3")
    GUICtrlSetData($Button4, "5,6")
    $begin30 = TimerInit()
    while timerdiff($begin30) <30000
    switch $nMsg
    $qoute1 = guictrlread($Button2)
    $qoute2 = guictrlread($Button3)
    $qoute3 = guictrlread($Button4)
    case $Button2
    GUICtrlSetData($Label2, $qoute1)
    case $Button3
    GUICtrlSetData($Label2, $qoute2)
    case $Button4
    GUICtrlSetData($Label2, $qoute3)
    EndSwitch
    WEnd

    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Zeile 34 gehört da nicht vorher noch ein case?
    Das was da steht macht garkeinen Sinn^^

    Der Quellcode sieht plötzlich ganz anders aus als vorher...

    Schreib deinen Quellcode das nächste mal in einen Spoiler--> so bleibt dein Thread übersichtlicher..

    • Offizieller Beitrag

    @Schnacko:
    Wenn du auf einen Post antwortest, setze dich bitte auch inhaltlich damit auseinander, sonst verwirrt es mehr als es helfen könnte.

    @TE:
    Du machst in der Hauptschleife eine zweite Schleife auf.

    [autoit]

    while timerdiff($begin30) <30000
    switch $nMsg
    $qoute1 = guictrlread($Button2)
    $qoute2 = guictrlread($Button3)
    $qoute3 = guictrlread($Button4)
    case $Button2
    GUICtrlSetData($Label2, $qoute1)
    case $Button3
    GUICtrlSetData($Label2, $qoute2)
    case $Button4
    GUICtrlSetData($Label2, $qoute3)
    EndSwitch
    WEnd

    [/autoit]

    Und wie soll dort auf $nMsg reagiert werden, wenn diese Variable immer denselben Wert behält?
    Das Schleife-In-Schleife Konzept ist unglücklich gewählt. Suche nach einer alternativen Lösung.

  • bug-fix hast du vielleicht einen Vorschlag probiere schon seit meheren Stunden und komm leider auf keine Lösung wäre echt nett


    lg

  • Vielleicht wenn du die While in der While löschst und dann die andere While darauf anpasst.
    Denn du liest $nMsg nur einmal aus und vergleichst es tausendmal...

  • schauts euch dass an

    jetzt funktioniert schon die textänderung in dem feld

    es wird komischerweise auf 9, 10, 11 geändert anstatt auf 3,2 4,3 5,6.

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $qoute = "2"
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 426, 193, 125)
    $Button1 = GUICtrlCreateButton("wette abgeben", 240, 368, 401, 57, 0)
    $Einsatz = GUICtrlCreateInput("Einsatz", 96, 32, 361, 32)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $Quote = GUICtrlCreateLabel("Quote", 48, 80, 56, 28)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $gewinn = GUICtrlCreateLabel("gewinn", 40, 120, 66, 28)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")

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

    $Label1 = GUICtrlCreateLabel("0", 128, 88, 42, 17)
    $Label2 = GUICtrlCreateLabel("0", 144, 128, 10, 17)
    $Button2 = GUICtrlCreateButton("", 72, 248, 75, 25, 0)
    $Button3 = GUICtrlCreateButton("", 272, 248, 75, 25, 0)
    $Button4 = GUICtrlCreateButton("", 472, 256, 75, 25, 0)
    $Edit1 = GUICtrlCreateEdit("", 200, 88, 89, 65)
    GUICtrlSetData(-1, "das")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1

    GUICtrlSetData($Button2, "3,2")
    GUICtrlSetData($Button3, "4,3")
    GUICtrlSetData($Button4, "5,6")
    $begin30 = TimerInit()

    while timerdiff($begin30) <30000
    switch GUIGetMsg()
    case $Button2
    GUICtrlSetData($Label1, $Button2)
    case $Button3
    GUICtrlSetData($Label1, $Button3)
    case $Button4
    GUICtrlSetData($Label1, $Button4)
    EndSwitch
    WEnd

    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit]
  • ich glaub ich hab das problem schon erkannt. Ich glaube es liegt daran, dass ich in der guictrlsetdata nicht die richtige info sende. Wie bekommt man eigentlich den text, der in einem button steht? ist das überhaupt $button2, $button3; $button4?
    Lg

  • Ich glaub mit _GuiCtrlRead()..
    Kannst ja wieder in der Hilfe lesen ^^

    Du hast immer noch die While in der While... das wird dich nicht glücklich machen .. glaub mir ^^

  • Ich blick hier schwer durch aber vlt. hilft's.

    Spoiler anzeigen
    [autoit]

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

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

    Global $begin30, $qoute = "2"
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 426, 193, 125)
    $Button1 = GUICtrlCreateButton("wette abgeben", 240, 368, 401, 57, 0)
    $Einsatz = GUICtrlCreateInput("Einsatz", 96, 32, 361, 32)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $Quote = GUICtrlCreateLabel("Quote", 48, 80, 56, 28)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $gewinn = GUICtrlCreateLabel("gewinn", 40, 120, 66, 28)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")

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

    $Label1 = GUICtrlCreateLabel("0", 128, 88, 42, 17)
    $Label2 = GUICtrlCreateLabel("0", 144, 128, 10, 17)
    $Button2 = GUICtrlCreateButton("3,2", 72, 248, 75, 25, 0)
    $Button3 = GUICtrlCreateButton("4,3", 272, 248, 75, 25, 0)
    $Button4 = GUICtrlCreateButton("5,6", 472, 256, 75, 25, 0)
    $Edit1 = GUICtrlCreateEdit("", 200, 88, 89, 65)
    GUICtrlSetData(-1, "das")
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    _setTimer()
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button2
    _setLabel($Button2)
    Case $Button3
    _setLabel($Button3)
    Case $Button4
    _setLabel($Button4)
    EndSwitch
    WEnd

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

    Func _SetTimer()
    $begin30 = TimerInit()
    EndFunc ;==>_SetTimer

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

    Func _Timer()
    If TimerDiff($begin30) >= 5000 Then Return 1
    EndFunc ;==>_Timer

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

    Func _setLabel($Button)
    if _Timer() <> 1 Then
    GUICtrlSetData($Label1, GUICtrlRead($Button))
    Else
    Return
    EndIf
    EndFunc

    [/autoit]