Zeitlimits setzen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Gast

Betreff: Zeitlimits setzen

BeitragSo, Jan 18, 2004 15:27
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

BeitragSo, Jan 18, 2004 15:37
Antworten mit Zitat
Benutzer-Profile anzeigen
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

TheShadow

Moderator

BeitragSo, Jan 18, 2004 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Auf blitzbase findest du Zeitfunktion die du für eine Pause sogar anhalten kannst...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

roaches

BeitragMi, Feb 11, 2004 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Feb 11, 2004 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Feb 11, 2004 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Feb 11, 2004 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Korrekt.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Hubsi

BeitragMi, Feb 11, 2004 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Feb 11, 2004 21:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicht Korrekt!!!!!!!


start-ende

und nicht

ende-start!

TheShadow

Moderator

BeitragMi, Feb 11, 2004 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
doch
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

roaches

BeitragMi, Feb 11, 2004 23:16
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Feb 11, 2004 23:41
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Feb 11, 2004 23:47
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Feb 11, 2004 23:52
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Smile) angezeigt: 00:1:05

Oder eben mit der Variablen für die Zeit

Print MillisecsToTime$(zeit)

mfG Ctuchik
 

roaches

BeitragDo, Feb 12, 2004 0:00
Antworten mit Zitat
Benutzer-Profile anzeigen
vielen dank, jetzt leuchtets ein Wink

auch wenns wohl noch lange dauern wird, bis ich selbst auf son code komme...

Ctuchik

BeitragDo, Feb 12, 2004 0:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Jeder hat mal klein angefangen Wink

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group