Schleife erst nach Zeitabstand weiterführen[Done]

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Garik

Betreff: Schleife erst nach Zeitabstand weiterführen[Done]

BeitragDo, Jul 27, 2006 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
da ich das Problem selber nicht lösen konnte, werde ich euch mal um Rat fragen.
Es geht um Folgendes:
In folgendem Code will ich, dass die Teilchen nicht alle aufeinmal nach oben gehen, sondern dass ein ZEitabstand dazwischen ist. Im BlitzBasic-Buch von René Meyer hab ich erfahren, dass man mit der Funktion Millisecs() die zeitspanne errechnen kann, aber ich weiß noch nicht genau, wie ich das machen soll.

Code: [AUSKLAPPEN]

For a=0 To 99
   teilchen(a,0)=Rand(600,650)      ;zufällige X-Pos
   teilchen(a,1)=1024                    ;Y-Pos
   teilchen(a,2)=Rand(1)                ;0 für positives, 1 für negatives teilchen
   teilchen(a,3)=1            ;existiert Teilchen noch?
Next
   
(hier fängt die hauptschleife an)
...........

For a=0 To 99
      Anfang=MilliSecs()
      
                  ;teilchen werden gezeichnet
                  If teilchen(a,2)=0 And teilchen(a,3)=1 Then            
         DrawImage positiv,teilchen(a,0),teilchen(a,2)      
      End If                                       
      If teilchen(a,2)=1 And teilchen(a,3)=1  Then         
         DrawImage negativ,teilchen(a,0),teilchen(a,1)      
      End If                                       
      
      ;teilchen bewegem sich nach oben
                  teilchen(a,1)=teilchen(a,1)-Geschw                  
      
      
      Ende=MilliSecs()
      Zeitspanne=Ende-Anfang
                  (hier soll jetzt rein, dass die schleife erst weitergeführt wird, wenn  eine   sekunde vergangen ist)
      
   Next
.........
(hier hört die hauptschleife auf)


Danke im Voraus
  • Zuletzt bearbeitet von Garik am Sa, Jul 29, 2006 15:16, insgesamt einmal bearbeitet

Kabelbinder

Sieger des WM-Contest 2006

BeitragDo, Jul 27, 2006 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
If Zeitspanne<1000 Then Delay 1000-Zeitspanne
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

JustTheBest

BeitragDo, Jul 27, 2006 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Code: [AUSKLAPPEN]

;genau vor der Hauptschleife:
starttimer = Millisecs()


;In der Hauptschleife:
Repeat
Until Millisecs()-starttimer > 1000
starttimer = Millisecs()



Müsste so klappen!

EDIT: Mit Delay würde ichs persönlich, wens was größeres wird, nicht machen!
mfg

P.s.: Bayern hat morgen Ferienbeginn, und ich hatte heute keine Schule! OleeOleeOleeOleeee! Laughing Razz Very Happy
www.mas-online.de.gg
__________

Liegt der Camper tot im Keller war der Rusher wieder schneller. Liegt der Rusher tot daneben hat der Camper nen Kollegen!

SpionAtom

BeitragDo, Jul 27, 2006 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Das klingt irgendwie nach einem Fall für Arrow WaitTimer(m)
Mach dich mal in der OH darüber schlau.
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

Kabelbinder

Sieger des WM-Contest 2006

BeitragFr, Jul 28, 2006 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
@ JustTheBest: Warum nicht? Garik möchte die Schleife doch >verzögern< deine Methode ist eigentlich nur eine Umschreibung des Delay-Befehls.
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

Jolinah

BeitragFr, Jul 28, 2006 21:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Delay wäre in dem Fall eigentlich besser, weil es den Prozess unterbricht und sich dadurch die CPU-Auslastung des Programms sogar verringert Wink

Du kannst auch 2 For-Schleifen machen, eine wird nur jede Sekunde ausgeführt und verschiebt die Teilchen nach oben, die andere Schleife wird immer ausgeführt und zeichnet die Teilchen:


Code: [AUSKLAPPEN]

start = millisecs()

;Hauptschleife des Programms
Repeat
  If millisecs() - start > 1000
    For a = 0 to 99
      ;Teilchen um 1 hochsetzen
    Next

    start = millisecs()
  End If

  For a = 0 to 99
    ;Teilchen zeichnen
  Next
Until Keyhit(1)
 

Garik

BeitragSa, Jul 29, 2006 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Antworten, aber ich hatte mich falsch ausgedrückt, was mein Problem betraf. Dies ist aber nun schon gelöst dank einem anderen User. Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group