type-eigenschaften

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Vidde

Betreff: type-eigenschaften

BeitragMi, März 11, 2009 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
habe folgendes problem: es sollen 10 autos im kreis fahren (mit unterschiedlicher geschwindigkeit). wenn das hintere auto schneller fährt als das davor, soll es zum unfall und somit zur änderung des kofferraum- und des motorraumwert kommen. (kettenreaktion durch auffahrunfall bitte nicht beachten - kreis ist groß genug).

jetzt weiß ich nicht genau wie das mit "After" und "Before" umsetzen soll.

Code: [AUSKLAPPEN]
SeedRnd MilliSecs()

Graphics 500,900

Type TAuto
  Field Schwackewert
  Field Kofferraum
  Field Motorraum
  Field Geschwindigkeit
End Type

Global Auto.TAuto

For i = 1 To 10
  Auto = New TAuto

  Auto\Schwackewert = 10000
  Auto\Kofferraum = 500
  Auto\Motorraum = 700
  Auto\Geschwindigkeit = Rnd(0,50)
Next

For Auto.TAuto = Each TAuto
  Print Auto\Geschwindigkeit
  Print Auto\Kofferraum = Auto\Kofferraum - (Auto\Geschwindigkeit - After Auto\Geschwindigkeit)
  Print Auto\Motorraum = Auto\Motorraum - (Before Auto\Geschwindigkeit - Auto\Geschwindigkeit)
  Print ""
Next
Gern der Zeiten gedenk ich, als alle Glieder gelenkig - bis auf eins. Diese Zeiten kehren nie wieder, steif sind nun alle Glieder - bis auf eins.

Tennisball

BeitragMi, März 11, 2009 15:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal würde ich vorschlagen, du machst eine Konstante Anzahl_autos oder so.

Das müsste klappen:
Code: [AUSKLAPPEN]
Const anzahl_autos = 9  ;immer bei 0 anfangen ;-)

...

dg = 0  ;durchgegangene Autos

for t = each auto
  if dg = anzahl_autos-1 then exit  ;Wenn alle Autos außer das letzte (-1) durchgegangen wurden, aufhören.
  ges1 = t\geschwindigkeit
  t = after t
  ges2 = t\geschwindigkeit
  t = before t
  if ges2 > ges1 then unfall()
  dg = dg + 1
next


Code nicht getestet, sollte klappen.

mfG

Vidde

BeitragDo, März 12, 2009 11:28
Antworten mit Zitat
Benutzer-Profile anzeigen
bekomme es noch nicht so hin wie gewünscht, aber trotzdem danke erst mal.
Gern der Zeiten gedenk ich, als alle Glieder gelenkig - bis auf eins. Diese Zeiten kehren nie wieder, steif sind nun alle Glieder - bis auf eins.

FireballFlame

BeitragDo, März 12, 2009 13:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso nimmst du Types, wenn du schon vorher weißt, dass es genau 10 Autos sind?
Egal - falls die Koffer- und Motorraum-Werte als HP zu verstehen sind, würde ich es so machen:
Code: [AUSKLAPPEN]
SeedRnd MilliSecs()

Graphics 500,900

Type TAuto
   Field Schwackewert
   Field Kofferraum
   Field Motorraum
   Field Geschwindigkeit
End Type

Global Auto.TAuto

Local i
For i = 1 To 10
   Auto = New TAuto
   
   Auto\Schwackewert = 10000
   Auto\Kofferraum = 500
   Auto\Motorraum = 700
   Auto\Geschwindigkeit = Rnd(0,50)
Next


Local atemp.TAuto
For Auto.TAuto = Each TAuto
   ;[Block] Kollisionsprüfung
   If First TAuto<>Last TAuto      ; bei nur einem Auto kann man sich's schließlich sparen
      If Auto=Last TAuto Then atemp=First TAuto Else atemp=After Auto      ; nächstes Auto im Kreis (fährt hinter dem aktuellen)
      If atemp\Geschwindigkeit > Auto\Geschwindigkeit Then Auto\Kofferraum = Auto\Kofferraum-(atemp\Geschwindigkeit-Auto\Geschwindigkeit)
      If Auto=First TAuto Then atemp=Last TAuto Else atemp=Before Auto   ; voriges Auto im Kreis (fährt vor dem aktuellen)
      If Auto\Geschwindigkeit > atemp\Geschwindigkeit Then Auto\Motorraum = Auto\Motorraum-(Auto\Geschwindigkeit-atemp\Geschwindigkeit)
   End If
   ;[End Block]
   
   
   Print Auto\Geschwindigkeit
   Print Auto\Kofferraum
   Print Auto\Motorraum
   Print ""
Next
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group