Problem mit Types

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

schalli

Betreff: Problem mit Types

BeitragFr, Jul 11, 2008 13:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Type TFigur
  Field x,y,art
  Field umkr,atkr,live
End Type

For i = 1 To 20
  Figur.TFigur = New TFigur
Next

For Figur.TFigur = Each TFigur
  XF = Figur\x : YF = Figur\y : art = Figur\art : umkr = Figur\umkr : atkr = Figur\atkr
  For Figur.TFigur = Each TFigur
    If Figur\art <> art Then
      If Abs(XF-Figur\x) <= umkr Then
        If YF-Figur\y <=umkr Then
          Figur\live = Figur\live - atkr : Exit
        EndIf
      EndIf
    EndIf
  Next
Next


Erklärungen:

art: Ist Figur lieb/böse
umkr: alles in diesem Umkreis wird angegriffen
atkr: Kraft der Attacken
live: Leben der Figur

Frage:

Ich will prüfen ob eine Figur eine andere angreifen muss.
So schmeißt mich BB aber immer raus. Ich weiß auch, dass es an
den zwei verschachtelten For-Each schleifen liegt, aber nicht wie ich's besser machen kann. Question Exclamation

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Jul 11, 2008 13:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Die zweite For-Schleife muß logischer Weise einen anderen Variablennamen haben.

BeispielCode: [AUSKLAPPEN]
  For Figur2.TFigur = Each TFigur
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

schalli

BeitragFr, Jul 11, 2008 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Verstehe ich das richtig:

Ich müsste die gesamten Daten über die Figuren kopieren
und bei jeder änderung es in beide Instanzen schreiben.

Edit: GELÖST:

Code: [AUSKLAPPEN]
Type TFigur
  Field x,y,art
  Field umkr,atkr,live
End Type

t_anz = 20

For i = 0 To t_anz
  Figur.TFigur = New TFigur
Next
For i = 0 To t_anz
  Figur2.TFigur = New TFigur
Next


For Figur.TFigur = Each TFigur
  XF = Figur\x : YF = Figur\y : art = Figur\art : umkr = Figur\umkr : atkr = Figur\atkr
  For Figur2.TFigur = Each TFigur
    If Figur2\art <> art Then
      If Abs(XF-Figur2\x) <= umkr Then
        If YF-Figur2\y <=umkr Then
          Figur2\live = Figur2\live - atkr : Exit
        EndIf
      EndIf
    EndIf
  Next
Next

Figur2.TFigur = First TFigur

For Figur.TFigur = Each TFigur
  Figur\live = Figur2\live
  Figur2 = After Figur2
Next

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Jul 11, 2008 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Es reicht wenn du nur einmal 20 Figuren erstellst. Also:

Code: [AUSKLAPPEN]
For i = 1 To 20
  Figur.TFigur = New TFigur
Next


Ohne es jetzt ausprobiert zu haben, müsste aber auch schon folgendes funktionieren:

Code: [AUSKLAPPEN]
For i = 1 To 20
  New TFigur
Next


Wenn es geht (habs eben nicht ausprobiert), dann sollten übrige Fragen geklärt sein. Die zweite Variable bei den verschahtelten For-Schleifen werden eben nur zur identifizierung zweier Vergleichspaaren benötigt. Der Grund warum man bei New TFigur eine Variable vorstellen kann ist, dass meistens beim erstellen eines Type-Eintrages auch meistens Werte an selbigen übergeben werden.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group