Timer-Problem

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

globecrash

Betreff: Timer-Problem

BeitragSa, Feb 21, 2004 22:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo

ich möchte nen timer machen, dh. dass man 30 sekunden für das spiel hat .das hab ich auch gemacht, es funktioniert aber nicht so wie es sollte.
Code: [AUSKLAPPEN]

timer = Createtimer(30)
if timer = end then print "game over"


mit welchem befehl sagt man-> wenn timer fertig dann soll er game over schreiben???
vielen dank im vorraus
mfg Fu

D2006

Administrator

BeitragSa, Feb 21, 2004 22:55
Antworten mit Zitat
Benutzer-Profile anzeigen
so zum Beispiel:

Code: [AUSKLAPPEN]

start=MilliSecs()

Repeat
...
If MilliSecs() > start + 30000 Then ...
...
Forever


CreateTimer ist hier nicht zu empfehlen. Man braucht den mehr für
periodisch auszuführende Befehle oder FPS-Begrenzung.

MfG

Hip Teen

BeitragSa, Feb 21, 2004 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ähm, der timer funktioniert anders. Ein timer sendet in regelmäßigen abständen x mal pro sekunde ein Signal. Hier ist x 30Code: [AUSKLAPPEN]
timer=creattimer(30)
Dann musst du an einer Stelle im Code, natürlich in einer Schleife, den Befehl Waittimer mit dem erstellten timer setzenCode: [AUSKLAPPEN]
waittimer(timer)
. Damit kannst du z.B. dein Spiel so abbremsen, damit dein Spiel auch in 10 Jahren ohne Probleme läuft. Was du erreichen möchtest machst du Folgerndermaßen. Du benutzt Millisecs()! Am Anfang fügt du die ZieleCode: [AUSKLAPPEN]
Anfangszeit=Millisecs()
. Dann musst du folgendermaßen überpüfen, ob schon 30 Sekunden vorbei sind
Code: [AUSKLAPPEN]
If Anfangszeit+30000 < Millisecs() Then gameover

Ich hoffe das war jetzt nicht zu schlecht formuliert Rolling Eyes

Edit: Verdammt, zu langsam Mad Evil or Very Mad
Edit²: was einem nicht so alles in der Eile passiert Rolling Eyes
  • Zuletzt bearbeitet von Hip Teen am Sa, Feb 21, 2004 23:39, insgesamt einmal bearbeitet

D2006

Administrator

BeitragSa, Feb 21, 2004 23:00
Antworten mit Zitat
Benutzer-Profile anzeigen
nicht nur zu langsam, auch mit Fehlern!

Überprüf' deinen letzten Codeschnipsel!!!!!

MfG

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Feb 21, 2004 23:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi , hab da noch was gefunden
Code: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()

Endzeit = MilliSecs() + (90 *1000); sec *1000 = millisecs

Repeat

   restzeit =  Endzeit  - MilliSecs()
   If restzeit  < 0 Then End

   
   Text 100, 20, restzeit + " millisekunden
   Text 100,100,Zeitausgabe$(restzeit)
   Flip:Cls
Until KeyHit(1)

Function Zeitausgabe$(Zeit_gesamt)
; Global   .... nichts
;restzeit =  Endzeit  - MilliSecs()
   sekunden%  =   Zeit_gesamt /1000
   millisekunden% =  Zeit_gesamt -sekunden*1000  ; immer 3 stellen
   minuten% = sekunden/60
   sekunden = sekunden -minuten *60
   Zeitstring$ = millisekunden
   While Len(Zeitstring$) < 3
       Zeitstring$= "0"+Zeitstring$
   Wend
   Zeitstring$ = ","+Zeitstring$  ;  ,123
   Zeitstring$ = sekunden  +Zeitstring$
   While Len(Zeitstring$) < 6
        Zeitstring$= "0"+Zeitstring$   ;
   Wend   ;  05,123
   Zeitstring$ = ":" +Zeitstring$; : 05,123
   Zeitstring$ = minuten +Zeitstring$
   While Len(Zeitstring$) < 9
        Zeitstring$= "0"+Zeitstring$   ;
   Wend   
   Zeitstring$= Left(Zeitstring$,8) ;Letzte 0 weg
Return Zeitstring$
End Function
einfach mal probieren !!
[BB2D | BB3D | BB+]
 

globecrash

BeitragSa, Feb 21, 2004 23:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo

Danke. Ich hab mir das kapitel über timer in renes buch 2 mal durchgelesen aber da hab ichs nicht so richtig verstanden und bei robstutorial wird glaube ich gar nicht erwähnt.danke nochmals.
mfg Fu
 

globecrash

BeitragSa, Feb 21, 2004 23:53
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo

es geht immer noch nicht, also der code
Code: [AUSKLAPPEN]

start = millisecs()
if millisecs > start+ 30000 then print "game over"


so habe ich das in meinem spiel hinein gemacht aber es geht nicht.
Wieso? es zeigt nicht game over an?!?!

danke im vorraus
mfg Fu

D2006

Administrator

BeitragSa, Feb 21, 2004 23:56
Antworten mit Zitat
Benutzer-Profile anzeigen
du musst

Code: [AUSKLAPPEN]

start= Millisecs()


außerhalb der Hauptschleife haben. ist doch logisch Rolling Eyes
MfG

Blatolo

BeitragSa, Feb 21, 2004 23:57
Antworten mit Zitat
Benutzer-Profile anzeigen
du musst das noch in eine schliefe tun, sonst durchläuft der das ja nur einmal und da stimmt dir überprüfung nicht und das programm wird beendet.
Also einfach die Überprüfung in ne schleife.
 

globecrash

BeitragSo, Feb 22, 2004 0:09
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo

also sagen wir das wäre mein ganzer code bzw spiel funktiniert es trotzdem nicht.Code: [AUSKLAPPEN]

repeat
start = Millisecs()
if Millisecs() > start 30000 then print "game over"
forever

wieso?
mfg Fu
ps: kann das daran liegen das ich die blitz2d demo habe?
 

graythread

BeitragSo, Feb 22, 2004 0:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
start = Millisecs()
repeat
if Millisecs() > start 30000 then print "game over"
forever



so tuts, lies dir das hier nochmal durch, genauso haben die dir das auch erklährt!
 

René Meyer

BeitragSo, Feb 22, 2004 5:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Und ein Plus wäre nicht schlecht.
www.blitzbasic.de | Das Buch zu Blitz Basic: www.schreibfabrik.de/txt/bbb

Xenon

BeitragSo, Feb 22, 2004 10:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn schon so, dann erspart ihm doch wenigstens dieses ewige addieren!

Code: [AUSKLAPPEN]
start = Millisecs() + 30000
repeat
if Millisecs() > start then print "game over"
forever

Blatolo

BeitragSo, Feb 22, 2004 10:42
Antworten mit Zitat
Benutzer-Profile anzeigen
@xenon
Dann würde ich die vari aber nicht start sondern eher ziel nennen da das ja die zeit ist bis zu der man zeit hat.

Und man sollte noch ein exit dranhängen sonst zeigt der das ja dauernd an, oder ein end wenn das programm dann komplett beendet werden soll.
 

graythread

BeitragSo, Feb 22, 2004 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Zeit_wenn_Programm_beendet= Millisecs() + 30000
repeat
   if Millisecs() > Zeit_wenn_Programm_beendet then
      print "game over"
      delay 1000
      end
   endif
forever



So, der läuft jetzt, damit is die Diskusion beendet hoffe ich;).
Falls noch Fragen sind, dann darfste sie natürlich noch stellen;).

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group