Moin,
ich habe eine Kretur-Klasse, eine Speziesklasse mit den Eigenschaften dieser Spezies (z.B Lebensdauer) und will nun eine Narungkettenklasse schreiben, in der festgelget ist welche Spezies welche frisst, und die einen Vector mit den Species enthält.
In der Speziesklasse habe ich einen nach Position geordneten Vector, der die jeweiligen einzelnen Kreaturen dieser Spezies enthält.
Die Kreatur-Klasse hat eine Methode fressen() und eine Methode gefressenwerden(). Die erste Methode setzt den Nahrungsvorrat der Kreatur hoch, die andere markiert sie als tot.
Eine Kreatur der einen Spezies frisst eine Beutekreatur nur, wenn sie auf dem selben Feld stehen, sprich, die selben Koordinaten haben.
Ich habe das so implementiert, damit ich mehrer Spezies machen kann und selber sie Jäger-Beute-Beziehungen selber definieren kann, also das eine Spezies mehrere Beutespezies hat oder von mehreren Spezies gefressen werden kann.
Meine Frage ist nun: Wie kann ich in der Nahrungskettenklasse am besten speichern wer wen frisst und was am wichtigsten ist eine effiziente Abfrage implementieren, wann einer gefressen wird bzw. frisst, also die einzelnen Methoden der Kreatur-Klasse aufrufen?
Hier ein bisschen Code zur Illustrierung:
Das is natürlich nur ein bisschen was zusammengschrieben und soll nur zeigen, wie meine bishereigen Klassen aufgebaut sind. Es geht mir im Moment nur darum die effiziente Abfrage zu machen und sie Methoden fresse() und gefressenwerden() auszuführen.
Wäre nett, wenn da jemand mal seine ideen dazu postet.
ich habe eine Kretur-Klasse, eine Speziesklasse mit den Eigenschaften dieser Spezies (z.B Lebensdauer) und will nun eine Narungkettenklasse schreiben, in der festgelget ist welche Spezies welche frisst, und die einen Vector mit den Species enthält.
In der Speziesklasse habe ich einen nach Position geordneten Vector, der die jeweiligen einzelnen Kreaturen dieser Spezies enthält.
Die Kreatur-Klasse hat eine Methode fressen() und eine Methode gefressenwerden(). Die erste Methode setzt den Nahrungsvorrat der Kreatur hoch, die andere markiert sie als tot.
Eine Kreatur der einen Spezies frisst eine Beutekreatur nur, wenn sie auf dem selben Feld stehen, sprich, die selben Koordinaten haben.
Ich habe das so implementiert, damit ich mehrer Spezies machen kann und selber sie Jäger-Beute-Beziehungen selber definieren kann, also das eine Spezies mehrere Beutespezies hat oder von mehreren Spezies gefressen werden kann.
Meine Frage ist nun: Wie kann ich in der Nahrungskettenklasse am besten speichern wer wen frisst und was am wichtigsten ist eine effiziente Abfrage implementieren, wann einer gefressen wird bzw. frisst, also die einzelnen Methoden der Kreatur-Klasse aufrufen?
Hier ein bisschen Code zur Illustrierung:
Code:
class Kreatur extends Koodrinaten
{
//
// Hier stehen Konstruktoren, mit denen man diverse Dinge festlegen kann, zB timeToLive
//
public void fressen(int x)
{
nahrung += x;
}
public void gefressenwerden()
{
this.die();
}
public void die()
{
alive = false;
}
public void olden()
{
if (--timeToLive == 0 | --nahrung == 0)
this.die()
}
// public int[] get()
//{
//int[] temp = {this.x, this.y};
//return temp;
//}
protected boolean alive = true;
protected int nahrung;
protected int timeToLive; //<- das wird eigentlich von der Speziesklasse vorgegeben
// protected int x; diese Variablen sind von der Koordinatenklasse geerbt
// protected int y;
}
class Species
{
//
// Konstruktoren, mit denen man zB die Anfangspopulation bestimmen kann und ähnliches
//
public void create()
{
Functions.insert(population, new Kreatur); // fügt die Kreatur an der richtigen Stelle im Vector ein
}
public Vector getPopulation()
{
return (Vector) population.clone();
}
public void letEat(int x)
{
((Kreatur)population.get(i)).eat();
}
public void letDie(int x)
{
((Kreatur)population.get(i)).die();
}
protected Vector population = new Vector();
}
class Nahrungskette
{
public void addSpecies(Species neueSpezies)
{
species.add(neueSpecies);
}
protected Vector() species = new Vector();
//In dieser Klasse will ich nun die abfrage machen und die Methoden
//der Kreaturen ausführen lassen
//auch muss noch adäquate speicherung der JägerBeuteBeziehungen
// her
}
Wäre nett, wenn da jemand mal seine ideen dazu postet.