From 34888263481d5efa4f1ba6b7db69bda6da7b9253 Mon Sep 17 00:00:00 2001 From: Justin Klein <justin.klein@student.reutlingen-university.de> Date: Sun, 21 May 2023 20:08:50 +0000 Subject: [PATCH] Replace Regelwerk.java --- src/Regelwerk.java | 100 ++++++++++++++++++++++----------------------- 1 file changed, 49 insertions(+), 51 deletions(-) diff --git a/src/Regelwerk.java b/src/Regelwerk.java index b564451..58cfbf7 100644 --- a/src/Regelwerk.java +++ b/src/Regelwerk.java @@ -8,34 +8,33 @@ public class Regelwerk { public ArrayList<Integer> reihenfolge; public ArrayList<Farbe> color; - public void reihenfolgeFestlegen() { // spieler index in Array gespeichert + public void reihenfolgeFestlegen(int length) { reihenfolge = new ArrayList<Integer>(); - reihenfolge.add(0, 0); // index , value - reihenfolge.add(1, 1); - reihenfolge.add(2, 2); - reihenfolge.add(3, 3); + for(int i = 0; i < length; i++) { + reihenfolge.add(i,i); + } } public UnoKarte ersteKarte(UnoDeck hand, int zug, int anzahl) { if (zug == 1) { - Random rand = new Random(); // random zahl wird generriert - int n = rand.nextInt(anzahl); // random zahl von 0 bis DeckSize wird in n gespeichert - UnoKarte aktuellekarte = hand.get(n); // n wird in aktuelle karte gespeichert + Random rand = new Random(); + int n = rand.nextInt(anzahl); + UnoKarte aktuellekarte = hand.get(n); System.out.println("Die Aktuelle Karte:"); - System.out.println(aktuellekarte); // ausgabe + System.out.println(aktuellekarte); return aktuellekarte; } return hand.get(1); } public void aktuelleKarte(UnoKarte letzteKarte) { System.out.println("Die Aktuelle Karte:"); - System.out.println(letzteKarte); // ausgabe aktuelle karte + System.out.println(letzteKarte); } public int reihenfolge() { - int aktuell = reihenfolge.get(0); // erster spieler wird gespeichert - reihenfolge.remove(0); //erster spieler wird geklöscht - reihenfolge.add(aktuell); // erster spieler wird am ende des arrays eingefügt + int aktuell = reihenfolge.get(0); + reihenfolge.remove(0); + reihenfolge.add(aktuell); return aktuell; } public void wunschFestlegen(){ @@ -43,91 +42,90 @@ public class Regelwerk { color.add(0,Farbe.Wild); } - public boolean karteLegbar(UnoKarte aktuellekarte, UnoKarte neueKarte, String PlayerName[], UnoDeck deck, SpielerHand spielerHand) { - if (color.size() == 2) {// wird erst bei einem kartenWunsch genutzt - System.out.println("Wunchfarbe: " + color.get(1)); - if ((color.get(1) == neueKarte.getFarbe()) || (color.get(0) == neueKarte.getFarbe())) { // bedingung wunschfarbe selbe wie aktuelle Karten farbe oder bedingung ist wild auf wild - color.remove(1); // karte wird gelegt - return Lege(aktuellekarte, neueKarte, PlayerName, deck, spielerHand); + public boolean karteLegbar(UnoKarte aktuellekarte, UnoKarte neueKarte, UnoDeck deck, SpielerHand spielerHand, int lenght) { + if (color.size() == 2) { + if ((color.get(1) == neueKarte.getFarbe()) || (color.get(0) == neueKarte.getFarbe())) { + color.remove(1); + return Lege(aktuellekarte, neueKarte,deck, spielerHand,lenght); }else { return false; } - } else { // wird aufgerufen wenn keine wunschfarbe existiert - return Lege(aktuellekarte, neueKarte, PlayerName, deck, spielerHand); + } else { + return Lege(aktuellekarte, neueKarte, deck, spielerHand,lenght); } } - public boolean Lege(UnoKarte aktuellekarte, UnoKarte neueKarte,String PlayerName[], UnoDeck deck, SpielerHand spielerHand){ - if ((aktuellekarte.getFarbe() == neueKarte.getFarbe()) || (Farbe.Wild == neueKarte.getFarbe()) || ((aktuellekarte.getFarbe() == Farbe.Wild) && (Farbe.Wild != neueKarte.getFarbe()))) {// Farb kontrolle -> Bedingungen ob legbar oder nicht + public boolean Lege(UnoKarte aktuellekarte, UnoKarte neueKarte,UnoDeck deck, SpielerHand spielerHand, int lenght){ + if ((aktuellekarte.getFarbe() == neueKarte.getFarbe()) || (Farbe.Wild == neueKarte.getFarbe()) || ((aktuellekarte.getFarbe() == Farbe.Wild) && (Farbe.Wild != neueKarte.getFarbe()))) { if (neueKarte.getWert() == Wert.Zwei_Ziehen) { - Ziehen(PlayerName, deck, 2, spielerHand); + Ziehen(deck, 2, spielerHand); } else if (neueKarte.getWert() == Wert.Aussetzen) { aussetzen(); } else if (neueKarte.getWert() == Wert.Richtungswechsel) { - richtungaendern(); + richtungaendern(lenght); } else if (neueKarte.getWert() == Wert.Multicolor) { - wunschFarbe(); + //wunschFarbe(); }else if (neueKarte.getWert() == Wert.Draw_Four) { - wunschFarbe(); - Ziehen(PlayerName, deck, 4, spielerHand); + //wunschFarbe(); + Ziehen(deck, 4, spielerHand); } return true; - } else if ((aktuellekarte.getWert() == neueKarte.getWert()) || (Farbe.Wild == neueKarte.getFarbe()) || ((aktuellekarte.getFarbe() == Farbe.Wild) && (Farbe.Wild != neueKarte.getFarbe()))) {// Wert kontrolle -> (zB gruene vier geht auft blaue vier) + } else if ((aktuellekarte.getWert() == neueKarte.getWert()) || (Farbe.Wild == neueKarte.getFarbe()) || ((aktuellekarte.getFarbe() == Farbe.Wild) && (Farbe.Wild != neueKarte.getFarbe()))) { if (neueKarte.getWert() == Wert.Zwei_Ziehen) { - Ziehen(PlayerName, deck, 2, spielerHand); + Ziehen(deck, 2, spielerHand); } else if (neueKarte.getWert() == Wert.Aussetzen) { aussetzen(); } else if (neueKarte.getWert() == Wert.Richtungswechsel) { - richtungaendern(); + richtungaendern(lenght); }else if (neueKarte.getWert() == Wert.Multicolor) { - wunschFarbe(); + //wunschFarbe(); }else if (neueKarte.getWert() == Wert.Draw_Four) { - wunschFarbe(); - Ziehen(PlayerName, deck, 4, spielerHand); + //wunschFarbe(); + Ziehen(deck, 4, spielerHand); } return true; } return false; } - public void Ziehen(String PlayerName[], UnoDeck deck, int anzahl,SpielerHand spielerHand){ + public void Ziehen(UnoDeck deck, int anzahl,SpielerHand spielerHand){ int spieler = reihenfolge.get(0); spielerHand.befuelleSpieleHand(spieler, deck, anzahl); } public void aussetzen(){ - int aktuell = reihenfolge.get(0);// spieler wird in aktuell gespeichert - reihenfolge.remove(0);// nächster spieler wird gelöscht - reihenfolge.add(aktuell);// wird am ende des arrays hinzugefügt + int aktuell = reihenfolge.get(0); + reihenfolge.remove(0); + reihenfolge.add(aktuell); } - public void richtungaendern(){ - int [] richtungswechsel = new int[4];// neuer array richtungswechsel + public void richtungaendern(int lenght){ + int [] richtungswechsel = new int[lenght]; for(int i = 0; i < reihenfolge.size(); i++){ - richtungswechsel[i] = reihenfolge.get(i);// kopiervorgang der spieler zu richtungswechsel + richtungswechsel[i] = reihenfolge.get(i); } int size = reihenfolge.size(); for (int i = 0; i < size; i++) { - reihenfolge.remove(0);// löscht die einträge vom altem array + reihenfolge.remove(0); } - for(int i = 3; i >= 0; i--){ - reihenfolge.add(richtungswechsel[i]);// werte werden umgekehrt in den alten array wieder eingefügt + for(int i = size-1; i >= 0; i--){ + reihenfolge.add(richtungswechsel[i]); } - int zwischen = reihenfolge.get(0); // erster spieler wird in zwischen gespeichert - reihenfolge.remove(0);// erster spieler wird gelöscht - reihenfolge.add(zwischen);// erster spieler wird im array neu eingefügtr aber hinten + int zwischen = reihenfolge.get(0); + reihenfolge.remove(0); + reihenfolge.add(zwischen); } public void wunschFarbe(){ System.out.println("Welche Farbe möchteswt du?(Gruen, Blau, Gelb, Rot)"); switch (scanner.nextLine().toLowerCase()){ case "gruen": - color.add(Farbe.Gruen);// fügt in den array eine gruene Karte hinzu so kann als nächstes nur gruen gelegt werden + color.add(Farbe.Gruen); break; case "blau": - color.add(Farbe.Blau);// " + color.add(Farbe.Blau); break; case "gelb": - color.add(Farbe.Gelb);// " + color.add(Farbe.Gelb); break; case "rot": - color.add(Farbe.Rot);// " + color.add(Farbe.Rot); break; } } -- GitLab