From 60c59b87a9795371751866ae197fb521a994c318 Mon Sep 17 00:00:00 2001 From: Joel Date: Sun, 11 Apr 2021 20:53:47 +0200 Subject: [PATCH] implemented Ladung, Raumschiff classes + their methods --- Angestellter/Angestellter.iml | 2 +- Angestellter/bin/.gitignore | 1 - StarTrek/src/Ladung.java | 29 ++++++ StarTrek/src/Raumschiff.java | 158 +++++++++++++++++++++++++++----- StarTrek/{ => src}/StarTrek.iml | 2 +- 5 files changed, 168 insertions(+), 24 deletions(-) delete mode 100644 Angestellter/bin/.gitignore rename StarTrek/{ => src}/StarTrek.iml (82%) diff --git a/Angestellter/Angestellter.iml b/Angestellter/Angestellter.iml index aa82658..26db12c 100644 --- a/Angestellter/Angestellter.iml +++ b/Angestellter/Angestellter.iml @@ -6,7 +6,7 @@ - + \ No newline at end of file diff --git a/Angestellter/bin/.gitignore b/Angestellter/bin/.gitignore deleted file mode 100644 index baef28e..0000000 --- a/Angestellter/bin/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/Angestellter/ diff --git a/StarTrek/src/Ladung.java b/StarTrek/src/Ladung.java index 9ec7ad5..78c09d5 100644 --- a/StarTrek/src/Ladung.java +++ b/StarTrek/src/Ladung.java @@ -1,2 +1,31 @@ public class Ladung { + private String bezeichnung; + private int menge; + + public Ladung() { + + } + + public Ladung(String bezeichnung, int menge) { + this.setBezeichnung(bezeichnung); + this.setMenge(menge); + } + + public String getBezeichnung() { + return bezeichnung; + } + + public void setBezeichnung(String bezeichnung) { + this.bezeichnung = bezeichnung; + } + + public int getMenge() { + return menge; + } + + public void setMenge(int menge) { + this.menge = Math.max(menge, 0); + } + + } diff --git a/StarTrek/src/Raumschiff.java b/StarTrek/src/Raumschiff.java index 88798bf..cff1b49 100644 --- a/StarTrek/src/Raumschiff.java +++ b/StarTrek/src/Raumschiff.java @@ -1,4 +1,5 @@ import java.util.ArrayList; +import java.util.Random; public class Raumschiff { private int photonentorpedoAnzahl; @@ -15,15 +16,14 @@ public class Raumschiff { } - public Raumschiff(int photonentorpedoAnzahl, int energieversorgungInProzent, int schildeInProzent, int huelleInProzent, int lebenserhaltungssystemeInProzent, int androidenAnzahl, String schiffsname, ArrayList ladungsverzeichnis) { - this.photonentorpedoAnzahl = photonentorpedoAnzahl; - this.energieversorgungInProzent = energieversorgungInProzent; - this.schildeInProzent = schildeInProzent; - this.huelleInProzent = huelleInProzent; - this.lebenserhaltungssystemeInProzent = lebenserhaltungssystemeInProzent; - this.androidenAnzahl = androidenAnzahl; - this.schiffsname = schiffsname; - this.ladungsverzeichnis = ladungsverzeichnis; + public Raumschiff(int photonentorpedoAnzahl, int energieversorgungInProzent, int schildeInProzent, int huelleInProzent, int lebenserhaltungssystemeInProzent, int androidenAnzahl, String schiffsname) { + this.setPhotonentorpedoAnzahl(photonentorpedoAnzahl); + this.setEnergieversorgungInProzent(energieversorgungInProzent); + this.setSchildeInProzent(schildeInProzent); + this.setHuelleInProzent(huelleInProzent); + this.setLebenserhaltungssystemeInProzent(lebenserhaltungssystemeInProzent); + this.setAndroidenAnzahl(androidenAnzahl); + this.setSchiffsname(schiffsname); } public int getPhotonentorpedoAnzahl() { @@ -82,35 +82,151 @@ public class Raumschiff { this.schiffsname = schiffsname; } - public void addLadung (Ladung neueLadung) { + public void addLadung(Ladung neueLadung) { this.ladungsverzeichnis.add(neueLadung); } - public void photonentorpedoSchiessen (Raumschiff r) { - //TODO + public void photonentorpedoSchiessen(Raumschiff r) { + if (this.getPhotonentorpedoAnzahl() == 0) { + nachrichtAnAlle("-=*Click*=-"); + } + else { + this.setPhotonentorpedoAnzahl(this.getPhotonentorpedoAnzahl()-1); + nachrichtAnAlle("Photonentorpedo abgeschossen"); + treffer(r); + } } - public void phaserkanoneSchiessen (Raumschiff r) { - //TODO + public void phaserkanoneSchiessen(Raumschiff r) { + if (this.getEnergieversorgungInProzent() < 50) { + nachrichtAnAlle("-=*Click*=-"); + } + else { + this.setEnergieversorgungInProzent(this.getEnergieversorgungInProzent()-50); + nachrichtAnAlle("Phaserkanone abgeschossen"); + treffer(r); + } } private void treffer(Raumschiff r) { - //TODO + System.out.println(r.getSchiffsname() + "wurde getroffen!"); + + //wenn Schilde vollständig zerstört + if (r.getSchildeInProzent() < 1) { + + if (r.getHuelleInProzent() < 1) { + r.setLebenserhaltungssystemeInProzent(0); + nachrichtAnAlle("Lebenserhaltungssysteme von Raumschiff " + r.schiffsname + "vernichtet"); + } + else { + //Hülle um 50 Prozent abbauen + r.setHuelleInProzent(r.getHuelleInProzent() - 50); + //Energieversorgung um 50 Prozent abbauen + r.setEnergieversorgungInProzent(r.getEnergieversorgungInProzent() - 50); + } + } + else { + //Schilde um 50 Prozent schwächen + r.setSchildeInProzent(r.getSchildeInProzent()-50); + } } public void nachrichtAnAlle(String message) { - //TODO + broadcastKommunikator.add(message); } public ArrayList eintraegeLogbuchZurueckgeben() { - //TODO - return null; + return broadcastKommunikator; } - public void photonentorpedosLaden(int anzahlTorpedos){ - //TODO + public void photonentorpedosLaden(int anzahlTorpedos) { + if (this.ladungPhotonentorpedosAnzahl() == 0) { + System.out.println("Keine Photonentorpedos gefunden!"); + nachrichtAnAlle("=*Click*=-"); + } + + else { + //wenn Photonentorpedos mehr als in Ladung verfügbar, alle verfügbaren laden + if (anzahlTorpedos > this.ladungPhotonentorpedosAnzahl()) + anzahlTorpedos = this.ladungPhotonentorpedosAnzahl(); + + System.out.println(anzahlTorpedos + "Photonentorpedo(s) eingesetzt"); + } } - public void reparaturDurchfuehren(boolean schutzschilde, boolean energieversorgung, boolean schiffshuell) + public void reparaturDurchfuehren(boolean schutzschilde, boolean energieversorgung, boolean schiffshuelle, int anzahlDroiden) { + Random random = new Random(); + int zufallszahl = random.nextInt(100); + int anzahlTrue = 0; + if (schutzschilde) { + anzahlTrue += 1; + } + else if (energieversorgung) { + anzahlTrue += 1; + } + else if (schiffshuelle) { + anzahlTrue += 1; + } + + int reparaturErg = (zufallszahl * anzahlDroiden) / anzahlTrue; + + if (schutzschilde) { + this.setSchildeInProzent(this.getSchildeInProzent() + reparaturErg); + } + else if (energieversorgung) { + this.setEnergieversorgungInProzent(this.getEnergieversorgungInProzent() + reparaturErg); + } + else if (schiffshuelle) { + this.setHuelleInProzent(this.getHuelleInProzent() + reparaturErg); + } + } + + public void zustandRaumschiff() { + System.out.println("Schiffsname: " + this.schiffsname); + System.out.println("photonentorpedoAnzahl: " + this.photonentorpedoAnzahl); + System.out.println("energieversorgungInProzent: " + this.energieversorgungInProzent); + System.out.println("schildeInProzent: " + this.schildeInProzent); + System.out.println("huelleInProzent: " + this.huelleInProzent); + System.out.println("lebenserhaltungssystemeInProzent: " + this.lebenserhaltungssystemeInProzent); + System.out.println("androidenAnzahl: " + this.androidenAnzahl); + } + + public void ladungsverzeichnisAusgeben() { + System.out.println("Ladungen des Raumschiffs " + this.schiffsname); + System.out.println("============================================"); + for (Ladung ladung:this.ladungsverzeichnis) { + System.out.println("Ladungsbezeichnung: " + ladung.getBezeichnung()); + System.out.println("Menge: " + ladung.getMenge()); + System.out.println("============================================"); + } + } + + public void ladungsverzeichnisAufraeumen() { + ladungsverzeichnis.removeIf(ladung -> ladung.getMenge() == 0); + } + + public int ladungPhotonentorpedosAnzahl() { + int anzahl = 0; + for (Ladung ladung:this.ladungsverzeichnis) { + if (ladung.getBezeichnung().equalsIgnoreCase("photonentorpedos")) anzahl += ladung.getMenge(); + } + return anzahl; + } + + public void ladungPhotonentorpedoVermindern(int anzahl) { + int tempToRemove; + for (Ladung ladung:this.ladungsverzeichnis) { + if (ladung.getBezeichnung().equalsIgnoreCase("photonentorpedos") && anzahl > 0) { + if (ladung.getMenge() < anzahl) { + tempToRemove = ladung.getMenge(); + anzahl -= tempToRemove; + } + else { + tempToRemove = ladung.getMenge(); + } + ladung.setMenge(ladung.getMenge()-tempToRemove); + } + } + } } diff --git a/StarTrek/StarTrek.iml b/StarTrek/src/StarTrek.iml similarity index 82% rename from StarTrek/StarTrek.iml rename to StarTrek/src/StarTrek.iml index c90834f..b107a2d 100644 --- a/StarTrek/StarTrek.iml +++ b/StarTrek/src/StarTrek.iml @@ -3,7 +3,7 @@ - +