Ich bräuchte nur den Teil eines Objekts

Von: , Frage gestellt am Mo, 22. Aug 2005

Hallo, Experten,

Die Fragestellung:
Für ein Spiel definiere ich ca. 25 Männchen, die viele Eigenschaften haben: x-y-Position, Größe, Haarfarbe, Geschwindigkeit u.v.m.

Zur Steuerung ihrer Bewegung errechne ich jeweils 5 zukünftige Positionen (damit sie einander ausweichen können). Dazu brauche ich aber nur einen Bruchteil der Information eines Männchen-Objekts (z.B. die x-y-Position).

Ich habe nun die folgenden Möglickeiten:

1. Ich rechne einfach mit den x,y-Werten usw., z.B. in Form eines Arrays. Nachteil: Unelegant, denn meine schönen Methoden zum Rechnen mit den Männchen-Objekten (z.B. abstand(m1, m2)) lassen sich dann auf die "zukünftigen" Männchen nicht anwenden.

2. Ich definiere statt eines 1D-Arrays mit 25 Männchen einen 6*25-2D-Array mit 25 Männchen und ihren je 5 zukünftigen Positionen. Aber ist das nicht eine ganz schöne Verschwendung, weil ich ja nur einen kleinen Teil der Info brauche ?

3. Ich definiere eine Klasse mit "Männchen light", in die ich nur die relavanten Information übertrage. Dann müsste ich die Methoden aber auf die light-Objekte beziehen, und auch dann mit light-Männchen arbeiten, wenn dies gar nicht erforderlich ist (damit die Mehoden passen).

Wie macht man so was am elegantesten ?

mfg
Klaus

P.S. Die Adresse der besagten Homepage ist http://www.kanitri.de

3 Antworten zu dieser Frage

  1. Antwort von nach 50 Minuten 1 hilfreich
    Re: Andere Architektur

    Hallo, Experten,

    Die Fragestellung:
    Für ein Spiel definiere ich ca. 25 Männchen, die viele
    Eigenschaften haben: x-y-Position, Größe, Haarfarbe,
    Geschwindigkeit u.v.m.

    Zur Steuerung ihrer Bewegung errechne ich jeweils 5 zukünftige
    Positionen (damit sie einander ausweichen können). Dazu
    brauche ich aber nur einen Bruchteil der Information eines
    Männchen-Objekts (z.B. die x-y-Position).

    da ja bei deiner Simulation die Bewegung im Vordergrund steht, und die Grafik eigentlich nur an 2. Stelle steht, würde ich das umstrukturieren

    Objekt bewegung;
    x,y -koordinaten
    x,y -richtung
    v - geschwindigkeit
    bewegung[] next - array der nächsten 5 Positionen
    Aussehen aus;(nur ein Zeiger)

    und Aussehen
    -haarfarbe Grösse ....
    als die 4 Standard-Männiken, die du hast

    für die Steuerung/ausweichen, empfehle ich die mal nach
    "Kollisionsabfrage" zu googlen, es gibt effektivere wege, als die next 5 Positionen zu bestimmen ;)

    • Antwort von nach 4 Stunden 0 hilfreich
      Re^2: Andere Programmiersprache

      Auch hallo. Objekt bewegung;
      x,y -koordinaten
      x,y -richtung
      v - geschwindigkeit
      bewegung[] next - array der nächsten 5 Positionen
      Aussehen aus;(nur ein Zeiger)

      und Aussehen
      -haarfarbe Grösse ....
      als die 4 Standard-Männiken, die du hast

      für die Steuerung/ausweichen, empfehle ich die mal nach
      "Kollisionsabfrage" zu googlen, es gibt effektivere wege, als
      die next 5 Positionen zu bestimmen ;)
      Alternativ könnte man sich einer 3D Beschreibungssprache bedienen, da diese solche Aktionen automatisch umsetzen können. Java3D wäre so ein Kandidat (benötigt aber auch eine Java3D Runtime, z.B. die von http://www.blackdown.org/java-linux/java-linux-d1.html)
      Der jeweilige Nutzer braucht diese dann aber auch.

      Hier ein paar links: http://www.grafikprogrammierung.de
      http://www.sys-con.tv/ (suche nach Java3D) , http://www.j3d.org

      HTH
      mfg M.L.

  2. Antwort von nach einem Tag 0 hilfreich
    Re: Ich bräuchte nur den Teil eines Objekts

    Hallo Klaus,
    wäre es nicht am einfachsten die Methoden ( wie z.B. abstand als Methode der Männchenklasse zu nehmen, so daß du dann m1.abstand(m21);
    oder m1.abstand(x,y) hast.

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!