Ejemplo n.º 1
0
    public int zugErlaubt(
        int kartennummer) { // überprüft, ob der zug erlaubt ist (Abarbeiten der erlaubten fälle)
      String karteDieVersuchtWirdZuLegen = einzelneKarte(kartennummer);
      char farbeDieVersuchtWirdZuLegen = karteDieVersuchtWirdZuLegen.charAt(1);
      char IDDieVersuchtWirdZuLegen = karteDieVersuchtWirdZuLegen.charAt(0);

      if (stapel.gebeFarbe()
          == '4') { // Ist die Farbe der obersten Karte schwarz, so muss die karte aus der ersten
                    // Runde sein und das ablegen jeder karte ist erlaubt
        return 4; // normales ablegen
      }
      if (farbeDieVersuchtWirdZuLegen == '4') { // Sonderfall schwarze Karten
        if (IDDieVersuchtWirdZuLegen == 'd') {
          return farbWechselKarte(0); // normale farbwechselkarte
        }
        if (IDDieVersuchtWirdZuLegen == 'c'
            && hatKeineAndereMoeglichkeit()) { // +4 darf nur gelegt werden, wenn keine andere
                                               // möglichkeit
          stapel.setzeZiehFlag(4);
          System.out.println(name + "Du hast eine +4 gelegt!");
          System.out.println(name + "Die Gegnerin wird 4 Karten ziehen müssen oder kontern!");
          return farbWechselKarte(1); // +4 mit farbwechsel
        } else if (IDDieVersuchtWirdZuLegen == 'c' && !hatKeineAndereMoeglichkeit()) {
          strafKarte(
              name
                  + "Du hast versucht eine plus4 zu legen obwohl du noch andere Möglichkeiten hattest!\n\tDu musst eine Strafkarte ziehen!");
          return -1; // Zug nicht erlaubt
        }
      }
      if (IDDieVersuchtWirdZuLegen == stapel.gebeID()
          || farbeDieVersuchtWirdZuLegen
              == stapel.gebeFarbe()) { // Fall selbe ID oder Fall selbe Farbe wahr
        if (IDDieVersuchtWirdZuLegen == 'a') {
          stapel.setzeZiehFlag(2);
          System.out.println(name + "Du hast eine +2 gelegt!");
          System.out.println(
              name + "Die Nächste muss kontern oder " + stapel.gebeZiehFlag() + " Karten ziehen!");
          return 4; // normales ablegen
        } else if (IDDieVersuchtWirdZuLegen == 'b') {
          System.out.println(name + "Du hast eine Aussetzen-Karte gelegt!");
          aussetzen(true);
          return 4; // normales ablegen
        }
        System.out.println("Zug erfolgreich!");
        return 4; // karte darf gelegt werden (wenn das Programm hier ankommt, dann erfordert die
                  // Karte keine Sonderbehandlung)
      } else if (IDDieVersuchtWirdZuLegen
          != stapel.gebeID()) { // Fall Fehler wegen unterschiedlicher ID
        strafKarte(
            name
                + "Du hast versucht eine andere Zahl auf den Stapel zu legen als die oberste Karte! \nDu erhälst eine Strafkarte!");
        return -1;
      } else if (farbeDieVersuchtWirdZuLegen
          != stapel.gebeFarbe()) { // Fall Fehler wegen unterschiedlicher Farbe
        strafKarte(
            name + "Du hast versucht eine andere Farbe zu legen. Du erhälst eine strafkarte!");
        return -1; // Zug nicht erlaubt
      }
      return -1; // nicht erlaubt
    }
Ejemplo n.º 2
0
 boolean
     hatKeineAndereMoeglichkeit() { // Überprüft, ob der Spieler eine andere Karte außer der +4
                                    // legen kann
   String colorAll = "";
   String IDAll = "";
   for (int i = 1; i < karten.length(); i = i + 2) { // Alle Farben in einen String
     colorAll += karten.charAt(i);
   }
   for (int i = 0; i < karten.length(); i = i + 2) { // Alle IDs in einen String
     IDAll += karten.charAt(i);
   }
   if (IDAll.contains("d")
       || (IDAll.contains("" + stapel.gebeID()) && stapel.gebeID() != 'c')
       || (colorAll.contains("" + stapel.gebeFarbe()) && stapel.gebeID() != 'c')) {
     return false; // Spielerin hat noch andere Möglichkeiten zu legen
   } else {
     return true; // Spielerin kann nur diese +4 legen
   }
 }
Ejemplo n.º 3
0
    int kontern(
        String
            gewaehlteKarte) { // Überprüfen, ob die Spielerin kontern kann, Durchführen des Konters
                              // oder des Kartenziehens unter Berücksichtigung der Ausnahmefälle
      int fehlerID = pruefeEingabe(gewaehlteKarte);
      String karte = "";
      int kartennummer = 0;
      if (fehlerID == 1) { // kein Uno eingegeben
        kartennummer = Integer.parseInt(gewaehlteKarte);
      } else if (fehlerID == 2) { // uno eingegeben
        kartennummer = Integer.parseInt(gewaehlteKarte.substring(1, gewaehlteKarte.length()));
      }
      if (kartennummer != 0) {
        karte = einzelneKarte(kartennummer);
      }
      boolean error;
      do {
        int eingabeID =
            konterEingabe(
                gewaehlteKarte); // 0 = kein fehler, kein uno / 1= uno, kein fehler / -1 = fehler
        if (eingabeID == 0) { // spielerin zieht die karten, es kann auch kein UNO auftreten
          error = false;
        } else if (eingabeID == 1) { // spielerin hat uno gerufen
          error = false;
        } else if (eingabeID == 2) { // spielerin hat kein uno gerufen
          error = false;
        } else {
          error = true;
        }
        if (error) {
          System.out.println(name + "Falsche Eingabe, bitte erneut versuchen!");
        }
      } while (error);

      if (karte.equals("c4") || (karte.contains("a") && karte.charAt(1) == stapel.gebeFarbe())) {
        if (karte.equals("c4") && hatKeineAndereMoeglichkeit()) {
          stapel.setzeZiehFlag(4);
          System.out.println(name + "Du hast mit einer +4 gekontert!");
          System.out.println(
              name + "Der nächste muss kontern oder " + stapel.gebeZiehFlag() + " Karten ziehen!");
          farbWechselKarte(1);
          entferneGewisseKarte(kartennummer);
          return 0; // erfolgreich gekontert
        } else {
          stapel.setzeZiehFlag(2);
          System.out.println(name + "Du hast mit einer +2 gekontert!");
          System.out.println(
              name + "Der Nächste muss kontern oder " + stapel.gebeZiehFlag() + " Karten ziehen!");
          entferneGewisseKarte(kartennummer);
          return 0; // erfolgreich gekontert
        }
      } else {
        System.out.println("Du hast nicht gekontert!");
        plusXZiehen(stapel.gebeZiehFlag());
        if (stapel.gebeID() == 'c') {
          stapel.resetZiehflag();
          return 2; // Konter gegen eine +4 fehlgeschlagen (Spieler wird nicht übersprungen)
        } else {
          stapel.resetZiehflag();
          return 1; // Konter gegen eine +2 fehlgeschlagen (Spieler wird übersprungen)
        }
      }
    }