Game-Apps für Smartphones und Tablets

Pädagogische Hochschule Bern  
HomeOnline-Editor startenDruckenAndroid-TurtlegrafikJava-Online

SliceIt - Game


Am linken Rand des Spielfensters werden an zufällig gewählten vertikalen Positionen verschiedene Früchte erzeugt. Diese bewegen sich auf einer Wurfparabel und drehen sich dabei um die eigene Achse.

Am rechten Drittel des Spielfensters können mit einer Wischbewegung Schwerts geschleudert werden, wobei die Bewegungsrichtung mit der Bewegung des Fingers übereinstimmt. Je schneller man den Finger bewegt, um so schneller bewegt sich der Schwert.

Ziel des Spiels ist es, möglichst viele Früchte "weg zu slicen", ehe sie am unteren Rand des Spielfensters ankommen.

 

Beispiel im Online-Editor bearbeiten

App installieren auf Smartphone oder Tablet

QR-Code

Programmcode downloaden (SliceIt.zip)

   


Um den Programmcode zu verstehen, empfiehlt es sich, die Applikation in folgenden Schritten zu entwickeln:

Schritt 1: Früchte erzeugen und entlang einer Wurfparabel bewegen

Da sich alle Fruit-Actors gleich verhalten, ist es sinnvoll, die Eigenschaften dieser Actors in einer abstrakten Klasse Fruit.java festzulegen und sämtliche Fruit-Actors von dieser Klasse abzuleiten. Die Koordinaten x, y der sich bewegenden Früchte werden in der Methode act() der Klasse Fruit physikalisch berechnet (waagrechter Wurf):


wobei dt durch die Simulationsperiode festgelegt, g = 9.81und vx zufällig gewählt ist.

 

SliceIt_1 im Online-Editor bearbeiten

 

Schritt 2: Schwert mit Fling-Event erzeugen und in Bewegung setzen

Wir implementieren einen GGFlingListener mit der Callbackmethode flingEvent(Point start, Point end, GGVector velocity). Bei jeder Wischbewegung des Fingers wird die Start- und Endposition der Bewegung und die Geschwindigkeit, mit der man den Finger bewegt, erfasst. Der Schwert wird danach in dieser Richtung geschleudert und bewegt sich auf einer Wurfparabel.

SliceIt_2 im Online-Editor bearbeiten


Schritt 3: Kollisionen und Spielauswertung

Da wir mit Pixelkoordinaten arbeiten, müssen wir eine präzise Kollisionserkennung verwenden. In der Klasse Fruit wir eine Methode collide () implementiert, die Kollisionen der Fruit-Actors und des Schwerts registriert. Die getroffene Früchte werden durch andere Sprites ersetzt. Der Kollisions-Actor Schwert wird für alle Früchte in der Callback-Methode flingEvent() erzeugt.