Folgende Aufgabenstellung:
http://www.ifi.uzh.ch/rerg/fileadmi...tware_engineering_hs07/uebungen_se/seueb4.pdf
Es war also eine Konsolenanwendung gegeben und es muss dafür eine GUI erstellt werden, auf der die Tiere (als Kreise) angezeigt werden.
Ich hab es jetzt immerhin soweit geschafft, dass die Tiere mit der aktuellen Position im Panel angezeigt werden. Aber das immer nur für kurze Zeit. Sobald eine neue Iteration der Schleife folgt, verschwindet das jeweilige Tier und es wird nur noch das neue angezeigt.
Wie schaffe ich es, dass ALLE TIERE angezeigt werden und nicht nur das Tier, das gerade gezeichnet wird? Falls ein Tier seine Position wechselt bzw. stirbt, soll das natürlich auch angezeigt werden (Kreis wird verschoben / entfernt).
--> Unser Prof. erwähnte irgendwas von "Observer Pattern" implementieren, aber wie?!
Bin für jeden Tipp dankbar!
http://www.ifi.uzh.ch/rerg/fileadmi...tware_engineering_hs07/uebungen_se/seueb4.pdf
Die gesamte Landkarte (bzw. ein eigens definierter Ausschnitt) soll graphisch angezeigt werden und es soll darauf ersichtlich sein wo sich zum aktuellen Zeitpunktwelche Tiere befinden.
Eine interaktive Steuerung der Simulationsgeschwindigkeit soll möglich sein, zum Beispiel
1er, 10er und 100er Schritte. Ausserdem soll ein konstanter Ablauf mit zum Beispiel 50 Schritten pro Sekunde möglich sein.
Es war also eine Konsolenanwendung gegeben und es muss dafür eine GUI erstellt werden, auf der die Tiere (als Kreise) angezeigt werden.
Ich hab es jetzt immerhin soweit geschafft, dass die Tiere mit der aktuellen Position im Panel angezeigt werden. Aber das immer nur für kurze Zeit. Sobald eine neue Iteration der Schleife folgt, verschwindet das jeweilige Tier und es wird nur noch das neue angezeigt.
Wie schaffe ich es, dass ALLE TIERE angezeigt werden und nicht nur das Tier, das gerade gezeichnet wird? Falls ein Tier seine Position wechselt bzw. stirbt, soll das natürlich auch angezeigt werden (Kreis wird verschoben / entfernt).
--> Unser Prof. erwähnte irgendwas von "Observer Pattern" implementieren, aber wie?!
Java:
public SavannahSim(int lions, int antilopes) {
IO.writeLn("----------------------------------------------");
IO.writeLn("Savannah Simulation, Version 0.9");
IO.writeLn("Animals: Lions: " + lions + ", Antilopes: " + antilopes
+ ".");
IO.writeLn("----------------------------------------------");
animal = new Animal[lions + antilopes];
// creating lions and antilopes
for (int i = 0; i < lions; i++) {
animal[i] = new Lion(i + 1/* , s */);
}
for (int i = lions; i < (lions + antilopes); i++) {
animal[i] = new Antilope(i + 1 - lions/* , s */);
}
UnserPanel p1 = new UnserPanel();
new UnserFrame(p1);
while (livingAnimals() > 1) {
for (int i = 0; i < animal.length; i++) {
// Verzoegern des Zeichnens um x ms
long t0, t1;
t0 = System.currentTimeMillis();
do {
t1 = System.currentTimeMillis();
} while (t1 - t0 < 500);
if (animal[i].isAnimalAlive()) {
System.out.println(animal[i]);
//Loewe oder Antilope einzeichnen
p1.paint(p1.getGraphics(), animal[i]);
animal[i].move();
}
for (int k = 0; k < animal.length; k++) {
if (k != i && animal[i].isAnimalAlive()
&& animal[k].isAnimalAlive()
&& animal[i].isNear(animal[k])) {
p1.paint(p1.getGraphics(), animal[k]);
System.out.println(animal[i] + " Meets " + animal[k]);
animal[i].meet(animal[k]);
System.out.println("Result: " + animal[i] + ", "
+ animal[k]);
}
}
}
iterations++;
}
Bin für jeden Tipp dankbar!
Anhänge
Zuletzt bearbeitet: