diff --git a/Programmierung2/src/Übungen/MeinAltesSpiel/JTest.java b/Programmierung2/src/Übungen/MeinAltesSpiel/JTest.java index 3061646..0768f94 100644 --- a/Programmierung2/src/Übungen/MeinAltesSpiel/JTest.java +++ b/Programmierung2/src/Übungen/MeinAltesSpiel/JTest.java @@ -27,11 +27,6 @@ public class JTest { System.out.println("Omar" + omar.getKarten()); } - @Test - void testfigurenkarten() { - c1.setfigurenkarten(); - System.out.println("Obai" + obai.getFigurenkarten()); - System.out.println("Omar" + omar.getFigurenkarten()); - } + } diff --git a/Programmierung2/src/Übungen/MeinAltesSpiel/Modell.java b/Programmierung2/src/Übungen/MeinAltesSpiel/Modell.java index a089070..845f089 100644 --- a/Programmierung2/src/Übungen/MeinAltesSpiel/Modell.java +++ b/Programmierung2/src/Übungen/MeinAltesSpiel/Modell.java @@ -1,7 +1,10 @@ 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; @@ -11,12 +14,12 @@ public class Modell { private String name; private ArrayList karten; private ArrayList figurenkarten; - + public Modell(String name) { this.name = name; karten = new ArrayList<>(); - figurenkarten = new ArrayList<>(); - + figurenkarten = new ArrayList<>(); + } public String getName() { @@ -34,7 +37,7 @@ public class Modell { public void setKarten(ArrayList karten) { this.karten = karten; } - + public ArrayList getFigurenkarten() { return figurenkarten; } @@ -49,95 +52,226 @@ public class Modell { } } -class Controller{ - +class Controller { + private Modell spieler1; private Modell spieler2; private View view; private ArrayList karten; private ArrayList figurenkarten; private ArrayList spielfeld; - - public Controller(Modell spieler1, Modell spieler2,View view) { + private ArrayList aktuelleZweiKarten; + + public Controller(Modell spieler1, Modell spieler2, View view) { this.spieler1 = spieler1; this.spieler2 = spieler2; - karten =new ArrayList<>(); - figurenkarten =new ArrayList<>(); + karten = new ArrayList<>(); + figurenkarten = new ArrayList<>(); spielfeld = new ArrayList<>(); this.view = view; + aktuelleZweiKarten = new ArrayList<>(Collections.nCopies(2, 0)); } + public void setfigurenkarten() { for (int i = 1; i <= 4; i++) { figurenkarten.add("Jack"); figurenkarten.add("Dame"); figurenkarten.add("König"); } - - // Erste 18 Karten für Spieler 1 - ArrayList kartenFuerSpieler1 = new ArrayList<>(figurenkarten.subList(0, figurenkarten.size() / 2)); + + // Erste 6 figurenkarten für Spieler 1 + ArrayList kartenFuerSpieler1 = new ArrayList<>(figurenkarten.subList(0, figurenkarten.size() / 2)); spieler1.setFigurenkarten(kartenFuerSpieler1); - - // Letzte 18 Karten für Spieler 2 - ArrayList kartenFuerSpieler2 = new ArrayList<>(figurenkarten.subList(figurenkarten.size() / 2, figurenkarten.size())); - spieler2.setFigurenkarten(kartenFuerSpieler2); + + // Letzte 6 figurenkarten für Spieler 2 + ArrayList kartenFuerSpieler2 = new ArrayList<>( + figurenkarten.subList(figurenkarten.size() / 2, figurenkarten.size())); + spieler2.setFigurenkarten(kartenFuerSpieler2); } - - public ArrayList getfigurenkarten(){ + + public ArrayList getfigurenkarten() { return figurenkarten; } - + public void setKarten() { - for (int i = 1; i <= 4;i++) + for (int i = 1; i <= 4; i++) for (int j = 1; j <= 9; j++) karten.add(j); - + // Karten mischen Collections.shuffle(karten); - - // Erste 18 Karten für Spieler 1 - ArrayList kartenFuerSpieler1 = new ArrayList<>(karten.subList(0, 18)); + + // Erste 18 Karten für Spieler 1 + ArrayList kartenFuerSpieler1 = new ArrayList<>(karten.subList(0, 18)); spieler1.setKarten(kartenFuerSpieler1); - - // Letzte 18 Karten für Spieler 2 - ArrayList kartenFuerSpieler2 = new ArrayList<>(karten.subList(18, 36)); - spieler2.setKarten(kartenFuerSpieler2); - + + // Letzte 18 Karten für Spieler 2 + ArrayList kartenFuerSpieler2 = new ArrayList<>(karten.subList(18, 36)); + spieler2.setKarten(kartenFuerSpieler2); + } - - public ArrayList getAlleKarten(){ + + public ArrayList getSpielfeld() { + return spielfeld; + } + + public void setSpielfeld(ArrayList spielfeld) { + this.spielfeld = spielfeld; + } + + public ArrayList getAlleKarten() { return karten; } - + + private String auswahl; + public void werfeEineKarte(Modell spieler) { + if (spieler.getKarten().size() > 0) { spielfeld.add(spieler.getKarten().get(0)); spieler.getKarten().remove(0); - }else { + 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!"); - String auswahl = view.frageUser("möchtest Du Karten kaufen? Ja/Nein"); + auswahl = view.frageUser("möchtest Du Karten kaufen? Ja/Nein"); if (auswahl.equalsIgnoreCase("ja")) { - view.zeigeNachricht("Deine Figurenkarten: " + spieler.getKarten()); + 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; + } + + } } } - - - } - public void kaufeKarten(ArrayList figurenkarten) { + + 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; + + 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{ - private Scanner scanner = new Scanner(System.in); - +class View { + private Scanner scanner = new Scanner(System.in); + public void zeigeNachricht(String nachricht) { System.out.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 diff --git a/Programmierung2/src/Übungen/MeinAltesSpiel/Test.java b/Programmierung2/src/Übungen/MeinAltesSpiel/Test.java new file mode 100644 index 0000000..554ba9f --- /dev/null +++ b/Programmierung2/src/Übungen/MeinAltesSpiel/Test.java @@ -0,0 +1,22 @@ +package Übungen.MeinAltesSpiel; + +public class Test { + + public static void main(String[] args) throws InterruptedException { + Modell obai = new Modell("Obai"); + Modell omar = new Modell("omar"); + View view = new View(); + Controller c1 = new Controller(obai, omar, view); + c1.setKarten(); + c1.setfigurenkarten(); + while(true) { + c1.werfeEineKarte(obai); + c1.werfeEineKarte(omar); + Thread.sleep(1000); + } + + + + } + +}