verbesste Code
parent
f3800727e0
commit
8b37461b71
|
@ -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) ;
|
||||||
|
|
|
@ -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<>();
|
||||||
if (spieler.getKarten().size() > 0) {
|
for (int i = 0; i < anzahlKarten && !quelle.isEmpty(); i++) {
|
||||||
spielfeld.add(spieler.getKarten().get(0));
|
neueKarten.add(quelle.remove(0));
|
||||||
spieler.getKarten().remove(0);
|
}
|
||||||
aktuelleZweiKarten.set(0,spieler1.getKarten().get(0));
|
Collections.shuffle(neueKarten);
|
||||||
aktuelleZweiKarten.set(0,spieler1.getKarten().get(1));
|
käufer.getKarten().addAll(neueKarten);
|
||||||
}
|
return true;
|
||||||
else {
|
} else {
|
||||||
Modell gegner = (spieler == spieler1) ? spieler2 : spieler1;
|
view.zeigeErorr("Diese Figurenkarte hast du nicht!");
|
||||||
view.zeigeNachricht("Du hast keine Karten mehr!");
|
return false;
|
||||||
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"))
|
public boolean checkGewinner(Modell verlierer) {
|
||||||
anzahlKarten = 15;
|
Modell gewinner = (verlierer == spieler1) ? spieler2 : spieler1;
|
||||||
|
if (verlierer.getKarten().isEmpty() && verlierer.getFigurenkarten().isEmpty()) {
|
||||||
else if (auswahl.equalsIgnoreCase("König"))
|
view.gewinner(gewinner.getName() + " hat gewonnen");
|
||||||
anzahlKarten = 25;
|
return true;
|
||||||
|
}
|
||||||
else {
|
return false;
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue