Seite 2 von 5
Verfasst: 12.05.2008 11:14
von BlueHoschi
@X360
Wenn Dir ein Sekundengenauer Timer reicht kannst Du auch:
Code: Alles auswählen
Procedure Timer()
Shared sekunde.w ; <- müßte auch mit Define gehen
Global timer.w
If sekunde < Second(Date()) And timer > 0 ; "Sekunde kleiner als Datums-Sekunden-Wert?
sekunde = Second(Date())
timer -1 ; Dann zieh was von "Timer" ab
ElseIf sekunde = 59 And Second(Date()) = 0 And timer > 0 ; oder der Wert 59 stand drin und geht jetzt auf 0
sekunde = Second(Date())
timer-1 ; dann zieh auch was ab
EndIf
EndProcedure
; innerhalb vom Haupt-Code folgender Aufruf:
Timer() ; an Anfang oder Ende
If Timer= 0
Timer = 50 ; Wert in Sekunden
; Und hier natürlich noch Andere Variablen die Du ändern möchtest
endif
If Timer > 0
Timer -1
endif
Ich persönlich finde das es für die meisten Spiele ausreicht, und das es recht kurz und übersichtlich ist.
MfG Blue
Verfasst: 12.05.2008 11:18
von KeyKon
Also ich persönlich machs immer mit ElapsedMilliseconds() weils kürzer is...
Verfasst: 12.05.2008 11:25
von BlueHoschi
Ja okay, war nich´ so gut...
haste Recht, sollte mir mehr angewöhnen erst genauer zu gucken was Andere so schreiben. Ist sogar viel kürze und einfacher.
Also @X360 vergiss mein Posting!!!
Werde selbst demnächst Timer mit ElapsedMilliseconds machen.
Verfasst: 12.05.2008 11:26
von KeyKon
Naja, deine Methode is halt übersichtlicher, aber man muss halt erst immer ne Menge rumkopieren wenn mans nich neu schreiben will und insbesondere bei kleinen Progs is ElapsedMilliseconds() die einfachere Wahl...
Verfasst: 12.05.2008 11:48
von X360 Andy
Also.....
Wie erwarte

hauts bei mir nicht richtig hin.
hier mal Code + neuste Version
http://rapidshare.com/files/114321204/N ... n.rar.html
Warscheinlich hab ich den Time Code falsch eingesetzt oder ?
Weil bei mir hängt sich das SPiel immer auf.
Die Spielfigur wird geladen aber mehr nicht.
Danach kommt keine Rückmeldung

Verfasst: 12.05.2008 12:01
von KeyKon
Naja, du kannst nicht einfach meine Schleife reinkopieren und hoffen es Funktioniert^^
Du musst den Code an deins anpassen...
Vor allem verwendest du die gleiche Variable so wies aussieht für mehrer Dinge (Die Zeit-Variable)...
Also machs am besten so:
Vor der Spielschleife schreibst du:
und dann in der Spielschleife
Code: Alles auswählen
If Stopzeit+30000 < ElapsedMilliseconds()
;Der Code der nach den 30 sek ausgeführt werden soll
EndIf
Verfasst: 12.05.2008 12:02
von BlueHoschi
Folgendes hast Du in Deiner Mainloop drin:
Code: Alles auswählen
Repeat
Delay(100)
If Zeit+30000 < ElapsedMilliseconds() ; Nach 30 Sekunden SOLLTE das Spiel dann vorbei sein.
MessageRequester("Fertig!","30 sek um...")
End
EndIf
ForEver
Also wird fortwährend dieser Loop ausgeführt und 100 ms gewartet.
Warum in so einer Schleife? Müßte doch auch so gehen druch das "If"-Abfrägelchen
//edit:
Du solltest auch noch irgendwas machen damit der MessageRequester: "Du hast jetzt 30 Sekunden um was zu machen" nur einmal erzeugt wird.
Verfasst: 12.05.2008 12:03
von KeyKon
Naja er hat einfach meinen Beispielcode reinkopiert...
Verfasst: 12.05.2008 12:08
von BlueHoschi
@KeyKon
Achso...
@X360
Kleiner Gedankenfehler im Eifer des Gefechts? Passiert, da kann ich Dir ein Lied von singen(Aber das möchtest Du bestimmt nicht...)
Verfasst: 12.05.2008 12:28
von X360 Andy
Danke geht wunderbar ...
