Guest User

Untitled

a guest
Jul 19th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.55 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.Scanner;
  3.  
  4. public class Kniffel {
  5. // Hier der statische Scanner. Nutzbar für alle Methoden, außerdem
  6. // ist eingabe schön blau gefärbt.
  7. static Scanner eingabe = new Scanner(System.in);
  8.  
  9. // Anleitung ausgeben.
  10. static void zeigeAnleitung() {
  11. System.out.println("|-------------------------------------------------|");
  12. System.out.println("|Jede Runde darf dreimal gewürfelt werden. Es ist |");
  13. System.out.println("|erlaubt, nur mit manchen Würfeln zu würfeln. |");
  14. System.out.println("|Am Ende jeder Runde muss das Ergebnis in eine der|");
  15. System.out.println("|folgenden Kategorien geschrieben werden: |");
  16. System.out.println("|Einser, Zweier, Dreier, Vierer, Fünfer, Sechser. |");
  17. System.out.println("|Es zählen jeweils alle Augen der jew. Sorte. |");
  18. System.out.println("|Bei insg. mehr als 63 Punkten gibt es einen Bonus|");
  19. System.out.println("|von 35 Punkten obendrauf. Dieses Feld ist zu klei|");
  20. System.out.println("|-------------------------------------------------|");
  21. }
  22.  
  23. // Einmal würfeln. Sehr sinnvoll. Aber testatrelevant.
  24. static int wuerfeln() {
  25. return (int) (Math.random() * 6 + 1);
  26. }
  27.  
  28. // Würfelt an allen Stellen, an denen eine Null steht.
  29. // Leere Int-Arrays sind standardmäßig überall Null.
  30. static void becherSchuetteln(int[] becher) {
  31. for (int i = 0; i < becher.length; i++) {
  32. if (becher[i] == 0) {
  33. becher[i] = wuerfeln(); // Diese Ersparnis, atemberaubend.
  34. }
  35. }
  36. }
  37.  
  38. // Falscheingaben checken.
  39. static boolean istZulaessig(String eingabe, int untergrenze, int obergrenze) {
  40. String zulZiffern = "";
  41. // Alle zulässigen Ziffern in einem String. Hurra.
  42. for (int zahl = untergrenze; zahl <= obergrenze; zahl++) {
  43. zulZiffern = zulZiffern + zahl;
  44. }
  45. if (eingabe.length() == 1 && zulZiffern.contains(eingabe))
  46. return true;
  47.  
  48. System.out.println("Danke für die Falscheingabe.");
  49. return false;
  50. }
  51.  
  52. // Nächste Runde.
  53. static void naechsteRunde(int[] zettel, int runde) {
  54.  
  55. if (runde <= 6) {
  56. System.out.println("Das ist Runde " + runde + ".");
  57. System.out.println();
  58. // Frischer Würfelbecher. Wird jede Runde neu auf dem Heap erzeugt.
  59. int[] becher = new int[5];
  60.  
  61. // Erster Wurf. Steht halt außerhalb. Verklag mich doch.
  62. System.out.println("Dein Wurf:");
  63. becherSchuetteln(becher);
  64. // Wurf anzeigen.
  65. for (int wuerfel = 0; wuerfel < becher.length; wuerfel++) {
  66. System.out.println("Würfel " + (wuerfel + 1) + ": "+ becher[wuerfel]);
  67. }
  68. // Dieses war der erste Wurf, doch der zweite folgt sogl..urf.
  69. int wurf = 2;
  70.  
  71. while (wurf <= 3) {
  72. // Für garstige Falscheingeber.
  73. String nutzerEingabe;
  74. int nutzerWuerfel = 1; // Sollte != 0 sein.
  75. boolean zulaessig;
  76. do {
  77. System.out.println("Welchen Würfel(Nummer) in den Becher tun?");
  78. System.out.println("0 für keinen weiteren.");
  79. nutzerEingabe = eingabe.nextLine();
  80. // Mit toller Ausgabe.
  81. zulaessig = istZulaessig(nutzerEingabe,0,5);
  82. if (zulaessig == true) {
  83. nutzerWuerfel = Integer.parseInt(nutzerEingabe);
  84. // Würfel, mit denen nochmal gewürfelt werden soll,
  85. // werden auf 0 gesetzt.
  86. // Null ist blos Abbruchbedingung für Würfel in den Becher tun.
  87. if(nutzerWuerfel != 0){
  88. // -1, Weil Würfel 1 an Stelle 0 ist etc.
  89. becher[nutzerWuerfel - 1] = 0;
  90. }
  91. }
  92. } while (nutzerWuerfel != 0);
  93.  
  94. // Alle weiteren Würfe.
  95. System.out.println("Dein Wurf:");
  96. becherSchuetteln(becher);
  97. // Wurf anzeigen.
  98. for (int wuerfel = 0; wuerfel < becher.length; wuerfel++) {
  99. System.out.println("Würfel " + (wuerfel + 1) + ": "+ becher[wuerfel]);
  100. }
  101. // Nächster Wurf.
  102. wurf++;
  103. }
  104. // Ausgeben, wie der Zettel momentan aussieht.
  105. zeigeUeberblick(zettel);
  106. // Hier auf Zettel schreiben.
  107. //METHODE FEHLT.
  108.  
  109. } else {
  110. System.out.println("Du darfst nichtmehr würfeln.");
  111. }
  112.  
  113. }
  114.  
  115. //Gibt die Kästchen aus....
  116. static void zeigeUeberblick(int[] zettel){
  117. String[] kategorie = new String[zettel.length];
  118. kategorie[0] = "Einser";
  119. kategorie[1] = "Zweier";
  120. kategorie[2] = "Dreier";
  121. kategorie[3] = "Vierer";
  122. kategorie[4] = "Fünfer";
  123. kategorie[5] = "Sechser";
  124.  
  125. System.out.println();
  126. System.out.println("Das hast du bisher reingeschrieben:");
  127. System.out.println();
  128.  
  129. for(int i = 0; i<zettel.length;i++){
  130. // Wenn -1, so wurde noch nichts reingeschrieben. Nichtmal 0.
  131. if (zettel[i] == -1){
  132. System.out.println("(" + (i+1) +") " + kategorie[i] + ": Noch nichts.");
  133. } else {
  134. System.out.println("(" + (i+1) +") " + kategorie[i] +": "+zettel[i]);
  135. }
  136. }
  137. }
  138.  
  139.  
  140. // Berechnet Endpunkte und gibt sie auch gleich aus.
  141. static void berechneEndpunkte(int[] kniffelZettel) {
  142. int summe = 0;
  143. for (int kategorie = 0; kategorie < kniffelZettel.length; kategorie++) {
  144. //Falls eine -1 auf dem Zettel steht. Die sollen natürlich nicht mitaddiert werden.
  145. kniffelZettel[kategorie] = (kniffelZettel[kategorie] == -1) ? 0: kniffelZettel[kategorie];
  146. summe = summe + kniffelZettel[kategorie];
  147. }
  148. summe = (summe > 63) ? summe + 35 : summe;
  149. System.out.println("Deine Endpunktzahl beträgt "
  150. + ((summe >= 100) ? "stolze " : "mickrige ") + summe
  151. + " Punkte.");
  152.  
  153. }
  154.  
  155. public static void main(String[] args) {
  156. String nutzerEingabe;
  157. // Der (verkappte) Kniffelzettel. Ohne Feld für den Bonus. :(
  158. int[] zettel = new int[6];
  159. // Bei -1 Wurde noch nichts geschrieben. (Auch keine 0).
  160. Arrays.fill(zettel,-1);
  161.  
  162. int runde = 1;
  163. boolean spielende = false;
  164. while (spielende == false) {
  165. do {
  166. System.out.println();
  167. System.out.println("--- Hauptmenü: Was willst du tun? ---");
  168. System.out.println();
  169. System.out.println("(1) "+ ((runde == 1) ? "Erste" : "Nächste")+ " Runde starten.");
  170. System.out.println("(2) Überblick zeigen.");
  171. System.out.println("(3) Anleitung anzeigen.");
  172. System.out.println("(4) Endpunkte berechnen.");
  173. nutzerEingabe = eingabe.nextLine();
  174. } while (istZulaessig(nutzerEingabe, 1, 4) == false);
  175.  
  176. switch (Integer.parseInt(nutzerEingabe)) {
  177. case 1: naechsteRunde(zettel, runde); runde = (runde <= 6) ? runde++ : runde;break; // Hochzählen unterbinden. Irgendwie unnötig.
  178. case 2: zeigeUeberblick(zettel);break;
  179. case 3: zeigeAnleitung();break;
  180. default:berechneEndpunkte(zettel); spielende = true; // Spiel erst bei Endpunktefrage verlasssen.
  181. }
  182.  
  183. } // Spielende.
  184. System.out.println();
  185. System.out.println("Thank you so much for to playing my game!");
  186.  
  187. }
  188.  
  189. }
Add Comment
Please, Sign In to add comment