# Kollision die 100ste



## Fab1 (23. Dez 2011)

Hi zusammen,

ich weiß das Thema wurde schon oft genug behandelt und hab mir auch bereits den ein oder anderen Thread angeschaut. Trotz allem weiß ich keine Lösung.

Also ich habe 2 bewegende Rectangle zur Kollisionsüberprüfung habe ich diese in eine geschachtelte Schleife gesteckt und prüfe mithilfe von intersects auf eine Schnittstelle, wenn diese besteht, werden beide Rectangles gelöscht.

Mein Problem, die Kollision wird nicht immer erkannt sondern nur manchmal. Hab bereits ein ähnliches Beispiel hier im Forum gefunden, der das gleiche Problem hatte, nur leider half es bei mir nichts.


Ich poste mal nur ein Code Fetzen, solltet ihr mehr Code benötigen schreit bitte 

Für Verbesserungen bin ich natürlich immer offen. Hab noch keine Erfahrung in der Sparte, vielleicht ist dies ja ein häufigeres Problem. Danke.


```
public void prüfeKollisionRakete(){
		
		Enumeration<Rakete> r = raketeListe.elements(); // raketeListe und meteorliste ist ein Vector
		Enumeration<Meteor> m = meteorliste.elements();
		
		
		while(r.hasMoreElements())
		{
			Rakete rak = r.nextElement();
			
			while(m.hasMoreElements()){
				Meteor meteor = m.nextElement();
				
				
				if(rak.intersects(meteor)){
					
					meteorliste.remove(meteor);
					raketeListe.remove(rak);
					punkte +=50;
					punkteAnzeige.setText("Punkte: " + punkte);	
				}
				if(rak.y<10){
					raketeListe.remove(rak);
				}
			}	
		}	
	}
```


----------



## pro2 (23. Dez 2011)

Hast du in beiden Klassen die Funktion?


----------



## eRaaaa (23. Dez 2011)

???:L:autsch: Ziemlich spät schon, aber.... ???:L:autsch:
Du prüfst doch gar nicht *jede* Rakete wirklich mit *jedem* Meteor ?! 

Sagen wir mal du hast 3 Raketen und 3 Meteore (ist das die Mehrzahl? )
Dann vergleichst du nur die erste Rakete mit allen 3 Meteoren, danach, wenn du bei der nächsten Rakete bist, liefert dir m.hasMoreElements() allerdings false, weil du ja schon komplett durch die Meteoren durch bist...
Nimm keine Enumerations, die sucken eh


----------



## Landei (23. Dez 2011)

eRaaaa hat gesagt.:


> Nimm keine Enumerations, die sucken eh



Ein weiser Rat.


----------



## Fab1 (23. Dez 2011)

eRaaaa hat gesagt.:


> ???:L:autsch: Ziemlich spät schon, aber.... ???:L:autsch:
> Du prüfst doch gar nicht *jede* Rakete wirklich mit *jedem* Meteor ?!
> 
> Sagen wir mal du hast 3 Raketen und 3 Meteore (ist das die Mehrzahl? )
> Dann vergleichst du nur die erste Rakete mit allen 3 Meteoren, danach, wenn du bei der nächsten Rakete bist, liefert dir m.hasMoreElements() allerdings false, weil du ja schon komplett durch die Meteoren durch bist...


Ok, das klingt logisch  vielen Dank.




> Nimm keine Enumerations, die sucken eh



Mein Lehrer wollte das so. Was sollte man stattdessen nehmen? ArrayList? 



> Hast du in beiden Klassen die Funktion?


Das steht bei mir einmal so in der in der klasse und diese Methode wird in der Spielschleife aufgerufen. Weiß allerdings gerade nicht auf was du hinaus willst.


----------



## xehpuk (24. Dez 2011)

Fab1 hat gesagt.:


> Was sollte man stattdessen nehmen?


Einen Iterator.


----------

