diff --git a/Programmierung2/src/oop/TypesofRealtionship/Mitarbeiter.java b/Programmierung2/src/oop/TypesofRealtionship/Mitarbeiter.java index bb13e56..a6582ed 100644 --- a/Programmierung2/src/oop/TypesofRealtionship/Mitarbeiter.java +++ b/Programmierung2/src/oop/TypesofRealtionship/Mitarbeiter.java @@ -19,7 +19,7 @@ public class Mitarbeiter { this.id = id; this.gehalt = gehalt; /* - * PersonalInformation = hier handelt es sich um Coposition, weil ich einen neuen Speicher in Class Mitarbeiter mit (new) reserviere + * PersonalInformation = hier handelt es sich um Composition, weil ich einen neuen Speicher in Class Mitarbeiter mit (new) reserviere * also Mitarbeiter kann nur mit Personalinformation existieren */ this.personalInformation = new PersonalInformation(vorname,mittelname,nachname,kontonummer, nationaläty,geburts) ; diff --git a/Programmierung2/src/Übungen/MeinAltesSpiel/Modell.java b/Programmierung2/src/Übungen/MeinAltesSpiel/Modell.java index 845f089..8d03d30 100644 --- a/Programmierung2/src/Übungen/MeinAltesSpiel/Modell.java +++ b/Programmierung2/src/Übungen/MeinAltesSpiel/Modell.java @@ -1,277 +1,195 @@ package Übungen.MeinAltesSpiel; -import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; -import java.util.Map.Entry; import java.util.Scanner; -import java.util.Collections; -import java.util.ArrayList; - public class Modell { - private String name; - private ArrayList karten; - private ArrayList figurenkarten; + private String name; + private ArrayList karten; + private ArrayList figurenkarten; - public Modell(String name) { - this.name = name; - karten = new ArrayList<>(); - figurenkarten = new ArrayList<>(); + public Modell(String name) { + this.name = name; + karten = new ArrayList<>(); + figurenkarten = new ArrayList<>(); + } - } + public String getName() { + return name; + } - public String getName() { - return name; - } + public void setName(String name) { + this.name = name; + } - public void setName(String name) { - this.name = name; - } + public ArrayList getKarten() { + return karten; + } - public ArrayList getKarten() { - return karten; - } + public void setKarten(ArrayList karten) { + this.karten = karten; + } - public void setKarten(ArrayList karten) { - this.karten = karten; - } + public ArrayList getFigurenkarten() { + return figurenkarten; + } - public ArrayList getFigurenkarten() { - return figurenkarten; - } + public void setFigurenkarten(ArrayList figurenkarten) { + this.figurenkarten = figurenkarten; + } - public void setFigurenkarten(ArrayList figurenkarten) { - this.figurenkarten = figurenkarten; - } - - @Override - public String toString() { - return "Modell [name=" + name + ", karten=" + karten + "]"; - } + @Override + public String toString() { + return "Modell [name=" + name + ", karten=" + karten + "]"; + } } class Controller { + private Modell spieler1; + private Modell spieler2; + private View view; + private ArrayList karten; + private ArrayList figurenkarten; + private ArrayList spielfeld; + private ArrayList aktuelleZweiKarten; - private Modell spieler1; - private Modell spieler2; - private View view; - private ArrayList karten; - private ArrayList figurenkarten; - private ArrayList spielfeld; - private ArrayList aktuelleZweiKarten; + private static final int JACK_KARTEN = 10; + private static final int DAME_KARTEN = 15; + private static final int KOENIG_KARTEN = 25; - public Controller(Modell spieler1, Modell spieler2, View view) { - this.spieler1 = spieler1; - this.spieler2 = spieler2; - karten = new ArrayList<>(); - figurenkarten = new ArrayList<>(); - spielfeld = new ArrayList<>(); - this.view = view; - aktuelleZweiKarten = new ArrayList<>(Collections.nCopies(2, 0)); - } + public Controller(Modell spieler1, Modell spieler2, View view) { + this.spieler1 = spieler1; + this.spieler2 = spieler2; + this.view = view; - public void setfigurenkarten() { - for (int i = 1; i <= 4; i++) { - figurenkarten.add("Jack"); - figurenkarten.add("Dame"); - figurenkarten.add("König"); - } + karten = new ArrayList<>(); + figurenkarten = new ArrayList<>(); + spielfeld = new ArrayList<>(); + aktuelleZweiKarten = new ArrayList<>(Collections.nCopies(2, 0)); + } - // Erste 6 figurenkarten für Spieler 1 - ArrayList kartenFuerSpieler1 = new ArrayList<>(figurenkarten.subList(0, figurenkarten.size() / 2)); - spieler1.setFigurenkarten(kartenFuerSpieler1); + public void setFigurenkarten() { + for (int i = 1; i <= 4; i++) { + figurenkarten.add("Jack"); + figurenkarten.add("Dame"); + figurenkarten.add("König"); + } - // Letzte 6 figurenkarten für Spieler 2 - ArrayList kartenFuerSpieler2 = new ArrayList<>( - figurenkarten.subList(figurenkarten.size() / 2, figurenkarten.size())); - spieler2.setFigurenkarten(kartenFuerSpieler2); - } + ArrayList kartenFuerSpieler1 = new ArrayList<>(figurenkarten.subList(0, 6)); + ArrayList kartenFuerSpieler2 = new ArrayList<>(figurenkarten.subList(6, 12)); - public ArrayList getfigurenkarten() { - return figurenkarten; - } + spieler1.setFigurenkarten(kartenFuerSpieler1); + spieler2.setFigurenkarten(kartenFuerSpieler2); + } - public void setKarten() { - for (int i = 1; i <= 4; i++) - for (int j = 1; j <= 9; j++) - karten.add(j); + public void setKarten() { + for (int i = 1; i <= 4; i++) { + for (int j = 1; j <= 9; j++) { + karten.add(j); + } + } - // Karten mischen - Collections.shuffle(karten); + Collections.shuffle(karten); - // Erste 18 Karten für Spieler 1 - ArrayList kartenFuerSpieler1 = new ArrayList<>(karten.subList(0, 18)); - spieler1.setKarten(kartenFuerSpieler1); + ArrayList kartenFuerSpieler1 = new ArrayList<>(karten.subList(0, 18)); + ArrayList kartenFuerSpieler2 = new ArrayList<>(karten.subList(18, 36)); - // Letzte 18 Karten für Spieler 2 - ArrayList kartenFuerSpieler2 = new ArrayList<>(karten.subList(18, 36)); - spieler2.setKarten(kartenFuerSpieler2); + spieler1.setKarten(kartenFuerSpieler1); + spieler2.setKarten(kartenFuerSpieler2); + } - } + public void werfeEineKarte(Modell spieler) { + if (!spieler.getKarten().isEmpty()) { + spielfeld.add(spieler.getKarten().remove(0)); + aktuelleZweiKarten.set(0, spieler1.getKarten().get(0)); + aktuelleZweiKarten.set(1, spieler1.getKarten().get(1)); + } else { + handleKeineKartenMehr(spieler); + } + } - public ArrayList getSpielfeld() { - return spielfeld; - } + private void handleKeineKartenMehr(Modell spieler) { + Modell gegner = (spieler == spieler1) ? spieler2 : spieler1; + view.zeigeNachricht("Du hast keine Karten mehr!"); + String auswahl = view.frageUser("Möchtest Du Karten kaufen? Ja/Nein"); - public void setSpielfeld(ArrayList spielfeld) { - this.spielfeld = spielfeld; - } + if (auswahl.equalsIgnoreCase("ja")) { + boolean erfolgreich = false; + while (!erfolgreich) { + auswahl = view.frageUser("Aus dem Spielfeld oder von deinem Gegner?\nSpielfeld = S, Gegner = G"); + if (auswahl.equalsIgnoreCase("S")) { + erfolgreich = kaufeKarten(spieler, spielfeld); + } else if (auswahl.equalsIgnoreCase("G")) { + erfolgreich = kaufeKarten(spieler, gegner.getKarten()); + } else { + view.zeigeErorr("Falsche Eingabe!"); + } + } + } + } - public ArrayList getAlleKarten() { - return karten; - } + private boolean kaufeKarten(Modell käufer, ArrayList quelle) { + view.zeigeNachricht("Deine Figurenkarten: " + käufer.getFigurenkarten()); + String auswahl = view.frageUser("Wie viele Karten möchtest du kaufen? \nJack = 10 Karten, Dame = 15 Karten, König = 25 Karten"); - private String auswahl; + int anzahlKarten; + switch (auswahl.toLowerCase()) { + case "jack": + anzahlKarten = JACK_KARTEN; + break; + case "dame": + anzahlKarten = DAME_KARTEN; + break; + case "könig": + anzahlKarten = KOENIG_KARTEN; + break; + default: + view.zeigeErorr("Falsche Eingabe!"); + return false; + } - public void werfeEineKarte(Modell spieler) { - - if (spieler.getKarten().size() > 0) { - spielfeld.add(spieler.getKarten().get(0)); - spieler.getKarten().remove(0); - aktuelleZweiKarten.set(0,spieler1.getKarten().get(0)); - aktuelleZweiKarten.set(0,spieler1.getKarten().get(1)); - } - else { - Modell gegner = (spieler == spieler1) ? spieler2 : spieler1; - view.zeigeNachricht("Du hast keine Karten mehr!"); - auswahl = view.frageUser("möchtest Du Karten kaufen? Ja/Nein"); - if (auswahl.equalsIgnoreCase("ja")) { - while (true) { - view.frageUser("Aus dem Spielfield oder vom deinem Entgegener?\n" + "Speielfiel = S ,Entgegener = EG "); - if (auswahl.equalsIgnoreCase("S")) { - if (getSpielfeld().size() > 0) { - kaufeKartenvomSpielfield(spieler); - break; - } - else { - view.zeigeNachricht("Das Spielfield hat " + getSpielfeld() + " Karten"); - kaufeKartenvomgegenr(spieler,gegner); - break; - } - } - else if (auswahl.equalsIgnoreCase("EG")) { - kaufeKartenvomgegenr(spieler,gegner); - break; - } - else { - view.zeigeErorr("Falsche Eingabe!"); - continue; - } - - } - } - } - } - - - private ArrayList setNeueKarten; - private void kaufeKartenvomSpielfield(Modell käufer) { - setNeueKarten = new ArrayList<>(); - while (true) { - view.zeigeNachricht("Deine Figurenkarten: " + käufer.getFigurenkarten()); - auswahl = view.frageUser( - "Wie viel karten möchtest du kaufen? \n" + "Jack = 10 Karten, Dame = 15 karten und König = 25 Karten"); - int anzahlKarten = 0; - if (auswahl.equalsIgnoreCase("Jack")) - anzahlKarten = 10; + if (käufer.getFigurenkarten().contains(auswahl)) { + ArrayList neueKarten = new ArrayList<>(); + for (int i = 0; i < anzahlKarten && !quelle.isEmpty(); i++) { + neueKarten.add(quelle.remove(0)); + } + Collections.shuffle(neueKarten); + käufer.getKarten().addAll(neueKarten); + return true; + } else { + view.zeigeErorr("Diese Figurenkarte hast du nicht!"); + return false; + } + } - else if (auswahl.equalsIgnoreCase("Dame")) - anzahlKarten = 15; - - else if (auswahl.equalsIgnoreCase("König")) - anzahlKarten = 25; - - else { - view.zeigeErorr("Falsche Eingabe!"); - continue; - } - - if (käufer.getFigurenkarten().contains(auswahl)) { - for (int i = 1; i < anzahlKarten && i < getSpielfeld().size(); i++) { - setNeueKarten.add(getSpielfeld().get(i)); - getSpielfeld().remove(i); - } - Collections.shuffle(setNeueKarten); - käufer.setKarten(setNeueKarten); - break; - }else { - view.zeigeErorr("Diese Figurenkarte hast du nicht!"); - continue; - } - - } - - } - private void kaufeKartenvomgegenr(Modell käufer, Modell gegner) { - setNeueKarten = new ArrayList<>(); - while (true) { - view.zeigeNachricht("Deine Figurenkarten: " + käufer.getFigurenkarten()); - auswahl = view.frageUser( - "Wie viel karten möchtest du kaufen? \n" + "Jack = 10 Karten, Dame = 15 karten und König = 25 Karten"); - int anzahlKarten = 0; - if (auswahl.equalsIgnoreCase("Jack")) - anzahlKarten = 10; - - else if (auswahl.equalsIgnoreCase("Dame")) - anzahlKarten = 15; - - else if (auswahl.equalsIgnoreCase("König")) - anzahlKarten = 25; - - else { - view.zeigeErorr("Falsche Eingabe!"); - continue; - } - - if (käufer.getFigurenkarten().contains(auswahl)) { - for (int i = 1; i < anzahlKarten && i < gegner.getKarten().size(); i++) { - setNeueKarten.add(gegner.getKarten().get(i)); - gegner.getKarten().remove(i); - } - Collections.shuffle(setNeueKarten); - käufer.setKarten(setNeueKarten); - break; - }else { - view.zeigeErorr("Diese Figurenkarte hast du nicht!"); - continue; - } - - } - } - - public boolean checkGewinner(Modell verlieher) { - Modell gewinner = (verlieher == spieler1)? spieler2:spieler1; - - if (verlieher.getKarten().size() == 0 &&verlieher.getFigurenkarten().size() == 0 ) { - String gruen = "\u001B[32m"; - view.gewinner(gruen + gewinner.getName() + " hat gewonnen" ); - } - return true; - } + public boolean checkGewinner(Modell verlierer) { + Modell gewinner = (verlierer == spieler1) ? spieler2 : spieler1; + if (verlierer.getKarten().isEmpty() && verlierer.getFigurenkarten().isEmpty()) { + view.gewinner(gewinner.getName() + " hat gewonnen"); + return true; + } + return false; + } } class View { - private Scanner scanner = new Scanner(System.in); + private Scanner scanner = new Scanner(System.in); - public void zeigeNachricht(String nachricht) { - System.out.println(nachricht); - } + public void zeigeNachricht(String nachricht) { + System.out.println(nachricht); + } - public void zeigeErorr(String nachricht) { - System.err.println(nachricht); - } + public void zeigeErorr(String nachricht) { + System.err.println(nachricht); + } - public String frageUser(String nachricht) { - System.out.println(nachricht); - return scanner.nextLine(); - } - - public void gewinner(String nachricht) { - System.out.println(nachricht); - } - public void zeigeAktuelleZweikarten(String nachricht) { - System.out.println(nachricht); - } -} \ No newline at end of file + public String frageUser(String nachricht) { + System.out.println(nachricht); + return scanner.nextLine(); + } + + public void gewinner(String nachricht) { + System.out.println(nachricht); + } +}