Game-Apps für Smartphones und Tablets

Bern University oh Teacher Education  
HomeOnline-Editor startenDruckenAndroid-TurtlegrafikJava-Online

Figuren bewegen


Beispiel 1: Der Fisch soll hin und her schwimmen und dabei immer vorwärts schauen. Wenn sich der Fisch in einer Randzelle befindet, muss er seine Bewegungsrichtung um 180° drehen und dabei sein Sprite-Bild spiegeln.

Mit der Methode setHorzMirror() kann ein Bild gespiegelt werden.
setHorzMirror(true): das Bild ist gespiegelt
setHorzMirror(false): das Bild ist nicht gespiegelt

Da wir in diesem Beispiel unterscheiden müssen, ob sich der Fisch am rechten oder linken Rand befindet, verwenden wir zur Übuerprüfung der Randzellen die Methode getX(). Diese gibt die x-Koordinate der aktuellen Zelle zurück.

   

Beispiel im Online-Editor bearbeiten

App installieren auf Smartphone oder Tablet

QR-Code

Sources downloaden (AndroidEx2.zip)

// AndroidEx2.java

package app.ex2;

import ch.aplu.android.*;

public class AndroidEx2 extends GameGrid
{
  public AndroidEx2()
  {
    super(8, 8, 0, RED);
  }

  public void main()
  {
    Fish nemo = new Fish();
    addActor(nemo, new Location(1, 1));
    doRun();
  }
}

class Fish extends Actor
{
  public Fish()
  {
    super("nemo");
  }

  public void act()
  {
    move();
    if (getX() == 7)
    {
      turn(180);
      setHorzMirror(true);
    }
    if (getX() == 0)
    {
      turn(180);
      setHorzMirror(false);
    }
  }
}

Erklärungen zum Programmcode:

getX()   Gibt die aktuelle Zellenkoordinate des Actors zurück
setHorzMirror(true)
Spiegelt das Spritebild hozontal
setHorzMirror(false)
Das Sprite-Bild ist nicht gespiegelt (default)


Beispiel 2: Alle Zellen des Gitters durchlaufen / Hintergrundbild verwenden

Der Fisch startet in der Zelle (0, 0) und bewegt sich von Zelle zu Zelle. Wenn er die Zelle mit x-Koordinate 7 erreicht, dreht es um 90°. Danach dem nächsten Schritt x immer noch 7 ist, muss er noch einmal drehen. Am linken Rand muss er jeweils um 270° drehen.  

Für den Hintergrund reef.gif verwendet. Da es grosse Unterschiede in der Displaygrösse bei verschiedenen Smartphone-Typen und Tablets gibt, empfiehlt sich einen Zellenzoom zu verwenden. Der Parameter cellZoom(cellsize) im Konstuktor der Applikationsklasse bewirkt eine automatische Skalierung des Hintergrundbildes und aller Sprite-Bilder.

Beispiel im Online-Editor bearbeiten

App installieren auf Smartphone oder Tablet

QR-Code

Sources downloaden (AndroidEx3.zip)


// AndroidEx3.java

package app.ex3;

import ch.aplu.android.*;

public class AndroidEx3 extends GameGrid 
{
  public AndroidEx3()
  {
    super(8, 8, cellZoom(60), RED, "reef"false);
  }

  public void main()
  {
    Fish nemo = new Fish();
    addActor(nemo, new Location(0, 0));  
    doRun();
  }
}

class Fish extends Actor
{
  public Fish()
  {
    super("nemo");
  }

  public void act()
  {
    move();  
    if (getX() == 7)
    {
      turn(90);
      setHorzMirror(true);
    }
    if (getX() == 0)
    {
      turn(270);
      setHorzMirror(false);
    } 
  }
}

Erklärungen zum Programmcode:

super(8, 8, cellZoom(60), Color.RED, "reef", true) Als Hintergrundbild wird reef.gif verwendet. Der Parameter cellZoom(60) bewirkt eine automatische Skalierung aller Sprite-Bilder. Das Bild nemo.gif ist ca. 55x55 Pixel gross, das Hintergrundbild 480x480 Pixel. Für das Smartphone oder Emulator werden die Bilder verkleinert, beim Tablet vergrössert


Beispiel 3: Figur auf einer Kreisbahn bewegen / Drehbare Sprites

Damit sich das Auto auf einer Kreisbahn bewegt, muss bei jedem Schritt eine Drehung um einen kleinen Winkel erfolgen (turn(2.5)). Um das Spritebild vor jedem Schritt in die Fahrrichtung zu drehen, wird bei der Initialisierung des Cars der Parameter true eingefügt.

super(true,"redcar")

Der Parameter true bewirkt, dass die Richtung des Sprites fortlaufend berechnet und aktualisiert wird. Die Geschwindigkeit des Autos kann mit dem Lautstärke-Regler des Handys verändert werden.

Beispiel im Online-Editor bearbeiten

App installieren auf Smartphone oder Tablet

QR-Code

Sources downloaden (AndroidEx4.zip).

 

// AndroidEx4.java

package app.ex4;

import ch.aplu.android.*;

public class AndroidEx4 extends GameGrid
{
  public AndroidEx4()
  {
    super(300, 300, 1, 0, true);
  }

  public void main()
  {
    RedCar car = new RedCar();
    addActor(car, new Location(150, 20));
    doRun();
  }
}

class RedCar extends Actor
{
  public RedCar()
  {
    super(true,"redcar");
  }

  public void act()
  {
    move();
    turn(2.5);
  }
}

Erklärungen zum Programmcode:

super(300, 300, 1, 0, true) Pixel-Auflösung, ohne Gitter mit aktivierter Navigation
super(true,"redcar") Drehbares Sprite