public class Figur extends Raum
Eine Figur ist eine aus einer Datei geladene Sammlung von Pixeln, die orientierungsmaessig rechteckig gehandelt werden.
//Die Figur laden
Figur meineFigur = new Figur(30, 100, “meineFigurDateiImProjektordner.eaf”); //Laedt die Figur und setzt sie an Position (30|100)
//Die Bewegung der Figur starten (muss nicht ausgefuehrt werden, Sa standard)
meineFigur.animiertSetzen(true);
// Die Figur an dem entsprechenden Knoten zum halten und Zeichnen anmelden (In diesem Fall die Wurzel in der Klasse Game)
wurzel.add(meineFigur);
Dies ist einfachste Methode, eine Figur zu laden.
Der Figureneditor zum Erstellen der zu ladenden “.eaf”-Dateien ist als ausfuehrbare “.jar”-Datei fester Bestandteil des Engine-Alpha-Programmierkits.
Modifier and Type | Field and Description |
---|---|
protected PixelFeld[] |
animation
Die einzelnen Bilder der Figur.
|
farbzyklus, position, roh
Constructor and Description |
---|
Figur()
Der parameterlose Konstruktor.
|
Figur(float x,
float y,
java.lang.String verzeichnis)
Standart-Konstruktor fuer Objekte der Klasse
Figur . |
Figur(float x,
float y,
java.lang.String verzeichnis,
boolean add)
Besonderer Konstruktor fuer Objekte der Klasse
Figur . |
Figur(java.lang.String verzeichnis)
Erstellt eine Figur ohne Positionsangabe.
|
Modifier and Type | Method and Description |
---|---|
int |
aktuellesBild()
Gibt den Index des aktuellen Bildes zurueck.
|
PixelFeld[] |
animation() |
void |
animationLoeschen(int index)
Loescht ein Animationsbild an einem bestimmten Index und rueckt den Rest nach.
|
void |
animationsBildSetzen(int bildIndex)
Setzt das aktuelle Animationsbild.
|
void |
animationsBildSetzen(PixelFeld bild,
int index)
Setzt das Animationsbild auf einer bestimmten Position zu einem neuen PixelFeld.
|
void |
animationsBildVerschieben(int indexAlt,
int indexNeu)
Verschiebt die Position eines Animationsbildes.
|
void |
animationSetzen(PixelFeld[] f)
Setzt eine neue Animationsreihe.
|
void |
animationsGeschwindigkeitSetzen(int intervall)
Setzt die Geschwindigkeit der Animation, die diese Figur Figuren steuert.
|
void |
animationsSchritt(int runde)
Ruft das naechste Bild im Animationszyklus auf.
|
boolean |
animiert()
Gibt an, ob das Bild momentan animiert wird bzw. animiert werden soll.
|
void |
animiertSetzen(boolean animiert)
Setzt die Animationsarbeit bei dieser Figur.
|
BoundingRechteck |
dimension()
Methode zum Beschreiben der rechteckigen Flaeche, die dieses Objekt einnimmt.
|
void |
dunkler()
Dunkelt alle Farbwerte der Figur ab.
|
void |
einfaerben(Farbe f)
Faerbt alle Elemente in einer Farbe ein.
|
void |
einfaerben(java.lang.String farbe)
Faerbt alle Elemente in einer Farbe ein.
|
Collider |
erzeugeCollider()
Erzeugt einen neuen Collider für dieses Objekt.
|
void |
faktorSetzen(int faktor)
Setzt den Groessenfaktor dieser Figur neu.
|
void |
farbenTransformieren(int r,
int g,
int b)
Sorgt fuer eine Farbtransformation.
|
BoundingRechteck[] |
flaechen()
Berechnet exakter alle Rechteckigen Flaechen, auf denen dieses Objekt liegt.
|
void |
heller()
Hellt alle Farbwerte der Figur auf.
|
int |
intervall()
Gibt das Intervall dieser Figur zurueck.
|
void |
negativ()
Setzt saemtlicher Farbwerte saemtlicher Bilder der Figur ins negative.
|
void |
spiegelXSetzen(boolean spiegel)
Setzt, ob diese Figur bei der Darstellung waagrecht zentral gespiegelt werden soll oder nicht.
|
void |
spiegelYSetzen(boolean spiegel)
Setzt, ob diese Figur bei der Darstellung senkrecht zentral gespiegelt werden soll oder nicht.
|
boolean |
xGespiegelt()
Diese Methode gibt aus, ob diese Figur derzeit an der X-Achse (waagrecht) gespiegelt ist.
|
boolean |
yGespiegelt()
Diese Methode gibt aus, ob diese Figur derzeit an der Y-Achse (senkrecht) gespiegelt ist.
|
void |
zeichnen(java.awt.Graphics2D g,
BoundingRechteck r)
Zeichnet das Objekt.
|
void |
zurueckFaerben()
Sorgt dafuer, dass nach dem Aufruf von
einfaerben(Farbe) die Figur wieder ihre normalen Farbgegebenheiten kriegt. |
afterRender, aktivMachen, aktuellerCollider, beeinflussbarSetzen, beforeRender, beinhaltet, bewegen, bewegen, boundsUebernehmen, colliderSetzen, compareTo, drehenAbsolut, drehenRelativ, einfluesseZuruecksetzen, erzeugeLazyCollider, fallReagierbarAnmelden, geschwindigkeitHinzunehmen, geschwindigkeitSetzen, getForce, getMasse, gibDrehung, halbesAlpha, heavyComputingSetzen, hoehenUnterschied, impulsHinzunehmen, inFlaeche, istBeeinflussbar, kraftAnwenden, kraftSetzen, kritischeTiefeSetzen, leuchterAbmelden, leuchterAnmelden, loeschen, luftwiderstandskoeffizient, luftwiderstandskoeffizientSetzen, masseSetzen, mittelPunkt, mittelpunktSetzen, mittelpunktSetzen, neutralMachen, newtonschMachen, passivMachen, position, positionSetzen, positionSetzen, positionX, positionY, problem, schneidet, schwerkraftAktivSetzen, schwerkraftSetzen, setzeMeterProPixel, sichtbar, sichtbarSetzen, sprung, stehReagierbarAnmelden, steht, stehtAuf, verschieben, verschieben, zeichnenBasic, zentrum, zIndex, zuFarbeKonvertieren
protected PixelFeld[] animation
Die einzelnen Bilder der Figur.
hat es mehr als eines, so wird ein periodischer Wechsel vollzogen.
public Figur(float x, float y, java.lang.String verzeichnis, boolean add)
Besonderer Konstruktor fuer Objekte der Klasse Figur
. Dieser Konstruktor wird vor allem intern (fuer Actionfiguren) verwendet. Anders ist nur die Option darauf, dass die Figur am Animationssystem direkt teilnimmt. Dies ist beim Standart-Konstruktor immer der Fall.
x
- X-Position; die links obere Eckey
- Y-Position; die links obere Eckeverzeichnis
- Das verzeichnis, aus dem die Figur zu laden ist.add
- Ob diese Figur am Animationssystem direkt teilnehmen soll. (Standard)public Figur(float x, float y, java.lang.String verzeichnis)
Standart-Konstruktor fuer Objekte der Klasse Figur
.
x
- X-Position; die links obere Eckey
- Y-Position; die links obere Eckeverzeichnis
- Das verzeichnis, aus dem die Figur zu laden ist.public Figur(java.lang.String verzeichnis)
Erstellt eine Figur ohne Positionsangabe. Die Figur liegt an Position (0|0). Dieser Konstruktor vereinfacht das Laden vieler Figuren, z.B. für eine ActionFigur
.
verzeichnis
- Das Verzeichnis, aus dem die Figur zu laden ist.ActionFigur
public Figur()
Der parameterlose Konstruktor.
Hiebei wird nichts gesetzt, die Figur hat die Position (0|0) sowie keine Animationen, die Referenz auf die einzelnen Pixelfelder ist null
.
Dieser Konstruktor wird intern verwendet, um Figurdaten zu laden.
Daher ist er nicht für die direkte Verwendung in Spielen gedacht.
public void animationLoeschen(int index)
Loescht ein Animationsbild an einem bestimmten Index und rueckt den Rest nach.
index
- Der Index des zu loeschenden Einzelbildes.java.lang.ArrayIndexOutOfBoundsException
- wenn der Index falsch gewaehlt wurde!public void animationsBildSetzen(PixelFeld bild, int index)
Setzt das Animationsbild auf einer bestimmten Position zu einem neuen PixelFeld.
bild
- Das neue PixelFeld an dieser Position; sollte nicht null
sein!!index
- Der Index des zu ersetzenden Bildes.java.lang.ArrayIndexOutOfBoundsException
- wenn der Index falsch gewaehlt wurde!public void animationsBildVerschieben(int indexAlt, int indexNeu)
Verschiebt die Position eines Animationsbildes.
Hierbei wird ein bisschen mit den Werten des Arrays gespielt, jedoch kein neues Array erstellt. Sind beide Eingabeparameter exakt gleich, passiert gar nichts, auch wenn die beiden Werte ausserhalb des Arrays liegen sollten.
indexAlt
- Der Index des zu verschiebenden BildesindexNeu
- Der Index, den das Bild nach dem erschieben haben soll.java.lang.ArrayIndexOutOfBoundsException
- wenn einer der Indizes falsch gewaehlt wurde!public void animationsSchritt(int runde)
Ruft das naechste Bild im Animationszyklus auf.
Sollte nicht von aussen aufgerufen werden, stellt aber in keinem mathematisch greifbaren Fall ein Problem dar.
runde
- Die Runde dieses Schrittes; dieser Wert wird intern benoetigt, um zu entscheiden, ob etwas passieren soll oder nicht.public void animationSetzen(PixelFeld[] f)
Setzt eine neue Animationsreihe.
f
- Die neue Animationsreihe. Das Array muss mindestens ein Pixelfeld zum Inhalt habenpublic void animiertSetzen(boolean animiert)
Setzt die Animationsarbeit bei dieser Figur.
animiert
- ob die Figur animiert werden soll, oder ob sie ein Standbild sein soll.public boolean animiert()
Gibt an, ob das Bild momentan animiert wird bzw. animiert werden soll.
public void animationsBildSetzen(int bildIndex)
Setzt das aktuelle Animationsbild.
Die Figur, die im Pixelfeldeditor erstellt wurde besteht den Bildern (1, 2, …, n), aber ACHTUNG, die Indizes fangen bei 0 an und hoeren dann eins frueher auf (0, 1, …, (n-1)). Das heisst, dass wenn als Index 5
eingegeben wird, ist das Bild gemeint, das im Figureneditor als Bild 6
bezeichnet wurde.
bildIndex
- Der Index des anzuzeigenden Bildespublic void faktorSetzen(int faktor)
Setzt den Groessenfaktor dieser Figur neu.
Das heisst, ab sofort wird ein Unterquadrat dieser Figur eine Seitenlaenge von Pixeln in Groesse des Faktors haben
faktor
- Der neue Groessenfaktorpublic void negativ()
Setzt saemtlicher Farbwerte saemtlicher Bilder der Figur ins negative.
Dadurch aendert sich die Erscheinung der Figur.
heller()
,
dunkler()
,
farbenTransformieren(int, int, int)
public void heller()
Hellt alle Farbwerte der Figur auf.
Gegenstueck zur Methode dunkler()
.
Achtung:
Wegen Rundungsfehlern muss der Aufruf von dunkler()
nach dem Aufruf von heller()
nicht zwanghaft zum urspruenglichen Zustand fuehren!
public void dunkler()
Dunkelt alle Farbwerte der Figur ab.
Gegenstueck zur Methode heller()
.
Achtung:
Wegen Rundungsfehlern muss der Aufruf von dunkler()
nach dem Aufruf von heller()
nicht zwanghaft zum urspruenglichen Zustand fuehren!
heller()
,
negativ()
,
farbenTransformieren(int, int, int)
public void farbenTransformieren(int r, int g, int b)
Sorgt fuer eine Farbtransformation.
Das heißt, zu jeder Farbe der Figur werden die RGB-Werte um feste Betraege geaendert (positive oder negative). Sprengt ein entstehender Wert den Rahmen [0; 255] (zum Beispiel 160 + 100 oder 50 - 80), so bleibt der Farbwert am Rand des moeglichen Bereiches (also 0 bzw. 255).
public void einfaerben(Farbe f)
Faerbt alle Elemente in einer Farbe ein.
Dieser Zustand laesst sich zuruecksetzen mit der Methode zurueckFaerben()
.
f
- Die Farbe, mit der alle farbenthaltenden Unterquadrate der Figur eingefaerbt werden.zurueckFaerben()
,
einfaerben(String)
public void einfaerben(java.lang.String farbe)
Faerbt alle Elemente in einer Farbe ein.
Dieser Zustand laesst sich zuruecksetzen mit der Methode zurueckFaerben()
.
farbe
- Die Farbe, mit der alle farbenthaltenden Unterquadrate der Figur eingefaerbt werden.String
, so wie bei den anderen einfachen Farbeingaben auch.zurueckFaerben()
,
einfaerben(Farbe)
public void spiegelXSetzen(boolean spiegel)
Setzt, ob diese Figur bei der Darstellung waagrecht zentral gespiegelt werden soll oder nicht.
Dies aendert die Drehungsrichtung einer Figur von N nach S bzw. umgekehrt.
spiegel
- Ist dieser Wert true
, so wird die Figur waagrecht gespiegelt im Vergleich zu ihrer Quelldatei dargestellt. Durch false
kann dieser Zustand schnell wieder zurueckgesetzt werden.spiegelYSetzen(boolean)
,
yGespiegelt()
,
xGespiegelt()
public void spiegelYSetzen(boolean spiegel)
Setzt, ob diese Figur bei der Darstellung senkrecht zentral gespiegelt werden soll oder nicht.
So laesst sich extrem schnell z.B. Drehung einer Spielfigur von links nach rechts im Spiel realisieren.
spiegel
- Ist dieser Wert true
, so wird die Figur senkrecht gespiegelt im Vergleich zu ihrer Quelldatei dargestellt. Durch false
kann dieser Zustand schnell wieder zurueckgesetzt werden.spiegelXSetzen(boolean)
,
yGespiegelt()
,
xGespiegelt()
public boolean xGespiegelt()
Diese Methode gibt aus, ob diese Figur derzeit an der X-Achse (waagrecht) gespiegelt ist.
true
, wird diese Figur derzeit genau an der X-Achse gespiegelt dargestellt, im Verhältnis zu der ursprünglichen Figurdatei.spiegelXSetzen(boolean)
,
spiegelYSetzen(boolean)
,
yGespiegelt()
public boolean yGespiegelt()
Diese Methode gibt aus, ob diese Figur derzeit an der Y-Achse (senkrecht) gespiegelt ist.
true
, wird diese Figur derzeit genau an der Y-Achse gespiegelt dargestellt, im Verhältnis zu der ursprünglichen Figurdatei.spiegelXSetzen(boolean)
,
spiegelYSetzen(boolean)
,
xGespiegelt()
public void zurueckFaerben()
Sorgt dafuer, dass nach dem Aufruf von einfaerben(Farbe)
die Figur wieder ihre normalen Farbgegebenheiten kriegt.
einfaerben(Farbe)
,
einfaerben(String)
public BoundingRechteck[] flaechen()
Raum
Berechnet exakter alle Rechteckigen Flaechen, auf denen dieses Objekt liegt.
Diese Methode wird von komplexeren Gebilden, wie geometrischen oder Listen ueberschrieben.
public void zeichnen(java.awt.Graphics2D g, BoundingRechteck r)
Zeichnet das Objekt.
public BoundingRechteck dimension()
Raum
Methode zum Beschreiben der rechteckigen Flaeche, die dieses Objekt einnimmt.
Diese Methode wird zentral fuer die Trefferkollisionen innerhalb der Engine benutzt und gehoert zu den wichtigsten Methoden der Klasse und der Engine.
public int aktuellesBild()
Gibt den Index des aktuellen Bildes zurueck.
Die Figur, die im Pixelfeldeditor erstellt wurde besteht den Bildern (1, 2, …, n), aber ACHTUNG, die Indizes fangen bei 0 an und hoeren dann eins frueher auf (0, 1, …, (n-1)). Das heisst, dass wenn als Index 5
zurueckgegeben wird, wird zur Zeit das Bild gezeigt, das im Figureneditor als Bild 6
bezeichnet wurde.
public PixelFeld[] animation()
public int intervall()
Gibt das Intervall dieser Figur zurueck.
animationsGeschwindigkeitSetzen(int)
public void animationsGeschwindigkeitSetzen(int intervall)
Setzt die Geschwindigkeit der Animation, die diese Figur Figuren steuert.
Jed groesser Die Zahl ist, desto langsamer laeuft die Animation, da der Eingabeparamter die Wartezeit zwischen der Schaltung der Animationsbilder in Millisekunden angibt!
intervall
- Die Wartezeit in Millisekunden zwischen den Bildaufrufen dieser Figur.public Collider erzeugeCollider()
Erzeugt einen neuen Collider für dieses Objekt. Diese Methode approximiert für das Objekt der jeweils implementierenden Raum
-Klasse einen möglichst “guten” Collider; also einen solchen, der das tatsächliche Objekt möglichst genau umfängt, aber auch möglichst wenig Rechenarbeit beansprucht.
erzeugeCollider
in class Raum
Raum.colliderSetzen(Collider)