Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Arrays;
- import java.util.Scanner;
- public class Kniffel {
- // Hier der statische Scanner. Nutzbar für alle Methoden, außerdem
- // ist eingabe schön blau gefärbt.
- static Scanner eingabe = new Scanner(System.in);
- // Anleitung ausgeben.
- static void zeigeAnleitung() {
- System.out.println("|-------------------------------------------------|");
- System.out.println("|Jede Runde darf dreimal gewürfelt werden. Es ist |");
- System.out.println("|erlaubt, nur mit manchen Würfeln zu würfeln. |");
- System.out.println("|Am Ende jeder Runde muss das Ergebnis in eine der|");
- System.out.println("|folgenden Kategorien geschrieben werden: |");
- System.out.println("|Einser, Zweier, Dreier, Vierer, Fünfer, Sechser. |");
- System.out.println("|Es zählen jeweils alle Augen der jew. Sorte. |");
- System.out.println("|Bei insg. mehr als 63 Punkten gibt es einen Bonus|");
- System.out.println("|von 35 Punkten obendrauf. Dieses Feld ist zu klei|");
- System.out.println("|-------------------------------------------------|");
- }
- // Einmal würfeln. Sehr sinnvoll. Aber testatrelevant.
- static int wuerfeln() {
- return (int) (Math.random() * 6 + 1);
- }
- // Würfelt an allen Stellen, an denen eine Null steht.
- // Leere Int-Arrays sind standardmäßig überall Null.
- static void becherSchuetteln(int[] becher) {
- for (int i = 0; i < becher.length; i++) {
- if (becher[i] == 0) {
- becher[i] = wuerfeln(); // Diese Ersparnis, atemberaubend.
- }
- }
- }
- // Falscheingaben checken.
- static boolean istZulaessig(String eingabe, int untergrenze, int obergrenze) {
- String zulZiffern = "";
- // Alle zulässigen Ziffern in einem String. Hurra.
- for (int zahl = untergrenze; zahl <= obergrenze; zahl++) {
- zulZiffern = zulZiffern + zahl;
- }
- if (eingabe.length() == 1 && zulZiffern.contains(eingabe))
- return true;
- System.out.println("Danke für die Falscheingabe.");
- return false;
- }
- // Nächste Runde.
- static void naechsteRunde(int[] zettel, int runde) {
- if (runde <= 6) {
- System.out.println("Das ist Runde " + runde + ".");
- System.out.println();
- // Frischer Würfelbecher. Wird jede Runde neu auf dem Heap erzeugt.
- int[] becher = new int[5];
- // Erster Wurf. Steht halt außerhalb. Verklag mich doch.
- System.out.println("Dein Wurf:");
- becherSchuetteln(becher);
- // Wurf anzeigen.
- for (int wuerfel = 0; wuerfel < becher.length; wuerfel++) {
- System.out.println("Würfel " + (wuerfel + 1) + ": "+ becher[wuerfel]);
- }
- // Dieses war der erste Wurf, doch der zweite folgt sogl..urf.
- int wurf = 2;
- while (wurf <= 3) {
- // Für garstige Falscheingeber.
- String nutzerEingabe;
- int nutzerWuerfel = 1; // Sollte != 0 sein.
- boolean zulaessig;
- do {
- System.out.println("Welchen Würfel(Nummer) in den Becher tun?");
- System.out.println("0 für keinen weiteren.");
- nutzerEingabe = eingabe.nextLine();
- // Mit toller Ausgabe.
- zulaessig = istZulaessig(nutzerEingabe,0,5);
- if (zulaessig == true) {
- nutzerWuerfel = Integer.parseInt(nutzerEingabe);
- // Würfel, mit denen nochmal gewürfelt werden soll,
- // werden auf 0 gesetzt.
- // Null ist blos Abbruchbedingung für Würfel in den Becher tun.
- if(nutzerWuerfel != 0){
- // -1, Weil Würfel 1 an Stelle 0 ist etc.
- becher[nutzerWuerfel - 1] = 0;
- }
- }
- } while (nutzerWuerfel != 0);
- // Alle weiteren Würfe.
- System.out.println("Dein Wurf:");
- becherSchuetteln(becher);
- // Wurf anzeigen.
- for (int wuerfel = 0; wuerfel < becher.length; wuerfel++) {
- System.out.println("Würfel " + (wuerfel + 1) + ": "+ becher[wuerfel]);
- }
- // Nächster Wurf.
- wurf++;
- }
- // Ausgeben, wie der Zettel momentan aussieht.
- zeigeUeberblick(zettel);
- // Hier auf Zettel schreiben.
- //METHODE FEHLT.
- } else {
- System.out.println("Du darfst nichtmehr würfeln.");
- }
- }
- //Gibt die Kästchen aus....
- static void zeigeUeberblick(int[] zettel){
- String[] kategorie = new String[zettel.length];
- kategorie[0] = "Einser";
- kategorie[1] = "Zweier";
- kategorie[2] = "Dreier";
- kategorie[3] = "Vierer";
- kategorie[4] = "Fünfer";
- kategorie[5] = "Sechser";
- System.out.println();
- System.out.println("Das hast du bisher reingeschrieben:");
- System.out.println();
- for(int i = 0; i<zettel.length;i++){
- // Wenn -1, so wurde noch nichts reingeschrieben. Nichtmal 0.
- if (zettel[i] == -1){
- System.out.println("(" + (i+1) +") " + kategorie[i] + ": Noch nichts.");
- } else {
- System.out.println("(" + (i+1) +") " + kategorie[i] +": "+zettel[i]);
- }
- }
- }
- // Berechnet Endpunkte und gibt sie auch gleich aus.
- static void berechneEndpunkte(int[] kniffelZettel) {
- int summe = 0;
- for (int kategorie = 0; kategorie < kniffelZettel.length; kategorie++) {
- //Falls eine -1 auf dem Zettel steht. Die sollen natürlich nicht mitaddiert werden.
- kniffelZettel[kategorie] = (kniffelZettel[kategorie] == -1) ? 0: kniffelZettel[kategorie];
- summe = summe + kniffelZettel[kategorie];
- }
- summe = (summe > 63) ? summe + 35 : summe;
- System.out.println("Deine Endpunktzahl beträgt "
- + ((summe >= 100) ? "stolze " : "mickrige ") + summe
- + " Punkte.");
- }
- public static void main(String[] args) {
- String nutzerEingabe;
- // Der (verkappte) Kniffelzettel. Ohne Feld für den Bonus. :(
- int[] zettel = new int[6];
- // Bei -1 Wurde noch nichts geschrieben. (Auch keine 0).
- Arrays.fill(zettel,-1);
- int runde = 1;
- boolean spielende = false;
- while (spielende == false) {
- do {
- System.out.println();
- System.out.println("--- Hauptmenü: Was willst du tun? ---");
- System.out.println();
- System.out.println("(1) "+ ((runde == 1) ? "Erste" : "Nächste")+ " Runde starten.");
- System.out.println("(2) Überblick zeigen.");
- System.out.println("(3) Anleitung anzeigen.");
- System.out.println("(4) Endpunkte berechnen.");
- nutzerEingabe = eingabe.nextLine();
- } while (istZulaessig(nutzerEingabe, 1, 4) == false);
- switch (Integer.parseInt(nutzerEingabe)) {
- case 1: naechsteRunde(zettel, runde); runde = (runde <= 6) ? runde++ : runde;break; // Hochzählen unterbinden. Irgendwie unnötig.
- case 2: zeigeUeberblick(zettel);break;
- case 3: zeigeAnleitung();break;
- default:berechneEndpunkte(zettel); spielende = true; // Spiel erst bei Endpunktefrage verlasssen.
- }
- } // Spielende.
- System.out.println();
- System.out.println("Thank you so much for to playing my game!");
- }
- }
Add Comment
Please, Sign In to add comment