Zeitlimits setzen
Übersicht
BlitzBasic
Allgemein
GastBetreff: Zeitlimits setzen |
Antworten mit Zitat |
|
|---|---|---|
| Hi, ich will ein Jump & Run Spiel machen. Dass das Spiel nicht so einfach und primitiv wird, wollte ich Zeitlimits setzten. (x - min Zeit um das Level zu gewinnen). Die Zeit sollte oben angezeigt werden, und bei ablauf des Limits das Level neu starten. Kann mir jemand helfen? | ||
|
|
bruZard |
Antworten mit Zitat |
|---|---|---|
|
Code: [AUSKLAPPEN] level_secs = 5*60 ; 5min jetzt_zeit = MilliSecs() Graphics 640,480,16,2 SetBuffer BackBuffer() Repeat Cls msecs=MilliSecs() If msecs-jetzt_zeit>1000 And level_secs>0 level_secs=level_secs-1 jetzt_zeit=msecs EndIf If level_secs=0 Text 320,240,"Zeit abgelaufen",1,1 Else Text 320,240,"Noch "+Str(level_secs)+" Sekunden",1,1 EndIf Flip Until KeyHit(1) : End |
||
|
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32
User posted image |
||
|
|
TheShadowModerator |
Antworten mit Zitat |
|---|---|---|
| Auf blitzbase findest du Zeitfunktion die du für eine Pause sogar anhalten kannst... | ||
| AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 | ||
roaches |
Antworten mit Zitat |
|
|---|---|---|
|
tach,
bin totaler BB-anfänger und stöber hier mal so rum, daher hätt ich ein paar fragen: millisecs() - was bewirkt dieser befehl ? wieso steht im code oben in der ersten If_bedingung *jetzt_zeit=msecs* ? beide haben doch den gleichen wert (millisecs() ). wäre für antworten dankbar |
||
|
|
Travis |
Antworten mit Zitat |
|---|---|---|
| Der Befehl Millisecs() gibt eine Zahl zurück, die der Anzahl der Millisekunden entspricht, die seit dem Start von Windows vergangen sind. | ||
|
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
||
roaches |
Antworten mit Zitat |
|
|---|---|---|
|
wenn ich also am anfang des codes
start=millisecs() einfüge und am ende ende=millisecs() würde die zeile gesamtzeit=ende-start die zeit anzeigen, die das programm benutzt wurde (durch 1000 teilen ums in sekunden anzuzeigen)? trotzdem komm ichnich auf den sinn der ersten IF-Bedingung. wieso wird jetzt_zeit mit msecs gleichgestezt ? |
||
|
|
bruZard |
Antworten mit Zitat |
|---|---|---|
| Korrekt. | ||
|
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32
User posted image |
||
|
|
Hubsi |
Antworten mit Zitat |
|---|---|---|
| Weils in einer Schleife steht. jetzt_zeit wird also aktualisiert, da zuvor msecs die aktuelle Zeit von MilliSecs() zugeordnet wurde. | ||
| Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... | ||
|
|
Xenon |
Antworten mit Zitat |
|---|---|---|
|
Nicht Korrekt!!!!!!!
start-ende und nicht ende-start! |
||
|
|
TheShadowModerator |
Antworten mit Zitat |
|---|---|---|
| doch | ||
| AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 | ||
roaches |
Antworten mit Zitat |
|
|---|---|---|
|
gibts unter BB einen befehl diese Zeitangaben formatiert anzeigen zu lassen ?
So in der Art, dass 1 Sek. zb. als 0:00:1 oder 0:01 dargestellt wird oder wie löst man ein solches problem ? wäre für antworten dankbar |
||
|
|
Ctuchik |
Antworten mit Zitat |
|---|---|---|
|
Code: [AUSKLAPPEN] Function MillisecsToTime$(msecs%) Local seconds%,minutes%,hours% Local timestring$ msecs = msecs/1000 DebugLog msecs hours = (msecs - (msecs Mod 3600))/3600 DebugLog hours msecs = msecs - hours*3600 DebugLog msecs DebugLog (msecs Mod 60) minutes = (msecs - (msecs Mod 60))/60 DebugLog minutes msecs = msecs - minutes*60 DebugLog msecs seconds = msecs DebugLog seconds If hours < 10 timestring$ = "0"+Str$(hours)+":" Else timestring$ = Str$(hours)+":" End If If minutes < 10 timestring$ = timestring$ + "0"+Str$(minutes)+":" Else timestring$ = timestring$ + Str$(minutes)+":" End If If seconds < 10 timestring$ = timestring$ + "0"+Str$(seconds) Else timestring$ = timestring$ + Str$(seconds) End If Return timestring$ End Function mfG Ctuchik |
||
roaches |
Antworten mit Zitat |
|
|---|---|---|
|
hmm, wie gesagt, bin totaler newbi.
hab den code eingefügt. aber was bewirkt der code ? wie druck ich die zeitvariable aus in der gewünschten formatierung ? bisher sieht bei mir der code für die zeitberechnung so aus: start=MilliSecs() .sprungmarke Print zeit/1000 ende=MilliSecs() zeit=ende-start wie sorg ich jetzt für die formatierte ausgabe (0:00) |
||
|
|
Ctuchik |
Antworten mit Zitat |
|---|---|---|
|
Print MillisecsToTime$(zeit)
Erklärung: Der Code den ich geschrieben hab ist eine Funktion mit dem Namen MillisecsToTime$! Sie bekommt einen Parameter übergeben und zwar die Zeit in Millisekunden die du formatiert dargestellt haben möchtest! Du kannst sie zum Beispiel so aufrufen: Print MillisecsToTime$(65000) Dann wird 65000 Millisekunden umgerechnet und (dazu sit das print da Oder eben mit der Variablen für die Zeit Print MillisecsToTime$(zeit) mfG Ctuchik |
||
roaches |
Antworten mit Zitat |
|
|---|---|---|
|
vielen dank, jetzt leuchtets ein auch wenns wohl noch lange dauern wird, bis ich selbst auf son code komme... |
||
|
|
Ctuchik |
Antworten mit Zitat |
|---|---|---|
|
Jeder hat mal klein angefangen |
||
Übersicht
BlitzBasic
Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group
