Type in Type

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Gombolo

Betreff: Type in Type

BeitragMo, Jan 17, 2011 8:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie verwalte ich am besten ein Objekt mit Type's

Mit Type s kann ich ja eine Liste erstellen. Die List kann auch zur Laufzeit des Programms erweitert werden.

Code: [AUSKLAPPEN]
Type Gegner
   Field x
   Field y
End


Und diese List kann ich durchlaufen, aber:

Code: [AUSKLAPPEN]
Type Waffe
   Field x
   Field y
   Field power
End

Type Gegener
   Field x
   Field y
   Field energie
   Field waffe.Waffe
End

Wenn jeder Gegner eine unbestimmte Anzahl an Waffen haben kann, dann kann ich gar nicht bei jedem Gegner nur die Waffe in einer For EACH-Schleife durchlaufen. Weil BlitzBasic dabei die Ganze Liste der Waffen durchlaufen würde.

Code: [AUSKLAPPEN]
FOR EACH GEGNER
       GEGNER BEWEGEN
       FOR EACH WAFFE
             WAFFE WIRD ABGEFEUERT
       NEXT
NEXT


Diese Schleife würde gar nicht funktionieren, weil alle Waffen abgefeuert würden.

Wie könnte man dieses Problem lösen?
Heute ist der erste Tag vom Rest deines Lebens
http://gombolo.go.funpic.de/

Noobody

BeitragMo, Jan 17, 2011 8:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst hier eine eigene Liste basteln, welche du dann manuell ablaufen musst. Das ist zwar nicht ganz so einfach wie mit For Each, aber so ziemlich der einzige Weg in B3D für solche Probleme.

Hier ein kleines Beispiel, wie man so eine Liste umsetzen kann. Ein Gegner speichert die erste Waffe in seiner Waffenliste in waffe.Waffe. Jede Waffe speichert das nächste Element in der Liste in Successor.Waffe. Ist Successor gleich Null, so ist die Waffe das letzte Element in der Liste.

Die Beispielfunktion AddWeaponToGegner fügt eine neue Waffe an den Anfang der Waffenliste eines Gegners hinzu. PrintEachWeapon gibt alle Waffen eines Gegners aus und zeigt, wie so eine Schleife aussehen muss, damit man die Waffenliste durchlaufen kann.
BlitzBasic: [AUSKLAPPEN]
Type Waffe
Field x
Field y
Field power

Field Successor.Waffe
End Type

Type Gegner
Field x
Field y
Field energie
Field waffe.Waffe
End Type

Function AddWeaponToGegner( Gegner.Gegner, Waffe.Waffe )
Waffe\Successor = Gegner\Waffe
Gegner\Waffe = Waffe
End Function

Function PrintEachWeapon( Gegner.Gegner )
Local Waffe.Waffe = Gegner\Waffe

While Waffe <> Null
Print "X: " + Waffe\X + " Y: " + Waffe\Y + " Power: " + Waffe\Power

Waffe = Waffe\Successor
Wend
End Function
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

Gombolo

BeitragMo, Jan 17, 2011 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, so funktioniert es. Smile cu
Heute ist der erste Tag vom Rest deines Lebens
http://gombolo.go.funpic.de/

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group