Wie erkennt ein Objekt ein anderes?

Stormblade

Mitglied
Hallöchen ich hab mal wieder eine allgemeine java-frage. Ich habe folgenden Code:

Java:
public class Klasse1 extends JFrame{
  public static void main(String[]args)
  {
    Klasse1 main = new Klasse1();
    // setSize, setVisible usw...
  }
  Klasse1()
  {
    //setSize etc...
    Klasse2 panel = new Klasse2();
    add(panel);
  }
}
 
public class Klasse2 extends JPanel{
  pubic Klasse2(){
    super();
    Figur Mario = new Figur(this);
    Mario.x = 200;
    Mario.y = 200;
    Mario.start();
    //übergabe einiger eigenschaften
  }
 
  public void paint(Graphics g){
    super.paint(g);
  }
}
 
public class Figur extends Thread{
  int x, y;
  int M_width, M_height;  //denen wird nachher noch ein wert übergeben...
  Graphics g = null;
  JPanel Mother = null; 
 
  public void paint(){
    Color c = Color.blue;
    g.setColor(c);
    g.fillRect(x, y, M_width, M_height);
  }
 
  public void Kollisionserkennung{
    boolean Überschneidung = Rect1.intersects(Rect2); //Rect1 und Rect2 wuden beide oben schon definiert
    if(Überschneidung){
      //irgendein Code
    }
  }
}

So, in dem Code fehlt jetzt einiges, aber meine Frage zielt darauf ab: Ich habe ja die Daten meines Rect1. Ich will ca. 10 weitere Rectangles im JPanel haben und frage mich, wie ich die Intersect-methode von Rect1 mit all diesen ausführen kann? So wie oben wird ja nur Rect1 mit Rect2 geprüft.
Wie kann ich also dieses eine "Rect2" wegbekommen und mit "allen Vierecken" ersetzen?
Wär richtig froh, wenn sich da jemand auskennt und mir helfen könnte 😀 😀
 
mehrere Objekte kann man in einer Liste organisieren,
Schleifen helfen bei Verarbeitung, hier etwa mehrfachen intersects()-Aufruf
 
ok, aber in intersects() muss doch in die klammer der name des 2ten rechtecks hinein. wenn ich angenommen 100 andere objekte habe, muss ich dann jedem der 100 stück einen anderen namen geben, oder gibts da ne bessere lösung?
mit listen meinst du sicher ein array oder wie?
 
mehrere Objekte kann man in einer Liste organisieren,
Schleifen helfen bei Verarbeitung, hier etwa mehrfachen intersects()-Aufruf

Was SlaterB meint ist, du kannst anstelle

Java:
Rect rect2=new Rect();

es so machen
Java:
List listOfRects <Rect>=new ArrayList<Rect>();

erstellen und dann durch diese Itterieren

Java:
for (Rect rect : listOfRects ){
    boolean Überschneidung = rect1.intersects(rect);
}

übrigens Objekte klein Schreiben ;-)
 
Ok, dann sag ich mal vielen dank bis hierher, ich werd mir die listen mal anschauen und ein wenig rumprobieren. Hat sich ja so angehört, wie wenn die hier besser geeignet wären 🙂
Ach ja, warum sagen mir alle, was ich groß und klein schreiben soll ^^ Darf man hier überhaupt was groß schreiben außer klassen? 😀
 
Ok, dann sag ich mal vielen dank bis hierher, ich werd mir die listen mal anschauen und ein wenig rumprobieren. Hat sich ja so angehört, wie wenn die hier besser geeignet wären 🙂
Ach ja, warum sagen mir alle, was ich groß und klein schreiben soll ^^ Darf man hier überhaupt was groß schreiben außer klassen? 😀

Bitte, ja Listen haben den Vorteil, die sind erweiterbar von der Länge und zwar ohne komplizierte verfahren ;-)
Das hat was mit der leserlichkeit des Codes zu tun, dem Compailer ist es egal, aber wenn andere Personen drüberschauen, erkennen sie sofort, was was ist.

So werden Klassen typischerweise geschrieben

Code:
MeineKlasse

und so Objekte

Code:
meinObjektDerKlasse

So kann jemand der dir hilft, der sich deinen Code anschaut sehen, ist das ein Objekt, eine Klasse,... auch die Namensgebung sollte sprechen sein, also nicht Klasse1, Klasse2, NochEineKlasse sondern eher was sie beinhalten Auto, Reifen,...
 
in Quaxli´s Tutorial wird das Konzept dieser Überschneidungen ganz gut erklärt. Dort wird zwar für die Intersection eine eingebaute Methode aus Graphics 2D verwendet, aber das tut nix zur sache.

Die Grundidee ist einfach zu prüfen, ob zwei Objekte gemeinsame Punkte haben.
 

Zurück
Oben