(letzte Änderung an dieser Seite: 09.06.2018)
Beispiel:
In einer World-Klasse können Sie die Methode this.addObject(…)
verwenden, z.B.
this.addObject(new Monster(), 100, 300)
Die Methode bekommt drei Parameter:
new Monster()
erzeugt wird)Für die x- und y-Position können Sie auch die Methoden getWidth()
und/oder getHeight()
verwenden:
this.addObject(new Ball(),this.getWidth()/2,this.getHeight()/2)
In diesem Beispiel wird der Ball genau in die Mitte der Welt gesetzt. Wenn die Welt 600 Pixel breit ist, hat getWidth() den Wert 600 und getWidth()/2
den Wert 300.
Die Größe der Welt sehen wir in der super(…)
-Methode. super(600,400,1)
bedeutet, dass die Welt 600 Pixel breit und 400 Pixel hoch ist.
Beispiel:
Auch hier benutzen wir die Methode addObject(…)
. Wir möchten zum Beispiel in der Klasse Schlange ein neues Objekt der Klasse Schneeball erzeugen und der Welt hinzufügen (vulgo: einen Schneeball werfen). Das machen wir bspw. mit
this.getWorld().addObject(new Schneeball(), 100, 200)
Da die Methode addObject(…)
jedoch eine Methode der World-Klassen ist, müssen wir uns erst die Welt "holen" mit this.getWorld()
, siehe unten. Während wir oben in der Weltklasse this
verwenden konnten, müssen wir jetzt stattdessen this.getWorld()
schreiben.
Manchmal ist es nützlich, das Objekt separat zu erzeugen, Beispiel:
var Person einePerson = new Person()
this.addObject(einePerson, 200, 200)
Mit der Taste v deklarieren Sie in Greenfoot 3 (Stride-Szenario) eine neue Variable, hier vom Datentyp Person. Der Name der Variable ist einePerson, könnte natürlich auch anders lauten (z.B. person oder josef oder fritz).
Wenn wir das Objekt wie im Beispiel eben separat deklariert haben, können wir seine Methoden benutzen, zum Beispiel:
var Blume schoeneRose = new Blume()
schoeneRose.turn(90)
this.addObject(schoeneRose, 250, 350)
Nachdem wir hier ein Objekt namens schoeneRose vom Typ Blume angelegt haben, ändern wir seine Ausrichtung (Rotation) mittels turn(90)
(das heißt: Das Objekt wird um 90 Grad nach rechts gedreht) und setzen es erst dann auf die Welt.
Während ein Greenfoot-3-Programm läuft, möchten wir manchmal ein neues Objekt erzeugen (z.B. soll ein neuer Gegner auftauchen, ein neues Hindernis, neue einzusammelnde Gegenstände o.ä.). Das funktioniert sehr ähnlich wie oben beschrieben.
Dazu müssen wir:
Code-Beispiel:
class Monster
if(Greenfoot.isKeyDown("space"))
var Ball b = new Ball()
this.getWorld().addObject(b, this.getX(), this.getY())
Wenn die Leertaste gedrückt wird, erzeugen wir ein neues Objekt (Name des Objekts: b) der Klasse Ball.
Dann stellen wir fest, in welcher Welt wir uns gerade befinden (mit this.getWorld()
) und fügen das Objekt ein. this
ist in diesem Fall unser Monster-Objekt.
Mit this.getX()
und this.getY()
holen wir uns die x- und y-Position, auf der this
(also das Monster) gerade sitzt. Damit erscheint das neue Objekt an der Stelle, an der sich das Monster befindet.
Wir können uns die Welt auch in einem separaten Schritt als lokale Variable erzeugen:
var World meineWelt = this.getWorld()
meineWelt.addObject(new Muenze(), 100, 200)
Wir erzeugen ein neues Objekt (Name: meineWelt
) der Greenfoot-Klasse World; wieder ist das die Welt (bzw. das Welt-Objekt), dem das Monster (this
, siehe oben) angehört.
Falls die Münze auf einer zufälligen Stelle auftauchen soll:
meineWelt.addObject(new Muenze(), Greenfoot.getRandomNumber(meineWelt.getWidth()),Greenfoot.getRandomNumber(meineWelt.getHeight()))
Für die x- und y-Position erzeugen wir jeweils eine Zufallszahl zwischen 0 und der Breite/Höhe der Welt.