Beispiel 1: Der Fisch soll hin und her schwimmen, d.h. am Rand jeweils umkehren. Dies erreichen wir durch eine Selektion unter Verwendung von if. Dabei wird mit der Methode isNearBorder() geprüft, ob sich der Fisch in einer Randzelle befindet. Ist dies der Fall, so schwimmt er zurück.
|
![]() |
move() | Verschiebt den Actor in die benachbarte Zelle. Bei der Erzeugung des Actors erhält dieser die Standardrichtung 0° (gegen Osten). Die Richtung kann absolut mit der Methode setDirection() oder relativ mit der Methode turn() geändert werden |
if (isNearBorder()) turn(180) |
Prüft, ob sich nemo in einer Randzelle befindet. Ist es der Fall, dreht er seine Bewegungsrichtun um 180° |
Mit setHorzMirror(boolean b) kann ein Bild gespiegelt werden. Ist b true, wird das Bild gespiegelt, ist b false wird die Spiegelung rückgängig gemacht .
|
![]() |
![]() |
// JGameEx2.java import ch.aplu.jgamegrid.*; import java.awt.Color; public class JGameEx2 extends GameGrid { public JGameEx2() { super(10, 10, 60, Color.red, "sprites/reef.gif"); Fish2 nemo = new Fish2(); addActor(nemo, new Location(2, 4)); show(); } public static void main(String[] args) { new JGameEx2(); } } // ------------- class Fish -------------------- class Fish2 extends Actor { public Fish2() { super("sprites/nemo.gif"); } public void act() { move(); if (isNearBorder()) { turn(180); setHorzMirror(!isHorzMirror()); } } } |
setHorzMirror(true) | Spiegelt das Sprite-Bild . Standardmässig ist setHorzMirror(false) gesetzt |
isHorzMirror() | Gibt true zurück, wenn das Bild bereits gespiegelt wurde |
setHorzMirror(!isHorzMirror()) | Wenn das Bild nicht gespiegelt ist, spiegelt es und umgekehrt |
Beispiel 3: Figur-Bewegungen mit Zufallszahlen steuern
Der Fish ändert zufällig seine Schwimmrichtung. Bei jedem Schritt änder er seine Richtung um 5° oder -5°.
|
// JGameEx3.java import ch.aplu.jgamegrid.*; import java.awt.Color; public class JGameEx3 extends GameGrid { public JGameEx3() { super(50, 50, 12, "sprites/reef.gif"); Fish nemo = new Fish(); addActor(nemo, new Location(10, 20)); show(); } public static void main(String[] args) { new JGameEx3(); } } // ------------- class Fish -------------------- class Fish extends Actor { public Fish() { super("sprites/nemo.gif"); } public void act() { if (Math.random() < 0.5 ) turn(5); else turn(-5); if (isNearBorder()) { turn(180); setHorzMirror(!isHorzMirror()); } move(); } } |
Math.random() | Die Methode Math.random() erzeugt eine mehrstellige Zufallszahl zwischen 0 und 1 |
if (Math.random() < 0.5) turn(5); else turn(-5); |
Etwa in Hälfte aller Fälle ist die Zufallszahl < 0.5, der Fische dreht um 5° in der positiven Richtung, sonst dreht er 5° in die andere Richtung |