Seite 1 von 2
Vernünftiges Timer Beispiel
Verfasst: 08.12.2008 00:51
von X360 Andy
Seitdem ich angefangen habe mit PB versuche ich mich an Timern / Countdowns.
Bis Heute hab ich es noch nicht hinbekommen einen Timer einzubauen der von 5 auf 0 runterzählt.
Ich hab denke ich einen ganz großen Denkfehler drin.
Ich hab mir Beispiele auf purearea.net,hier im Forum und auch aus anderen Codes abgeschaut.
Aber ich bekomms nicht hin.
Ich möchte einfach ein einfaches Beispiel haben wo der Debuger mir bei 5 ,4,3,2,1 Sekunde eine Meldung rausgibt.
Ich wäre verdammt dankbar wenn jemand das kurz als Beispiel machen könnte (da ich denke es sehr einfach ist

)
Verfasst: 08.12.2008 00:58
von STARGÅTE
Verfasst: 08.12.2008 01:05
von X360 Andy
Danke aber bringen tut mir das eigentlich nichts.
Brauche einen Spieltimer ....( ok das hätte ich vieleicht schreiben sollen ? ) und eine delay() hält das Spiel/Program ja an
Trotzdem danke

Verfasst: 08.12.2008 01:30
von KeyKon
Hier, sicher nich das optimalste, aber ziemlich simpel gehalten:
Code: Alles auswählen
OpenConsole()
start = ElapsedMilliseconds()
count = 5
Repeat
Delay(10) ;Programmcode...
If ElapsedMilliseconds()-start >= 1000 ;1 Sekunde rum
PrintN(Str(count))
count-1
start = ElapsedMilliseconds()
EndIf
Until count = 0
Repeat
Delay(10)
Until Inkey() ;Warten bis der "Button" gedrückt wurde
time = ElapsedMilliseconds()-start
PrintN("Du hast "+StrF(time/1000,2)+" Sekunden gebraucht...")
Delay(5000)
Verfasst: 08.12.2008 01:31
von Kaeru Gaman
Verfasst: 08.12.2008 01:50
von Kaeru Gaman
naja... wenn's um X360-Mathe geht, ne Fensteroberfläche ist wieder was anderes als ein "Game Timer"...
sowas zum Bleistift:
Code: Alles auswählen
#timerduration = 1000
#countdown = 10
OpenWindow(0, 0, 0, 128,80, "Ticker")
CreateGadgetList(WindowID(0))
TextGadget ( 0, 8, 4, 112, 28, Str( #countdown ), #PB_Text_Center|#PB_Text_Border )
ButtonGadget ( 1, 8, 44, 112, 28, "New Count")
timer = ElapsedMilliseconds() + #timerduration
count = #countdown
SetGadgetText( 0, Str( count ) )
counting = 1
MessageBeep_(#MB_ICONQUESTION)
Repeat
Event = WaitWindowEvent(50)
EventGad = EventGadget()
If Event = #PB_Event_Gadget
If EventGad = 1
timer = ElapsedMilliseconds() + #timerduration
count = #countdown
SetGadgetText( 0, Str( count ) )
counting = 1
MessageBeep_(#MB_ICONQUESTION)
EndIf
EndIf
If Event = #PB_Event_CloseWindow
Quit = 1
EndIf
If ElapsedMilliseconds() > timer And counting = 1
timer + #timerduration
If count > 1
MessageBeep_(#MB_ICONINFORMATION)
count -1
Else
MessageBeep_(#MB_ICONERROR)
counting = 0
count = 0
EndIf
SetGadgetText( 0, Str( count ) )
EndIf
Until Quit = 1
Verfasst: 08.12.2008 02:03
von Kiffi
Kaeru Gaman hat geschrieben:sowas zum Bleistift:
hier nochmal als WinAPI-Variante:
Code: Alles auswählen
Procedure CountDown()
If GetGadgetText(0) = "0"
KillTimer_(WindowID(0), 0)
MessageRequester("", "Möp")
ProcedureReturn
EndIf
SetGadgetText(0, Str(Val(GetGadgetText(0)) - 1))
EndProcedure
OpenWindow(0, 0, 0, 128,80, "Ticker")
CreateGadgetList(WindowID(0))
TextGadget ( 0, 8, 4, 112, 28, "10", #PB_Text_Center|#PB_Text_Border )
ButtonGadget ( 1, 8, 44, 112, 28, "New Count")
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
If EventGadget() = 1
SetGadgetText(0, "10")
KillTimer_(WindowID(0), 0)
SetTimer_(WindowID(0), 0, 1000, @CountDown())
EndIf
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
Grüße ... Kiffi
Verfasst: 08.12.2008 17:39
von X360 Andy
Boah was ist den mit mir los , ich versuche grad Kiffis Code in mein X360 Mathe einzubauen aber ich scheitere auf allen Punkten.
Ich glaub ich hab heute schon zu viel gerechnet
Ich geh erstmal was anders machen, und versuche es später erneut
Danke euch allen

Verfasst: 09.12.2008 03:43
von KeyKon
X360 Andy hat geschrieben:Boah was ist den mit mir los , ich versuche grad Kiffis Code in mein X360 Mathe einzubauen aber ich scheitere auf allen Punkten...
Ich finde das ganze "per Hand" mit ElapsedMilliseconds() eh viel einfacher...
@CnC: Ich finde es auch ziemlich billig das das so is, das hat mich schon bei RA2 auf meinem Alten AMD 900Mhz gestört sobald es mehr als 4 Parteien waren haste noch ungefähr halbe FPS und halben Speed gehabt, inzwischen wird das ganze natürlich durch die Graka limitiert aber de Effekt is der gleiche, ich bezweifel das die Probleme hatten das einzubauen kann mir aber trotzdem keinen Grund dafür erklären. Es is auf jeden Fall schade da ich ein großer C&C-Fan bin und gerne im Netz spiele, aber manche Grafiksüchtigen meinen halt sie müssen es mit 8x AA spielen und dann kommts sowas raus -.-
So damit hätte ich mal wieder meinen Unmut über das Spiel geäußert
Verfasst: 09.12.2008 03:49
von Kaeru Gaman
yo eben.
Kiffis Beispiel ist gut, aber du brauchst nicht unbedingt nen Timer-Callback via API.
schau dir meins mal genauer an, das ist so ziemlich die einfachste Lösung für ne WindowEvent-Schleife mit Timer.