Zustandsdiagramm Quellcode [Spiele/Wuerfeln.java]public class Wuerfeln{ static char input(){ // Einlesen von Konsole return new java.util.Scanner(System.in).next().charAt(0); } static int wuerfeln(){ // Zufall von 1..6 return (int) (Math.random()*6) +1; } static void ausWuerfeln(){ System.out.println("Wuerfel: "+wuerfeln()); } public static void main(String args[]){ boolean einlesen = true; char c; System.out.println("\fWillkommen beim Wuerfeln"); while(einlesen){ System.out.print("e = exit, w = wuerfeln: "); c = input(); switch(c){ case 'e': einlesen = false; // exit? System.out.println("Wiedersehen!"); break; case 'w': ausWuerfeln(); // wuerfeln? break; default: System.out.println("Hä?"); // sonstige Eingabe } } } }
public class Wuerfeln{ static char input(){ // Einlesen von Konsole return new java.util.Scanner(System.in).next().charAt(0); } static int wuerfeln(){ // Zufall von 1..6 return (int) (Math.random()*6) +1; } static void ausWuerfeln(){ System.out.println("Wuerfel: "+wuerfeln()); } public static void main(String args[]){ boolean einlesen = true; char c; System.out.println("\fWillkommen beim Wuerfeln"); while(einlesen){ System.out.print("e = exit, w = wuerfeln: "); c = input(); switch(c){ case 'e': einlesen = false; // exit? System.out.println("Wiedersehen!"); break; case 'w': ausWuerfeln(); // wuerfeln? break; default: System.out.println("Hä?"); // sonstige Eingabe } } } }
public class WettWuerfeln{ static int[] spielerPunkte ={0,0}; // Punktestand static int spieler; // welcher Spieler dran ist static boolean[] gepasst={false,false}; // hat schon einer gepasst static int zustand = 0; // 0 Init, 1 Spielerzug static int maximum = 15; // maximale Punktzahl static boolean weiter = true; // weiterspielen static char input(){ // Konsoleneingabe return new java.util.Scanner(System.in).next().charAt(0); } static void gewonnen(int n){ // Gewinner ausgeben und weiterspielen? if(n<2) { // einer hat gewonnen System.out.printf("Spieler %d hat gewonnen\n",n+1); } else { // unentschieden System.out.println("Unentschieden"); } System.out.print("Weiterspielen j/n?"); switch(input()){ case 'j': zustand=0; // initialisierung break; case 'n': weiter = false; System.out.println("Wiedersehen!"); break; default: System.out.println("Wie bitte?"); // Fehleingabe } } public static int wuerfeln(){ // aktueller Spieler wuerfelt int w = (int) (Math.random()*6) +1; spielerPunkte[spieler] += w; return w; } public static void main(String args[]){ int w; // Wuerfelergebnis while(weiter){ switch (zustand){ case 0: // Initialisierung System.out.printf("\fWillkommen beim WettWuerfeln: Abwechselnd bis %d wuerfeln\n",maximum); spielerPunkte[1]=spielerPunkte[0]=0; gepasst[1]=gepasst[0]=false; spieler=0; zustand = 1; // spielen for(int i=0; i<maximum/6;i++){ // Anfangswuerfeln System.out.printf("Sp%d: %d ",spieler+1,wuerfeln()); spieler = (spieler+1)%2; // Spielerwechsel 0->1 1->0 System.out.printf("Sp%d: %d ",spieler+1,wuerfeln()); spieler = (spieler+1)%2; // Spielerwechsel } System.out.println(""); case 1: // Spielerzug System.out.printf("Sp1 (%d) Sp2 (%d) w=wuerfeln, p=passen? Sp%d: ",spielerPunkte[0],spielerPunkte[1],spieler+1); switch(input()){ // auf Eingabe warten case 'w': // Spieler will wuerfeln w = wuerfeln(); if (spielerPunkte[spieler]>maximum){ // Maximum ueberschritten? System.out.printf("Wurf: %d Punktestand %d -> Drüber!\n",w,spielerPunkte[spieler]); gewonnen((spieler+1)%2); // gewonnen hat der andere } else{ System.out.printf("Wurf: %d Punktestand %d bis Max: %d\n",w,spielerPunkte[spieler],maximum-spielerPunkte[spieler]); if (spielerPunkte[spieler]==maximum){ // Punktlandung? gewonnen(spieler); } else{ spieler = (spieler+1)%2; // Spielerwechsel } } break; case 'p': // Spieler will passen if(gepasst[(spieler+1)%2]){ // anderer hat auch gepasst: Gewinner ermitteln if(spielerPunkte[0]>spielerPunkte[1]) gewonnen(0); else if(spielerPunkte[0]<spielerPunkte[1]) gewonnen(1); else gewonnen(2); // unentschieden } else{ gepasst[spieler]=true; spieler = (spieler+1)%2; // Spielerwechsel } break; default: System.out.println("Wie bitte?"); // Fehleingabe } } } } }
public class HangMan{ static String rateString =""; static String ausgabe =""; static String fehler=""; static int maxFehler=6; static String[] woerter = {"enes","levin","alexander","marc","andreas","daniel", "benedikt","manuel","matthias","gino","oliver"}; static boolean checkRateString(String s){ int i; char c; for(i=0;i<s.length();i++){ c = s.charAt(i); if('a'<=c && c<='z'); else return false; } return true; } static void initSpiel(){ int i; ausgabe =""; for(i=0;i<rateString.length();i++){ ausgabe +="_"; } switch(rateString.length()){ case 4: maxFehler=4; break; case 5: case 6: maxFehler=5; default: maxFehler=6; } fehler = ""; System.out.printf("\fNeues Spiel: max %d Fehler %s\n",maxFehler,ausgabe); } static void neuesSpiel(){ int i = (int) (Math.random()*woerter.length); rateString=woerter[i]; initSpiel(); } static void neuesSpiel(String s){ if(s.length() < 4 || !checkRateString(s)){ System.out.println("Ratewort ist nicht gut: "+s); } else{ rateString = s; initSpiel(); } } static void rate(char c){ int i; boolean erraten=true; boolean falsch=true; if(rateString.length()<2){ System.out.println("Erst ein neues Spiel starten!"); return; } String aus=""; for(i=0;i<rateString.length();i++){ if(c==rateString.charAt(i)){ aus+=c; falsch=false; } else { if(ausgabe.charAt(i)=='_')erraten=false; aus+=ausgabe.charAt(i); } } ausgabe=aus; if(erraten){ System.out.println("Erraten: \t"+ausgabe); } else{ if(falsch){ fehler+=c; switch(fehler.length()){ case 1: System.out.println("Vokale-Tipp: "+anzahlVokale()); break; case 2: System.out.println("Unterschiedliche Buchstaben-Tipp: "+anzahlUnterschiedlicherBuchstaben()); break; case 3: System.out.println("Gleiche Buchstaben-Tipp: "+anzahlGleicherBuchstaben()); break; default: System.out.println("Uebrige Buchstaben: "+uebrigeBuchstaben()); } } if(fehler.length()>6){ System.out.println("Leider verlohren! "+rateString); rateString=""; }else{ System.out.printf("%d Fehler: %-6s %s\n",fehler.length(),fehler,ausgabe); } } } static int anzahlVokale(){ int i,anzahl=0; char c; for(i=0;i<rateString.length();i++){ c=rateString.charAt(i); switch(c){ case 'a': case 'e': case 'i': case 'o': case 'u': anzahl++; } } return anzahl; } static int anzahlGleicherBuchstaben(){ int i, anzahl=0; int buchstaben[] = new int[26]; for(i=0;i<rateString.length();i++){ buchstaben[rateString.charAt(i)-'a']++; } for(i=0;i<buchstaben.length;i++){ if(buchstaben[i]>1)anzahl++; } return anzahl; } static int anzahlUnterschiedlicherBuchstaben(){ int i, anzahl=0; int buchstaben[] = new int[26]; for(i=0;i<rateString.length();i++){ buchstaben[rateString.charAt(i)-'a']++; } for(i=0;i<buchstaben.length;i++){ if(buchstaben[i]>0)anzahl++; } return anzahl; } static String uebrigeBuchstaben(){ int i; char c; String aus=""; int buchstaben[] = new int[26]; for(i=0;i<ausgabe.length();i++){ c = ausgabe.charAt(i); if(c!='_') buchstaben[c-'a']++; } for(i=0;i<fehler.length();i++){ c = fehler.charAt(i); buchstaben[c-'a']++; } for(i=0;i<buchstaben.length;i++){ if(buchstaben[i]==0)aus+= (char)(i+'a'); } return aus; } }
Enwickeln Sie aus der Vorgabe ein Konsolenspiel