Package tetris.tetrominos
Class Tetromino
java.lang.Object
tetris.tetrominos.Tetromino
Ein Tetromino ist ein Spielstein in Form von vier Blöcken.
- Author:
- Josef Friedrich
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Block[]protected Gridprotected Stringstatic String[]Die Reihenfolge der Tetrominos wurde so übernommen, wie sie für den damaligen Zufallsgenerator des ursprünglichen Gameboys aufgereiht wurden.intDie Rotation des Tetrominos.protected SceneEine Referenz auf dieSzene, in der der Tetromino erstellt wurde.protected intDie x-Koordinate des Tetrominos entspricht der Lage des ersten Blocks, also dem Block mit der Indexnummer 0 im Blockfeld.protected intDie y-Koordinate des Tetrominos entspricht der Lage des ersten Blocks, also dem Block mit der Indexnummer 0 im Blockfeld. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddBlock(int index, int x, int y) Fügt einen Block ein.protected voidFügt alle Blöcke des Tetrominos in das Blockgitter ein.voidDiese Methode wird benötigt, um Tetrominos außerhalb des Grids zu rotieren und dann in die gewünschte Endposition zu bringen.protected booleanprotected booleanprotected booleanstatic TetrominoErzeugt ein Tetromino durch Angabe einer Nummer.static TetrominoErzeugt ein Tetromino durch Angabe des Names.protected abstract voidFührt die eigentliche Rotation des Tetrominos durch, d. h. sie bewegt einzelnen Blöcke an neue Positionen.intgetX()Gibt die x-Koordinate des Tetrominos zurück.intgetY()Gibt die y-Koordinate des Tetrominos zurück.protected booleanisGridTaken(int x, int y) Überprüft, ob die gegebene Koordinate im Blockgitter besetzt ist.booleanisOwnBlockPosition(int x, int y) Überprüft, ob die gegebene Koordinate mit einem der vier eigenen Blöcke des Tetrominos übereinstimmt.protected voidmoveBlock(int index, int dX, int dY) Bewegt einen Block an eine neue Position durch Angabe eines relativen Vectors.booleanmoveDown()Bewegt das Tetromino um eine Reihe nach unten.booleanmoveLeft()Bewegt das Tetromino um eine Spalte nach links.booleanBewegt das Tetromino um eine Spalte nach rechts.voidremove()Entfernt das Tetromino aus der Szene, d. h. alle Block werden sowohl aus der Szene als auch aus dem Blockgitter entfernt.protected voidEntfernt alle Blöcke des Tetrominos aus dem Blockgitter.booleanrotate()Führt eine Rechtsdrehung durch.
-
Field Details
-
names
Die Reihenfolge der Tetrominos wurde so übernommen, wie sie für den damaligen Zufallsgenerator des ursprünglichen Gameboys aufgereiht wurden. -
scene
Eine Referenz auf dieSzene, in der der Tetromino erstellt wurde. Diese Referenz wird an die Block-Klasse weitergereicht. -
grid
-
name
-
x
protected int xDie x-Koordinate des Tetrominos entspricht der Lage des ersten Blocks, also dem Block mit der Indexnummer 0 im Blockfeld. -
y
protected int yDie y-Koordinate des Tetrominos entspricht der Lage des ersten Blocks, also dem Block mit der Indexnummer 0 im Blockfeld. -
blocks
-
rotation
public int rotationDie Rotation des Tetrominos.
-
-
Constructor Details
-
Tetromino
Erzeugt ein Tetromino durch Angabe des Names.- Parameters:
scene- Die Szene, in der das Tetromino eingefügt werden soll.grid- Das Blockgitter, in das das Tetromino eingefügt werden soll.name- Der Name des Tetrominos, zum Beispiel J, L, etc. Die Tetrominos sind nach Großbuchstaben benannt.x- Die x-Koordinate (entspricht der Koordinate des 0-ten Blocks), an der das Tetromino eingefügt werden soll.y- Die y-Koordinate (entspricht der Koordinate des 0-ten Blocks), an der das Tetromino eingefügt werden soll.
-
-
Method Details
-
getX
public int getX()Gibt die x-Koordinate des Tetrominos zurück.- Returns:
- Die x-Koordinate des Tetrominos entspricht der Lage des ersten Blocks, also dem Block mit der Indexnummer 0 im Blockfeld.
-
getY
public int getY()Gibt die y-Koordinate des Tetrominos zurück.- Returns:
- Die y-Koordinate des Tetrominos entspricht der Lage des ersten Blocks, also dem Block mit der Indexnummer 0 im Blockfeld.
-
addBlock
protected void addBlock(int index, int x, int y) Fügt einen Block ein.- Parameters:
index- Die Indexnummer im Blockfeld.x- Die x-Koordinate, an der der Block eingefügt werden soll.y- Die y-Koordinate, an der der Block eingefügt werden soll.
-
moveBlock
protected void moveBlock(int index, int dX, int dY) Bewegt einen Block an eine neue Position durch Angabe eines relativen Vectors.- Parameters:
index- Die Indexnummer, die angibt, welcher Block verschoben werden soll.dX- Delta-Wert der Bewegung in x-Richtung.dY- Delta-Wert der Bewegung in y-Richtung.
-
isOwnBlockPosition
public boolean isOwnBlockPosition(int x, int y) Überprüft, ob die gegebene Koordinate mit einem der vier eigenen Blöcke des Tetrominos übereinstimmt. -
isGridTaken
protected boolean isGridTaken(int x, int y) Überprüft, ob die gegebene Koordinate im Blockgitter besetzt ist. Dabei wird ein eigener Block ignoriert. -
addGrid
Diese Methode wird benötigt, um Tetrominos außerhalb des Grids zu rotieren und dann in die gewünschte Endposition zu bringen. So können wir ein vorbelegtes Gitter erzeugen, um den Algorithmus zu testen, wie ausgefüllte Reihen aus dem Gitter gelöscht werden. Die Tetrominos werden zunächst ohne Gitter erzeugt (grid = null), dann rotiert und an die gewünschte Position geschoben und schließlich wird diese Methode aufgerufen und die Blöcke werden dem Gitter hinzugefügt.- Parameters:
grid- Ein Blockgitter.
-
addBlocksToGrid
protected void addBlocksToGrid()Fügt alle Blöcke des Tetrominos in das Blockgitter ein.Die Blöcke können nicht einzeln im Gitter verschoben werden, da sie sich sonst gegenseitig überschreiben würden.
- See Also:
-
removeBlocksFromGrid
protected void removeBlocksFromGrid()Entfernt alle Blöcke des Tetrominos aus dem Blockgitter.Die Blöcke können nicht einzeln im Gitter verschoben werden, da sie sich sonst gegenseitig überschreiben würden.
- See Also:
-
checkLeft
protected boolean checkLeft() -
moveLeft
public boolean moveLeft()Bewegt das Tetromino um eine Spalte nach links.- Returns:
- Wahr, wenn sich das Tetromino bewegen konnte, sonst falsch.
-
checkRight
protected boolean checkRight() -
moveRight
public boolean moveRight()Bewegt das Tetromino um eine Spalte nach rechts.- Returns:
- Wahr, wenn sich das Tetromino bewegen konnte, sonst falsch.
-
checkDown
protected boolean checkDown() -
moveDown
public boolean moveDown()Bewegt das Tetromino um eine Reihe nach unten.- Returns:
- Wahr, wenn sich das Tetromino bewegen konnte, sonst falsch.
-
doRotation
protected abstract void doRotation()Führt die eigentliche Rotation des Tetrominos durch, d. h. sie bewegt einzelnen Blöcke an neue Positionen.Es handelt sich um eine abstrakte Einschubmethode, die nach dem Schablonen-Methode-Entwurfsmuster (englisch template method) von den Unterklassen - den einzelnen Tetrominos - implementiert werden müssen.
- See Also:
-
rotate
public boolean rotate()Führt eine Rechtsdrehung durch.Es handelt sich um eine Schablonen-Methode (englisch template method) nach dem gleichnamigen Entwurfsmuster. Diese Methode ruft die abstrakte Methoden
doRotation()auf, die erst in den Unterklassen der einzelnen Tetrominos definiert werden.- Returns:
- Gibt wahr zurück, wenn sind das Tetromino drehen konnte, sonst falsch.
- See Also:
-
remove
public void remove()Entfernt das Tetromino aus der Szene, d. h. alle Block werden sowohl aus der Szene als auch aus dem Blockgitter entfernt. -
create
Erzeugt ein Tetromino durch Angabe des Names.- Parameters:
scene- Die Szene, in der das Tetromino eingefügt werden soll.grid- Das Blockgitter, in das das Tetromino eingefügt werden soll.name- Der Name des Tetrominos, zum Beispiel J, L, etc. Die Tetrominos sind nach Großbuchstaben benannt.x- Die x-Koordinate (entspricht der Koordinate des 0-ten Blocks), an der das Tetromino eingefügt werden soll.y- Die y-Koordinate (entspricht der Koordinate des 0-ten Blocks), an der das Tetromino eingefügt werden soll.- Returns:
- Das erzeugte Tetromino.
-
create
Erzeugt ein Tetromino durch Angabe einer Nummer.- Parameters:
scene- Die Szene, in der das Tetromino eingefügt werden soll.grid- Das Blockgitter, in das das Tetromino eingefügt werden soll.number- Die Nummer des Tetrominos, 0 ist zum Beispiel das L-Tetromino, 6 das T-Tetromino.x- Die x-Koordinate (entspricht der Koordinate des 0-ten Blocks), an der das Tetromino eingefügt werden soll.y- Die y-Koordinate (entspricht der Koordinate des 0-ten Blocks), an der das Tetromino eingefügt werden soll.- Returns:
- Das erzeugte Tetromino.
-