Spielprogrammierung mit Java
HomeAufgabenDruckenJava-Online

Drehbare Sprites


Bei einigen Applikationen muss die Richtung des Actor-Sprites mit der Richtung seiner Bewegung übereinstimmen. Die Klassenbibliothek JGameGrid übernimmt diese anspruchsvolle Aufgabe. Fügt man bei der Deklaration des Actors den Parameter true hinzu, wird die Richtung des Actors in jedem Punkt neu berechnet und entsprechend angezeigt.

super(true,"sprites/redCar.gif")

Default ist dieser Parameter auf false gesetzt, da dieser Vorgang viel Rechenleistung benötigt und deshalb nur bei den Pixelgames (Zellengrösse 1 Pixel) sinnvoll ist. Bei den Gittergames werden die Spielfiguren in der Regel mit Hilfe der Methode setHorzMirror(true) oder setVertMirror(true)gedreht.

Beispiel 1: Das Auto bewegt sich auf einem Kreisbogen. Die Geschwindigkeit kann mit dem Schieberegler geregelt werden.


 

// JGameEx4.java

import ch.aplu.jgamegrid.*;
import java.awt.Color;

public class JGameEx4 extends GameGrid
{
  public JGameEx4()
  {
    super(6006001);
    setBgColor(Color.darkGray);
    RedCar car = new RedCar();
    addActor(car, new Location(300100));
    show();
  }
  
  public static void main(String[] args)
  {
    new JGameEx4();
  }
}

// ------------- class RedCar --------------------
class RedCar extends Actor
{
  public RedCar()
  {
    super(true,"sprites/redCar.gif");
  }

  public void act()
  {
    move();
    turn(1.5);
  }
}
Erklärungen zum Programmcode:
super(true,"sprites/redCar.gif"); Der Parameter true bewirkt, dass die Richtung des Sprites fortlaufend berechnet und aktualisiert wird
super(600, 600, 1) Ein Spielfenster mit 600x600 Pixeln, Zellengrösse 1 Pixel, ohne Gitterliniern, ohne Hintergrundbild
getBg().clear(Color.darkGray) Der Hintergrund wird mit der Klasse GGBackground beschrieben. getBg() liefert die Background-Instanz, mit der die Methode clear() aufgerufen wird, die den Hintergrund einfarbig übermalt
move() move() bewirkt bei einem Fenster mit mehr als 2500 Pixeln eine Verschiebung um 5 Pixel
turn(1.5) In jeder Simulationsperiode erfolgt eine Drehung um 1.5 Grad