Mehre Objekte in Zeitabständen bewegen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

WEBLink

Betreff: Mehre Objekte in Zeitabständen bewegen

BeitragSo, Jan 02, 2005 18:23
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,

erst mla der code

Code: [AUSKLAPPEN]
For exvar.extraimage = Each extraimage
   
   DrawImage ex1,exvar\xex,exvar\yex

   If MilliSecs() > yextime + 5 Then
   exvar\yex = exvar\yex + 1
   yextime = MilliSecs()
   EndIf

   If exvar\yex > 500 Then Delete exvar.extraimage


Next



Wenn ich diesen Code nehmen sollen alle mit Types generierten Objekte in den Gegeben Zeitabstand sich bewegen. Dies fuktioniert nicht. Es fällt nur eins und die anderem bleiben da wo sie erschaffen wurden.

Wenn ich den Code wiederum so benutze

Code: [AUSKLAPPEN]
For exvar.extraimage = Each extraimage
   
   DrawImage ex1,exvar\xex,exvar\yex

   exvar\yex = exvar\yex + 1

   If exvar\yex > 500 Then Delete exvar.extraimage


Next


Bewegen sich alle Objekte nach ihrer erschaffung leider ohne einerZeitlichen Begrenzung.
 

Blitzkrieg Bop

BeitragSo, Jan 02, 2005 18:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Also ich würde mir erstmal Gedanken über deine Bezeichnung für die Variablen machen. Steigst du da wirklich noch durch?
Mir fällt es jetzt schon schwer Very Happy
Nun zu deinem Prob:
Wenn ich das richtig verstanden habe, sollen sich die Objekte eine bestimmte Zeit bewegen, oder?
Da ich durch dein Code nicht so gut durchgestiegen bin, habe ich dir ein Beispiel gezaubert. Dein Fehler ist glaube ich, das du die ein oder andere Variable nicht als Feld deklarierst.
Guck dir mal an, ob du das verstehst und ob deine Probleme damit behoben sind:
Code: [AUSKLAPPEN]

Graphics 640,480,16,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()

Type objekt
   Field x#,y#
   Field timer
   Field time_left
End Type
For i = 1 To 10
   o.objekt = New objekt
   o\x# = Rand(10,630)
   o\y# = Rand(10,470)
   o\timer = MilliSecs()
   o\time_left = 0 ;Wie lange (Sekunden) sollen sich die Objekte bewegen <-- znächst 0
Next       

Repeat
Cls

Color 255,255,255
Text 0,0,"Drücke Enter, um die Objekte bewegen zu lasen, wenn sich kein Objekt bewegt"

If KeyHit(28)
   For o.objekt = Each objekt
      o\time_left = Rand(1,5)
   Next
EndIf        

For o.objekt = Each objekt
   Color 255,0,0
   Oval o\x#,o\y#,10,10
   
   If MilliSecs()-1000 => o\timer
      o\timer = MilliSecs()
      o\time_left = o\time_left - 1
   EndIf    

   If o\time_left > 0
      o\x# = o\x# + Cos( Rnd(0,360) )
      o\y# = o\y# + Sin( Rnd(0,360) )
   EndIf
   
   Color 255,255,255
   If o\time_left > 0
      Text o\x#,o\y#-10,o\time_left+" bewegen"
   EndIf    
Next    

Flip
Until KeyHit(1):End
~ Hey Ho Let's Go ~

Ralf

BeitragSo, Jan 02, 2005 18:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

das Zurücksetzen des Timers muss aus der For-Next-Schleife raus. Etwa so:
Code: [AUSKLAPPEN]
For exvar.extraimage = Each extraimage
   
   DrawImage ex1,exvar\xex,exvar\yex

   If MilliSecs() > yextime + 5 Then
   exvar\yex = exvar\yex + 1
   yextimereset=1
   EndIf

   If exvar\yex > 500 Then Delete exvar.extraimage


Next
If yextimereset=1
   yextimereset=0 : yextime = MilliSecs()
EndIf

So siollte es funktionieren.

Ralf

WEBLink

BeitragSo, Jan 02, 2005 19:05
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Blitzkrieg Bop

Jo, ich blick da noch durch ist ja nur für ein paar Extras die man einsammeln kan. Die X und Y position und das aussehen. Wink

@ ralf

Jo, hast recht daran lags.
Thx

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group