Hier mal ein Römisches Zahlenspiel in Java. Geht vielleicht noch besser, war aber mal spontan "on-the-fly" programmiert.
Display All
..:: Beispiel ::..
Java Source Code
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.Random;
- public class RomanGame
- {
- // Konvertierung von Dezimal nach Römisch
- public static String Dec2Roman(int Input)
- {
- // Deklarationen
- String Roman[] = { "I" , "IV" , "V" , "IX" , "X" , "XL" , "L" , "XC" , "C" , "CD" ,
- "D" , "CM" , "M" };
- int Arabic[] = { 1, 4, 5, 9, 10, 40 , 50 , 90 , 100 , 400 , 500 , 900 , 1000 };
- int i = 12;
- String Output = "";
- for( ; i >= 0; i-- )
- while( Input >= Arabic[i] )
- {
- Input -= Arabic[i];
- Output += Roman[i];
- }
- // falls mal ein Leerstring rauskommt, errechne einfach irgendwas zwischen 1 und 128
- if( Output.equals("") )
- Output = Dec2Roman(new Random().nextInt() % 128 + 1);
- return Output;
- }
- // Zufällige Römische Zahl ermitteln
- public static String RandRoman()
- {
- return Dec2Roman(new Random().nextInt() % 5555);
- }
- /**
- * @param args --> keine Argumente
- */
- public static void main(String[] args) throws IOException
- {
- // Deklarationen
- BufferedReader Input = new BufferedReader(new InputStreamReader(System.in));
- boolean done = false;
- String Zahl = "";
- int Eingabe = 0, maxPoints = 0, Points = 0;
- System.out.println("\t\t====================================");
- System.out.println("\t\t||..:: Roemisches Zahlenspiel ::..||");
- System.out.println("\t\t====================================\n\n");
- System.out.println("Es werden zufaellig roemische Zahlen erzeugt, \n" +
- "gib die dazu passende Dezimalzahl an.\n" +
- "HINWEIS: DAS PROGRAMM VERWENDET KEINE FEHLERUEBERPRUEFUNG !!!");
- System.out.println("Druecke "Q" um das Spiel zu beenden !\n");
- while( !done )
- {
- Zahl = RandRoman();
- System.out.printf("%s : ", Zahl);
- Eingabe = Integer.parseInt(Input.readLine());
- if( Dec2Roman(Eingabe).equals(Zahl))
- {
- System.out.println("\nHey, das war richtig :-) ! [Druecke ENTER zum fortfahren oder Q zum beenden]");
- Points += 5;
- }
- else
- {
- System.out.println("\nVersuch es weiter Lusche ;-) ! [Druecke ENTER zum fortfahren oder Q zum beenden]");
- }
- // Punktzahl erhöhen
- maxPoints += 5;
- // Beenden ?
- if ( Input.readLine().equals("Q") )
- done = true;
- }
- // Punktewertung ausgeben
- System.out.println("\n==============");
- System.out.println(" Auswertung");
- System.out.println("==============\n");
- System.out.println("Maximal zu erreichende Punkte = " + maxPoints);
- System.out.println("Deine erreichte Punktzahl = " + Points);
- }
- }
..:: Beispiel ::..
=============================
||..:: Roemisches Zahlenspiel ::..||
=============================
Es werden zufaellig roemische Zahlen erzeugt,
gib die dazu passende Dezimalzahl an.
HINWEIS: DAS PROGRAMM VERWENDET KEINE FEHLERUEBERPRUEFUNG !!!
Druecke "Q" um das Spiel zu beenden !
MCLV : 1155
Hey, das war richtig! [Druecke ENTER zum fortfahren oder Q zum beenden]
MDCLI : 0
Versuch es weiter Lusche! [Druecke ENTER zum fortfahren oder Q zum beenden]
CVIII : 108
Hey, das war richtig! [Druecke ENTER zum fortfahren oder Q zum beenden]
MMCLXXXVI : 2186
Hey, das war richtig! [Druecke ENTER zum fortfahren oder Q zum beenden]
MMMDXVIII : 3518
Hey, das war richtig! [Druecke ENTER zum fortfahren oder Q zum beenden]
MMMLX : 3060
Hey, das war richtig! [Druecke ENTER zum fortfahren oder Q zum beenden]
LXXXII : 82
Hey, das war richtig! [Druecke ENTER zum fortfahren oder Q zum beenden]
XLVI : 46
Hey, das war richtig! [Druecke ENTER zum fortfahren oder Q zum beenden]
XXIII : 23
Hey, das war richtig! [Druecke ENTER zum fortfahren oder Q zum beenden]
MMMCDLXXXII : 3482
Hey, das war richtig! [Druecke ENTER zum fortfahren oder Q zum beenden]
MMMMMCDLVI : 5456
Hey, das war richtig! [Druecke ENTER zum fortfahren oder Q zum beenden]
MMCCCXCV : 2395
Hey, das war richtig! [Druecke ENTER zum fortfahren oder Q zum beenden]
MMMLXVIII : 3063
Versuch es weiter Lusche! [Druecke ENTER zum fortfahren oder Q zum beenden]
Q
==============
Auswertung
==============
Maximal zu erreichende Punkte = 65
Deine erreichte Punktzahl = 55
