Gregor Antoine
Gregor.Antoine@hpg-speyer.de
GnuPG-Schlüssel  
(0E863611)


Informatik9-3

Verschiedene Welten
4_Level1und2.zip?

Klicke mit der rechten Maus auf die Klasse World und erzeuge mit New subclass eine 2. Welt. Wähle ein Bild und nenne die Welt Level2. Auch in der neuen Welt müssen wie in Grundeinstellungen beschrieben, die Höhe, die Breite und die Zellgröße angegeben werden (z.B. super(10, 8, 60)).

Wenn du mit der rechten Maus auf die Klasse Level2 klickst, kannst du diese mit new Level2() aktivieren.

Füge auch in die neue Welt verschiedene bewegte und feststehende Objekte ein.

Jetzt soll das nächste Level aktiviert werden, wenn der Käfer den Fisch gefressen hat. Schreibe in der Klasse Käfer:

 ...
 Actor fisch;
 fisch = getOneObjectAtOffset(0, 0, Fisch.class);
 if(fisch != null) {
     welt.removeObject(fisch);
     if(welt instanceof Level1) {
         Greenfoot.setWorld(new Level2());
     } else if(welt instanceof Level2) {
         Greenfoot.setWorld(new Ende());
     } 
 }

Neu ist der Teil ab if(welt instanceof Level1). Wir sind in dem Teil der Programmierung, in der der Fisch gerade den Käfer gefressen hat (nach welt.removeObject(fisch)). Es wird jetzt überprüft, ob die aktuelle Welt Level1 ist. Dann wird Level2 mit Greenfoot.setWorld(new Level2()) aktiviert. Ist die aktuelle Welt allerdings schon Level2, wird die Welt Ende aktiviert.

5_Level1und2.zip?
Wenn wir jetzt wollen, dass erste dann Level2 aktiviert wird, wenn der Käfer alle Fische gefressen hat, geht das so:

 if(fisch != null) {
     welt.removeObject(fisch);
     if(welt.getObjects(Fisch.class).size() == 0) {
         if(welt instanceof Level1) {
             Greenfoot.setWorld(new Level2());
         } else if(welt instanceof Level2) {
             Greenfoot.setWorld(new Ende());
         } 
     }
 }

welt.getObjects(Fisch.class) liefert eine Liste aller Fische zurück, die in der Welt leben. Was in Java eine Liste ist, ist jetzt erst mal egal. Wichtig ist, dass wir diese Liste fragen wie lang sie ist: welt.getObjects(Fisch.class).size(). Ist die Länge 0, lebt kein Fisch mehr.