[Gelöst :D] Kugeln fliegen durch Zombies durch

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Horst der Biber

Betreff: [Gelöst :D] Kugeln fliegen durch Zombies durch

BeitragDi, März 13, 2007 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
überseh ich da einfach irgendwas oder kann man listen gar nicht verschachtelt durchlaufen lassen?

Code: [AUSKLAPPEN]
Local i:TZombie
Local j:TGeschoss

For j=EachIn geschosse
   j.update()
   If j.x<0 Or j.x>w*32-1 Then
      geschosse.remove(j)
   ElseIf map[(j.x)/32,(j.y)/32]>0 Then
      geschosse.remove(j)
   Else
      For i=EachIn zombies
         If i.hit(j.x,j.y) Then
            geschosse.remove(j)
            Exit
         EndIf
      Next
   EndIf
Next
j=Null
  • Zuletzt bearbeitet von Horst der Biber am Mi, März 14, 2007 14:51, insgesamt einmal bearbeitet
 

Dreamora

BeitragDi, März 13, 2007 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich sehe da nichts falsches.

Ich würde spontan drauf tippen, dass das hit nie true zurück gibt.

Natürlich immer angenommen das ganz oben im Code SuperStrict steht, sonst könnten die nicht funktionierenden Local reinpfuschen (da local nur dann wirklich local ist, wenn mindestens strict genutzt wird)

PS: Ich würde die struktur jedoch ein wenig anders ansetzen. Speicher in TMonster und TGeschoss den TLink den du bei Tlist.addlast bekommst.
Dann kannst du TLink.remove nutzen. Damit muss es nicht durch die ganze liste durchgehen um das objekt zu entfernen, was recht schnell zu einer nutzlosen Zeitverheizerei wird leider.

Wenn du dann auch noch die Listen direkt in den Types machst (global) bekommst du noch net ma mehr probleme mit der namensgebung Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Horst der Biber

BeitragDi, März 13, 2007 22:15
Antworten mit Zitat
Benutzer-Profile anzeigen
hit gibt schon true zurück und superstrict hab ich immer drin. schliesslich sterben die zombies ja. nur werden die geschosse dann irgendwie nicht gelöscht..

danke für den tipp mit dem link. wusste vorher gar nicht, dass bei remove die liste noch ma durchlaufen wird. geht aber trotzdem irgendwie nicht.

hab mal den ganzen source hochgeladen: http://horstderbiber.ho.funpic...former.rar

edit: sry tippfehler
  • Zuletzt bearbeitet von Horst der Biber am Di, März 13, 2007 23:43, insgesamt einmal bearbeitet
 

Dreamora

BeitragDi, März 13, 2007 22:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt nen 404 wenn man versucht darauf zuzugreifen

Was du jedoch testen könntest wäre:

Code: [AUSKLAPPEN]

Local i:TZombie
Local j:TGeschoss

.loopGeschosse
For j=EachIn geschosse
   j.update()
   If j.x<0 Or j.x>w*32-1 Then
      geschosse.remove(j)
   ElseIf map[(j.x)/32,(j.y)/32]>0 Then
      geschosse.remove(j)
   Else
      For i=EachIn zombies
         If i.hit(j.x,j.y) Then
            geschosse.remove(j)
            continue loopGeschosse
         EndIf
      Next
   EndIf
Next
j=Null
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Horst der Biber

BeitragMi, März 14, 2007 14:50
Antworten mit Zitat
Benutzer-Profile anzeigen
das mit continue geht ned, weil er dann wieder zum anfang der schleife geht und dann wird ja wieder auf j zugegriffen. ich denk ma du meinst goto. aber das geht bei strict nicht..

hab s noch ma anders aufgebaut und jetzt geht s. :D
Code: [AUSKLAPPEN]
      Local i:TZombie
      Local j:TKugel

      For j=EachIn geschosse
         j.update()
         If j.x<0 Or j.x>w*32-1 Then
            geschosse.remove(j)
         ElseIf map[(j.x)/32,(j.y)/32]>0 Then
            geschosse.remove(j)
         EndIf
      Next
      j=Null

      For i=EachIn zombies
         i.update()
         collidewithmap(TObjekt(i))

         For j=EachIn geschosse
            If i.hit(j.x,j.y) Then
               geschosse.remove(j)
            EndIf
         Next
         j=null

         If i.died Then
            zombies.remove(i)
            i=Null
         EndIf
      Next

danke für die hilfe und so^^

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group