MilliSecs() - 3 sec anzeigen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

N0X

Betreff: MilliSecs() - 3 sec anzeigen

BeitragSa, Feb 13, 2010 2:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey!
Ich möchte (je nach Level) immer wenn man ein neues Level erreicht hat, dass 3 Sekunden lang das Level angezeigt wird und dann wieder verschwindet.
Habe das aber nur so hinbekommen, dass das nur beim ersten Level hinhaut, weiß auch wieso, da ja nur einmal von Start die Zeit gemessen wird und diese niewieder erreicht wird (schon vorrüber). Man müsste also irgendwie MilliSecs() zurücksetzen. (Oder? Wenn nicht, belehrt mich eines Besseren.)

Hier mein Ansatz: (nur Codeausschnitt!)
Code: [AUSKLAPPEN]
Local levelUp = MilliSecs()+3000

While Not KeyDown(1)
   Select quest
      Case 1
         If levelUp > MilliSecs() Then Text 100,100,"LEVEL 1"
      Case 2
         If levelUp > MilliSecs() Then Text 100,100,"LEVEL 2"
      Case 3
         If levelUp > MilliSecs() Then Text 100,100,"LEVEL 3"
      Case 4
         If levelUp > MilliSecs() Then Text 100,100,"LEVEL 4"
   End Select
Wend
End


Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Eingeproggt

BeitragSa, Feb 13, 2010 2:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
levelUp = MilliSecs()+3000


Diese Zuweisung solltest du nicht am Anfang des Spiels machen (Vor der Hauptschleife) sondern immer dann wenn quest verändert wird.

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Skabus

BeitragSa, Feb 13, 2010 2:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Eigentlich nicht!

MilliSecs() gibt ja die Millisekunden seit Systemstart an.
Somit müsstest du immer MilliSecs()+3000 setzen, bei jedem Schleifendurchlauf.
Oder eben immer dann wenn deine quest-Variable verändert wird.je nachdem, zu
welchem Zeitpunkt du diese 3 Sekunden benötigst.

In deinem Beispiel setzt du levelUp nur einmal auf MilliSecs()+3000, damit speicherst du aber
nur den MOMENT der zu dem Zeitpunkt aktiv ist.

Wenn du also willst, dass es IMMER 3 Sekunden angezeigt wird, musst du innerhalb deiner Hauptschleife
auch deine Variable MilliSecs()+3000 wieder neu "berechnen" lassen.

Also einfach levelUp = MilliSecs()+3000 in die Hauptschleife, Aktualisierungbedingung mit If-Verzweigung drum und dann müsste das problemlos funktionieren...

MfG Ska
"In einer so verrückten Welt, kann man um in ihr zu überleben nur eines tun, nämlich eben jenes werden: Ein Verrückter!" -Selbstzitat

aktuelles Projekt: Aves Certim - Der Galgen ist nicht weit!
Ein SNES-RPG mit Handels- und Wirtschaftselemente.
Infos?Hier: http://www.blitzforum.de/worklogs/234/
Besucht meine Seite:
www.seelenfriedhof.de.vu

N0X

BeitragSa, Feb 13, 2010 2:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Das liebe ich an diesem Forum, selbst um kurz nach 1 bekommt man noch Antworten. Smile
Mein Problem, ich weiß nicht wie die Bedingung aussehen könnte (um MilliSecs() in der Hauptschleife).
Hm.

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Eingeproggt

BeitragSa, Feb 13, 2010 2:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Liegt es an der Uhrzeit oder ...?

Skabus, ich bin da nicht deiner Meinung. Wenn du in der Hauptschleife immer levelUp = MilliSecs()+3000 setzt, dann ist If levelUp > MilliSecs() Then IMMER erfüllt - aber auch wenn 3 Sekunden schon vergangen sind...

Ich bleib bei meiner ersten Antwort - NOX, das kriegst du doch noch hin, deinen Levelwechsel (wie der auch immer aussieht - jedenfalls musst du ihn schon haben Wink ) noch um die Zeile levelUp = MilliSecs()+3000 zu ergänzen? Das wäre die ganze "Zauberei" - und sollte ich mich irren so verzeihe man mir - ich werds dann morgen lesen weil ich jetzt ins Bett geh.

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

N0X

BeitragSa, Feb 13, 2010 2:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, weiß selbst nicht worans nun liegt.
Problem ist: Ich muss ja irgendwie prüfen ob sich Variable "level" verändert hat, und dann "levelUp" ergänzen, und danach, das Level anzeigen.
Und, naja, das krieg ich nicht hin Embarassed

Hm.

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

ToeB

BeitragSa, Feb 13, 2010 5:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich probies mal :

Code: [AUSKLAPPEN]
If quest_change = 1 then ;wenn die Quest geändert wird
quest_change = 0 ;Wieder auf 0 setzten damit die zeit nur einmal gesetzt wird
time = Millisecs() +3000
endif


quest_change musst du nur einmal auf 1 setzten, wenn zum beispiel die punktezahl erreicht ist, also so (statt punkte einfach bedingung einfügen) :
Code: [AUSKLAPPEN]
If Punkte > 1000 and quest_change = 0
quest_change = 1
endif


Und damit hat sichs !

Und nochwas : wenn du sowiso den Text immer mit der questzahl hinschreibst kannst du auch gleich schreiben
Code: [AUSKLAPPEN]
If time <= Millisecs() then Text 400,300,"LEVEL "+Quest,1,1


Das statt der Select/Case struktur... nur mal so als tipp Wink

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

N0X

BeitragSa, Feb 13, 2010 16:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo, cool danke!
Hätte ich eigentlich auch selbst drauf kommen können...

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group