diff --git a/StarTrek/src/Ladung.java b/StarTrek/src/Ladung.java index 78c09d5..95adf5c 100644 --- a/StarTrek/src/Ladung.java +++ b/StarTrek/src/Ladung.java @@ -1,3 +1,10 @@ +/** + * Eine Klasse, die Ladungen eines Raumschiffs darstellt + * + * @author "Joel Baldauf" + * @version 0.2 + * + */ public class Ladung { private String bezeichnung; private int menge; @@ -6,6 +13,11 @@ public class Ladung { } + /** + * parametisierter Konstruktor zum Erzeugen einer Ladung + * @param bezeichnung Bezeichnung für die Ladung + * @param menge Menge der Ladung + */ public Ladung(String bezeichnung, int menge) { this.setBezeichnung(bezeichnung); this.setMenge(menge); diff --git a/StarTrek/src/Raumschiff.java b/StarTrek/src/Raumschiff.java index c288891..a5d5d6c 100644 --- a/StarTrek/src/Raumschiff.java +++ b/StarTrek/src/Raumschiff.java @@ -1,7 +1,15 @@ import java.util.ArrayList; import java.util.Random; +/** + * Eine Klasse, die ein Raumschiff für das Spiel "Raumschiffe" darstellt + * + * @author "Joel Baldauf" + * @version 0.2 + * + */ public class Raumschiff { + private int photonentorpedoAnzahl; private int energieversorgungInProzent; private int schildeInProzent; @@ -12,10 +20,22 @@ public class Raumschiff { private static final ArrayList broadcastKommunikator = new ArrayList<>(); private final ArrayList ladungsverzeichnis; + public Raumschiff() { this.ladungsverzeichnis = new ArrayList<>(); } + /** + * voll parametisierter Konstruktor zum Erzeugen eines Raumschiffs. + * + * @param photonentorpedoAnzahl Anzahl der in die Torpedoröhre geladenen Photonentorpedos + * @param energieversorgungInProzent Zustand der Energieversorgung des Raumschiffs in Prozent + * @param schildeInProzent Zustand der Schilde des Raumschiffs in Prozent + * @param huelleInProzent Zustand der Hülle des Raumschiffs in Prozent + * @param lebenserhaltungssystemeInProzent Zustand der Lebenserhaltungssysteme des Raumschiffs in Prozent + * @param androidenAnzahl Anzahl der für Reparaturen verfügbaren Reparaturandroiden des Schiffs + * @param schiffsname Name des Raumschiffs + */ public Raumschiff(int photonentorpedoAnzahl, int energieversorgungInProzent, int schildeInProzent, int huelleInProzent, int lebenserhaltungssystemeInProzent, int androidenAnzahl, String schiffsname) { this.setPhotonentorpedoAnzahl(photonentorpedoAnzahl); this.setEnergieversorgungInProzent(energieversorgungInProzent); @@ -83,10 +103,21 @@ public class Raumschiff { this.schiffsname = schiffsname; } + + /** + * Methode, die Ladung zum Ladungsverzeichnis hinzufügt, diese also dem Raumschiff zuordnet + * @param neueLadung zum Ladungsverzeichnis hinzuzufügende Ladung + */ public void addLadung(Ladung neueLadung) { this.ladungsverzeichnis.add(neueLadung); } + /** + * Methode zum Abschießen eines Photonentorpedos + * Gibt es keine Torpedos, so wird als Nachricht an Alle -=*Click*=- ausgegeben. + * Ansonsten wird die Torpedoanzahl um eins reduziert und die Nachricht an Alle Photonentorpedo abgeschossen gesendet. Außerdem wird die Methode Treffer aufgerufen. + * @param r Das Raumschiff, welches vom Torpedo getroffen werden soll + */ public void photonentorpedoSchiessen(Raumschiff r) { if (this.getPhotonentorpedoAnzahl() == 0) { nachrichtAnAlle("-=*Click*=-"); @@ -97,6 +128,12 @@ public class Raumschiff { } } + /** + * Methode zum Abschießen einer Phaserkanone + * Ist die Energieversorgung kleiner als 50%, so wird als Nachricht an Alle -=*Click*=- ausgegeben. + * Ansonsten wird die Energieversorgung um 50% reduziert und die Nachricht an Alle “Phaserkanone abgeschossen” gesendet. Außerdem wird die Methode Treffer aufgerufen. + * @param r @param r Das Raumschiff, welches von der Phaserkanone getroffen werden soll + */ public void phaserkanoneSchiessen(Raumschiff r) { if (this.getEnergieversorgungInProzent() < 50) { nachrichtAnAlle("-=*Click*=-"); @@ -107,6 +144,14 @@ public class Raumschiff { } } + /** + * Methode, die aufgerufen wird, wenn ein Raumschiff getroffen wurde. + * Es wird eine entsprechende Nachricht in der Konsole ausgegeben. + * Die Schilde werden um 50% geschwächt + * Sollte anschließend die Schilde vollständig zerstört worden sein, so wird der Zustand der Hülle und der Energieversorgung jeweils um 50% abgebaut. + * Sollte danach der Zustand der Hülle auf 0% absinken, so sind die Lebenserhaltungssysteme vollständig zerstört und es wird eine Nachricht an Alle ausgegeben, dass die Lebenserhaltungssysteme vernichtet worden sind. + * @param r @param r "Das Raumschiff, welches getroffen wurde" + */ private void treffer(Raumschiff r) { System.out.println(r.getSchiffsname() + " wurde getroffen!\n"); @@ -127,14 +172,27 @@ public class Raumschiff { } } + + /** + * Methode, die eine Nachricht an alle in den BroadcastKommunikator einfügt + * Die gesammelten Nachrichten können später über die Methode {@link #eintraegeLogbuchZurueckgeben()} zurückgegeben werden. + * @param message In den BroadcastKommunikator einzutragende Nachricht + */ public void nachrichtAnAlle(String message) { broadcastKommunikator.add(this.schiffsname + ": " + message); } + /** + * @return Liste der Nachrichten, die an alle gesendet wurden + */ public ArrayList eintraegeLogbuchZurueckgeben() { return broadcastKommunikator; } + /** + * Methode, um Torpedos von den Ladungen in die Torpedoröhre zu laden. + * @param anzahlTorpedos Anzahl der zu ladenen Torpedos. Wenn größer angeben als verfügbar, so werden alle verfügbaren genutzt. + */ public void photonentorpedosLaden(int anzahlTorpedos) { if (this.ladungPhotonentorpedosAnzahl() == 0) { System.out.println("Keine Photonentorpedos gefunden!"); @@ -151,6 +209,13 @@ public class Raumschiff { } } + /** + * Methode, um Reparaturen am Raumschiff durchzuführen und so dessen Zustand zu verbessern + * @param schutzschilde true repariert die Schutzschilde, false repariert sie nicht + * @param energieversorgung true repariert die Energieversorgung, false repariert sie nicht + * @param schiffshuelle true repariert die Schiffshülle, false repariert sie nicht + * @param anzahlDroiden Anzahl der für die Reparatur einzusetzenden Androiden. Wenn mehr als verfügbar angegeben, werden alle verfügbaren genutzt. + */ public void reparaturDurchfuehren(boolean schutzschilde, boolean energieversorgung, boolean schiffshuelle, int anzahlDroiden) { Random random = new Random(); int zufallszahl = random.nextInt(100); @@ -175,6 +240,9 @@ public class Raumschiff { } } + /** + * Gibt den aktuellen Zustand (also alle Attribute) des Raumschiffs auf der Konsole aus + */ public void zustandRaumschiff() { System.out.println("Schiffsname: " + this.schiffsname); System.out.println("photonentorpedoAnzahl: " + this.photonentorpedoAnzahl); @@ -186,6 +254,9 @@ public class Raumschiff { System.out.println(); } + /** + * Gibt das Ladungsverzeichnis, also alle dem Raumschiff zugeordneten Ladungen auf der Konsole aus. + */ public void ladungsverzeichnisAusgeben() { System.out.println("Ladungen des Raumschiffs " + this.schiffsname); System.out.println("============================================"); @@ -197,10 +268,18 @@ public class Raumschiff { System.out.println(); } + /** + * Methode, die alle Ladungsobjekte mit einer Menge gleich 0 aus dem Ladungsverzeichnis entfernt + */ public void ladungsverzeichnisAufraeumen() { ladungsverzeichnis.removeIf(ladung -> ladung.getMenge() == 0); } + /** + * zusätzlich zur Aufgabenstellung implementierte Methode, die alle verfügbaren Photonentorpedos im Ladungsverzeichnis zählt + * (auch für den Fall wenn bspw. mehrere Einzelladungen verfügbar sind) + * @return Anzahl aktuell insgesamt verfügbarer Photonentorpedos im Ladungsverzeichnis + */ public int ladungPhotonentorpedosAnzahl() { int anzahl = 0; for (Ladung ladung : this.ladungsverzeichnis) { @@ -209,6 +288,12 @@ public class Raumschiff { return anzahl; } + + /** + * zusätzlich zur Aufgabenstellung implementierte Methode, die in die Torpedoröhre geladene Torpedos im Gegenzug aus den Ladungsobjekten entfernt bzw. diesen abzieht + * wird von {@link #photonentorpedosLaden(int)} aufgerufen + * @param anzahl wie viele Photonentorpedos aus dem Ladungsverzeichnis entfernt werden sollen + */ public void ladungPhotonentorpedoVermindern(int anzahl) { int tempToRemove; for (Ladung ladung : this.ladungsverzeichnis) { diff --git a/StarTrek/src/Test.java b/StarTrek/src/Test.java index 6af4e01..2d80277 100644 --- a/StarTrek/src/Test.java +++ b/StarTrek/src/Test.java @@ -1,4 +1,16 @@ +/** + * Testklasse zum Überprüfen der Funktionalität des Raumschiffs sowie der Ladungen + * + * @author "Joel Baldauf" + * @version 0.2 + * + */ public class Test { + /** + * Hauptprogramm. + * + * @param args Kommandozeilenparameter + */ public static void main(String[] args) { Raumschiff klingonen = new Raumschiff( 1,