Bestimmte Situationen und Probleme einer Simulation

  • Hey zusammen

    Ich entwickle derzeit eine mittlere Freizeitparksimulation mit AutoIt

    Derzeit stosse ich jedoch an eine Kante.

    Spoiler anzeigen
    [autoit]

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

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

    $Form1_1 = GUICreate("Form1", 626, 308, 192, 124)
    $List1 = GUICtrlCreateList("", 32, 40, 561, 123)
    GUICtrlSetData(-1, "")
    $Button1 = GUICtrlCreateButton("Kasse öffnen", 32, 176, 193, 25, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Kasse schliessen", 32, 216, 193, 25, $WS_GROUP)
    $besucherzahl = GUICtrlCreateInput("0", 240, 176, 121, 21)
    $Spielzeit = GUICtrlCreateLabel("Spielzeit:", 400, 16, 51, 17)
    $Time = GUICtrlCreateLabel("07:00", 456, 16, 27, 17)
    $Day = GUICtrlCreateLabel("Tag 1", 490, 16, 35, 20)
    GUISetState(@SW_SHOW)
    AdlibRegister("_spielzeit",1000)

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

    Func _besucherzahl()

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

    $readvzahl=GUICtrlRead($besucherzahl)
    $zufallszahl=Random(0,100,1)
    $readvzahl += $zufallszahl
    GUICtrlSetData($besucherzahl,$readvzahl)
    EndFunc

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

    Func _spielzeit()
    $readtime=GUICtrlRead($Time)
    $readday=GUICtrlRead($Day)

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

    $split=StringSplit($readtime,":",2)
    $daysplit=StringSplit($readday," ",2)

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

    If $split[0]=00 And $split[1]=00 Then
    $daysplit[1] += 1
    EndIf
    GUICtrlSetData($Day,$daysplit[0]&" "&$daysplit[1])

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

    If $split[1]=60 Then
    $split[1]=00
    If $split[0]=23 Then
    $split[0]=00
    Else
    $split[0]+=1
    EndIf
    EndIf
    If StringLen($split[0])=1 Then $split[0]="0"&$split[0]
    If StringLen($split[1]=1) Then $split[1]="0"&$split[1]
    $split[1] += 1
    $aktuellezeit = StringFormat("%02d:%02d",$split[0],$split[1])
    GUICtrlSetData($Time,$aktuellezeit)
    EndFunc

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    AdlibRegister("_besucherzahl",1000)

    Case $Button2
    AdlibUnRegister("_besucherzahl")

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

    EndSwitch
    WEnd

    [/autoit]

    Ich möchte je nach unterschiedlicher Tageszeit unterschiedliche Randomwerte haben.
    D.h. wenn es 09:00 Morgens ist soll bis um 11:00 Uhr Random(0,80,1) gelten und von 11:01 bis 13:00 Random(0,50,1) usw.
    Ich habe es durch diverse Additionen versucht, kriege es jedoch nicht so hin, dass es funktionieren würde.

    Ausserdem funktioniert die oben angestrebte Methode mit dem Tag nicht. Es zählt um 00:00 nicht einen Tag höher.
    Wie löse ich das am Besten?

    MfG
    Lukas

    Einmal editiert, zuletzt von lukiono (21. November 2010 um 13:42)

  • deine Zeit ist niemals auf 00:00 sondern zählt 23:59 23:60 und dann 00:01 und du fragts aber auf 00:00 ab, frag mal auf 00:01 ab und es funktioniert oder passe deinen timer an

  • Hab mal dran rumgebastelt, und zum einen den Bug beim Stundenwechsel behoben und noch eine Speed Funktion eingebaut.

    Spoiler anzeigen
    [autoit]


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

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

    Global $speed = 1000
    Global $kasse = 0
    $Form1_1 = GUICreate("Form1", 626, 308, 192, 124)
    $List1 = GUICtrlCreateList("", 32, 40, 561, 123)
    GUICtrlSetData(-1, "")
    $Button1 = GUICtrlCreateButton("Kasse öffnen", 32, 176, 193, 25, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Kasse schliessen", 32, 216, 193, 25, $WS_GROUP)
    $speedcombo = GUICtrlCreateCombo("",32,260,50,25)
    GUICtrlSetData(-1, "1|2|3|4|10|20|40|50|100","1")
    $besucherzahl = GUICtrlCreateInput("0", 240, 176, 121, 21)
    $Spielzeit = GUICtrlCreateLabel("Spielzeit:", 400, 16, 51, 17)
    $Time = GUICtrlCreateLabel("23:55", 456, 16, 27, 17)
    $Day = GUICtrlCreateLabel("Tag 1", 490, 16, 35, 20)
    GUISetState(@SW_SHOW)
    AdlibRegister("_spielzeit",$speed)

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

    Func speed()

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

    if GUICtrlRead($speedcombo) = 1 Then $speed = 1000
    if GUICtrlRead($speedcombo) = 2 Then $speed = 500
    if GUICtrlRead($speedcombo) = 3 Then $speed = 333
    if GUICtrlRead($speedcombo) = 4 Then $speed = 250
    if GUICtrlRead($speedcombo) = 10 Then $speed = 100
    if GUICtrlRead($speedcombo) = 20 Then $speed = 50
    if GUICtrlRead($speedcombo) = 40 Then $speed = 25
    if GUICtrlRead($speedcombo) = 50 Then $speed = 20
    if GUICtrlRead($speedcombo) = 100 Then $speed = 10
    AdlibRegister("_spielzeit",$speed)
    if $kasse = 1 Then
    AdlibRegister("_besucherzahl",$speed)
    EndIf

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

    EndFunc

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

    Func _besucherzahl()

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

    $readvzahl=GUICtrlRead($besucherzahl)
    $zufallszahl=Random(0,100,1)
    $readvzahl += $zufallszahl
    GUICtrlSetData($besucherzahl,$readvzahl)
    EndFunc

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

    Func _spielzeit()
    $readtime=GUICtrlRead($Time)
    $readday=GUICtrlRead($Day)

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

    $split=StringSplit($readtime,":",2)
    $daysplit=StringSplit($readday," ",2)

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

    If $split[0]=00 And $split[1]=00 Then
    $daysplit[1] += 1
    EndIf
    GUICtrlSetData($Day,$daysplit[0]&" "&$daysplit[1])

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

    If $split[1]=59 Then
    $split[1]=00
    If $split[0]=23 Then
    $split[0]=00
    Else
    $split[0]+=1
    EndIf
    Else
    $split[1] += 1
    EndIf
    If StringLen($split[0])=1 Then $split[0]="0"&$split[0]
    If StringLen($split[1]=1) Then $split[1]="0"&$split[1]

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

    ;$split[1] += 1

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

    $aktuellezeit = StringFormat("%02d:%02d",$split[0],$split[1])
    GUICtrlSetData($Time,$aktuellezeit)
    EndFunc

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $kasse = 1
    AdlibRegister("_besucherzahl",$speed)

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

    Case $Button2
    $kasse = 0
    AdlibUnRegister("_besucherzahl")
    Case $speedcombo
    speed()

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

    EndSwitch
    WEnd

    [/autoit]