verbesste Code

master
3009594 2024-08-27 21:58:38 +02:00
parent f3800727e0
commit 8b37461b71
2 changed files with 155 additions and 237 deletions

View File

@ -19,7 +19,7 @@ public class Mitarbeiter {
this.id = id; this.id = id;
this.gehalt = gehalt; 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 * also Mitarbeiter kann nur mit Personalinformation existieren
*/ */
this.personalInformation = new PersonalInformation(vorname,mittelname,nachname,kontonummer, nationaläty,geburts) ; this.personalInformation = new PersonalInformation(vorname,mittelname,nachname,kontonummer, nationaläty,geburts) ;

View File

@ -1,277 +1,195 @@
package Übungen.MeinAltesSpiel; package Übungen.MeinAltesSpiel;
import java.lang.reflect.Array;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Scanner; import java.util.Scanner;
import java.util.Collections;
import java.util.ArrayList;
public class Modell { public class Modell {
private String name; private String name;
private ArrayList<Integer> karten; private ArrayList<Integer> karten;
private ArrayList<String> figurenkarten; private ArrayList<String> figurenkarten;
public Modell(String name) { public Modell(String name) {
this.name = name; this.name = name;
karten = new ArrayList<>(); karten = new ArrayList<>();
figurenkarten = new ArrayList<>(); figurenkarten = new ArrayList<>();
}
} public String getName() {
return name;
}
public String getName() { public void setName(String name) {
return name; this.name = name;
} }
public void setName(String name) { public ArrayList<Integer> getKarten() {
this.name = name; return karten;
} }
public ArrayList<Integer> getKarten() { public void setKarten(ArrayList<Integer> karten) {
return karten; this.karten = karten;
} }
public void setKarten(ArrayList<Integer> karten) { public ArrayList<String> getFigurenkarten() {
this.karten = karten; return figurenkarten;
} }
public ArrayList<String> getFigurenkarten() { public void setFigurenkarten(ArrayList<String> figurenkarten) {
return figurenkarten; this.figurenkarten = figurenkarten;
} }
public void setFigurenkarten(ArrayList<String> figurenkarten) { @Override
this.figurenkarten = figurenkarten; public String toString() {
} return "Modell [name=" + name + ", karten=" + karten + "]";
}
@Override
public String toString() {
return "Modell [name=" + name + ", karten=" + karten + "]";
}
} }
class Controller { class Controller {
private Modell spieler1;
private Modell spieler2;
private View view;
private ArrayList<Integer> karten;
private ArrayList<String> figurenkarten;
private ArrayList<Integer> spielfeld;
private ArrayList<Integer> aktuelleZweiKarten;
private Modell spieler1; private static final int JACK_KARTEN = 10;
private Modell spieler2; private static final int DAME_KARTEN = 15;
private View view; private static final int KOENIG_KARTEN = 25;
private ArrayList<Integer> karten;
private ArrayList<String> figurenkarten;
private ArrayList<Integer> spielfeld;
private ArrayList<Integer> aktuelleZweiKarten;
public Controller(Modell spieler1, Modell spieler2, View view) { public Controller(Modell spieler1, Modell spieler2, View view) {
this.spieler1 = spieler1; this.spieler1 = spieler1;
this.spieler2 = spieler2; this.spieler2 = spieler2;
karten = new ArrayList<>(); this.view = view;
figurenkarten = new ArrayList<>();
spielfeld = new ArrayList<>();
this.view = view;
aktuelleZweiKarten = new ArrayList<>(Collections.nCopies(2, 0));
}
public void setfigurenkarten() { karten = new ArrayList<>();
for (int i = 1; i <= 4; i++) { figurenkarten = new ArrayList<>();
figurenkarten.add("Jack"); spielfeld = new ArrayList<>();
figurenkarten.add("Dame"); aktuelleZweiKarten = new ArrayList<>(Collections.nCopies(2, 0));
figurenkarten.add("König"); }
}
// Erste 6 figurenkarten für Spieler 1 public void setFigurenkarten() {
ArrayList<String> kartenFuerSpieler1 = new ArrayList<>(figurenkarten.subList(0, figurenkarten.size() / 2)); for (int i = 1; i <= 4; i++) {
spieler1.setFigurenkarten(kartenFuerSpieler1); figurenkarten.add("Jack");
figurenkarten.add("Dame");
figurenkarten.add("König");
}
// Letzte 6 figurenkarten für Spieler 2 ArrayList<String> kartenFuerSpieler1 = new ArrayList<>(figurenkarten.subList(0, 6));
ArrayList<String> kartenFuerSpieler2 = new ArrayList<>( ArrayList<String> kartenFuerSpieler2 = new ArrayList<>(figurenkarten.subList(6, 12));
figurenkarten.subList(figurenkarten.size() / 2, figurenkarten.size()));
spieler2.setFigurenkarten(kartenFuerSpieler2);
}
public ArrayList<String> getfigurenkarten() { spieler1.setFigurenkarten(kartenFuerSpieler1);
return figurenkarten; spieler2.setFigurenkarten(kartenFuerSpieler2);
} }
public void setKarten() { public void setKarten() {
for (int i = 1; i <= 4; i++) for (int i = 1; i <= 4; i++) {
for (int j = 1; j <= 9; j++) for (int j = 1; j <= 9; j++) {
karten.add(j); karten.add(j);
}
}
// Karten mischen Collections.shuffle(karten);
Collections.shuffle(karten);
// Erste 18 Karten für Spieler 1 ArrayList<Integer> kartenFuerSpieler1 = new ArrayList<>(karten.subList(0, 18));
ArrayList<Integer> kartenFuerSpieler1 = new ArrayList<>(karten.subList(0, 18)); ArrayList<Integer> kartenFuerSpieler2 = new ArrayList<>(karten.subList(18, 36));
spieler1.setKarten(kartenFuerSpieler1);
// Letzte 18 Karten für Spieler 2 spieler1.setKarten(kartenFuerSpieler1);
ArrayList<Integer> kartenFuerSpieler2 = new ArrayList<>(karten.subList(18, 36)); spieler2.setKarten(kartenFuerSpieler2);
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<Integer> getSpielfeld() { private void handleKeineKartenMehr(Modell spieler) {
return spielfeld; 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<Integer> spielfeld) { if (auswahl.equalsIgnoreCase("ja")) {
this.spielfeld = spielfeld; 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<Integer> getAlleKarten() { private boolean kaufeKarten(Modell käufer, ArrayList<Integer> quelle) {
return karten; 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 (käufer.getFigurenkarten().contains(auswahl)) {
ArrayList<Integer> 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;
}
}
if (spieler.getKarten().size() > 0) { public boolean checkGewinner(Modell verlierer) {
spielfeld.add(spieler.getKarten().get(0)); Modell gewinner = (verlierer == spieler1) ? spieler2 : spieler1;
spieler.getKarten().remove(0); if (verlierer.getKarten().isEmpty() && verlierer.getFigurenkarten().isEmpty()) {
aktuelleZweiKarten.set(0,spieler1.getKarten().get(0)); view.gewinner(gewinner.getName() + " hat gewonnen");
aktuelleZweiKarten.set(0,spieler1.getKarten().get(1)); return true;
} }
else { return false;
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<Integer> 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;
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;
}
} }
class View { class View {
private Scanner scanner = new Scanner(System.in); private Scanner scanner = new Scanner(System.in);
public void zeigeNachricht(String nachricht) { public void zeigeNachricht(String nachricht) {
System.out.println(nachricht); System.out.println(nachricht);
} }
public void zeigeErorr(String nachricht) { public void zeigeErorr(String nachricht) {
System.err.println(nachricht); System.err.println(nachricht);
} }
public String frageUser(String nachricht) { public String frageUser(String nachricht) {
System.out.println(nachricht); System.out.println(nachricht);
return scanner.nextLine(); return scanner.nextLine();
} }
public void gewinner(String nachricht) { public void gewinner(String nachricht) {
System.out.println(nachricht); System.out.println(nachricht);
} }
public void zeigeAktuelleZweikarten(String nachricht) {
System.out.println(nachricht);
}
} }