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:
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.
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 ?
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).
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
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.
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.