Space Invaders

Eine Projektarbeit von Emely Mayer-Walcher & Torben Doese, TGI-J1, Schuljahr 2018-19.

 

Motivation

Das Retro-Spiel Space Invaders ist ein Shoot-`em-up-Computerspiel. Es wurde von Tomohiro Nishikado, einem japanischer Videospielentwickler, entworfen und programmiert. 1978 wurde es dann von Taito, einem japanischen Unternehmen mit ihrem Sitz in Tokio, vertrieben. Neben Pac-Man war Space Invaders eines der Spiele, die die frühe Entwicklung der Videospiele geprägt haben. Deshalb entschieden wir uns dieses Retro-Videospiel mit JavaFx zu entwickeln.

 

Klassendiagramm

Klassendiagramm Space Invaders

 

Die Klassen AnimationTimer, Shape und Rectangle sind JavaFX Kassen.
Ein Rectangle erbt von einem Shape (Vererbungsbeziehung). Daraus folgt, dass ein Rectangle ein Shape ist und Shape die Superklasse von Rectangle ist. Dadurch hat Rectangle spezielle Methoden wie getHeight oder getWidth.

Die Klasse Uhr ist ein Animationstimer.
Die Uhr erbt von der Klasse Animationstimer (Vererbungsbeziehung), diese Klasse ist abstrakt, da sie eine abstrakte Methode hat abstract void handle(long now). Da die Uhr von dieser abstrakten Klasse erbt, muss sie die Methode handle(long now) implementieren. Dadurch erfolgt der wiederholte Aufruf von verarbeiteUhrTickt() in der Klasse Steuerung.
Die Beziehung zwischen der Klasse Uhr und Steuerung ist bidirektional.

Die Klasse Steuerung ist das Zentrum des Programms. Sie hat Beziehungen zu allen Klassen, kennt also alle Objekte und kann somit auch deren Methoden aufrufen. Sie hat zu SpielController und Uhr eine bidirektionale Beziehung. Außerdem hat sie eine unidirektionale Beziehung zu Score, Leben, Meteor, Raumschiff und Alien.

Die Klasse SpielController ist unsere grafische Oberfläche, für die Steuerung hat sie also die Rolle dieGui. Sie ist dafür verantwortlich, dass dieAliens[], dasRaumschiff, dieMeteoren[], dieLeben und derScore auf dem spielFeld erscheinen. Die Beziehung zwischen SnakeController und Steuerung ist bidirektional.

Die Klasse Steuerung hat jeweils eine hat-Beziehung zu den Klassen Score, Leben, Meteor, Raumschiff und Alien. Sie erben von der Klasse Shape.
Diese Klassen haben alle bis auf Score das Attribut image welches bei Erzeugung eines Objekts mit dem passenden Imagebild gesetzt wird und im Laufe des Spiels durch die Beziehung ins SpielFeld eingefügt werden kann. Aliens & Raumschiffe haben eine weitere Beziehung zur der Klasse Schuss welche ihnen erlaubt Objekte von ihr zu erzeugen und Aliens und Raumschiffe schießen zulassen.

AnleitungsController, MenueController, EndscreenController und EndscreenController_1 sind die Klassen für die Controller der FXML-Dateien. Sie sind dafür verantwortlich, dass es möglich ist mithilfe der Klasse SpaceInvaders und dessen Methode setScene() zwischen den Scenen auf einer Stage zu wechseln. Die FXML-Controller werden automatisch erzeugt mit dem MakeController der FXML-Dateinen. 

Bei der Klasse SpaceInvaders handelt es sich um unsere Main-Klasse. Sie hat das static Attribut application welches beim Start der Klasse SpaceInvaders in der Methode void start(Stage stage) mithilfe des Schlüsselwort this eine Referenz auf das eigene Objekt bekommt. Um von außen auf dieses Attribut zugreifen zu können hat die Klasse die Methode static SpaceInvaders getApplicationInstance(), da diese static ist wird nicht mit dem Objektname sondern mit dem Klassennamen auf die Methode zugegriffen. 

 

  

Tags