Römisches Zahlenspiel

This site uses cookies. By continuing to browse this site, you are agreeing to our use of cookies. More details

  • Römisches Zahlenspiel

    Hier mal ein Römisches Zahlenspiel in Java. Geht vielleicht noch besser, war aber mal spontan "on-the-fly" programmiert.

    Java Source Code

    1. import java.io.BufferedReader;
    2. import java.io.IOException;
    3. import java.io.InputStreamReader;
    4. import java.util.Random;
    5. public class RomanGame
    6. {
    7. // Konvertierung von Dezimal nach Römisch
    8. public static String Dec2Roman(int Input)
    9. {
    10. // Deklarationen
    11. String Roman[] = { "I" , "IV" , "V" , "IX" , "X" , "XL" , "L" , "XC" , "C" , "CD" ,
    12. "D" , "CM" , "M" };
    13. int Arabic[] = { 1, 4, 5, 9, 10, 40 , 50 , 90 , 100 , 400 , 500 , 900 , 1000 };
    14. int i = 12;
    15. String Output = "";
    16. for( ; i >= 0; i-- )
    17. while( Input >= Arabic[i] )
    18. {
    19. Input -= Arabic[i];
    20. Output += Roman[i];
    21. }
    22. // falls mal ein Leerstring rauskommt, errechne einfach irgendwas zwischen 1 und 128
    23. if( Output.equals("") )
    24. Output = Dec2Roman(new Random().nextInt() % 128 + 1);
    25. return Output;
    26. }
    27. // Zufällige Römische Zahl ermitteln
    28. public static String RandRoman()
    29. {
    30. return Dec2Roman(new Random().nextInt() % 5555);
    31. }
    32. /**
    33. * @param args --> keine Argumente
    34. */
    35. public static void main(String[] args) throws IOException
    36. {
    37. // Deklarationen
    38. BufferedReader Input = new BufferedReader(new InputStreamReader(System.in));
    39. boolean done = false;
    40. String Zahl = "";
    41. int Eingabe = 0, maxPoints = 0, Points = 0;
    42. System.out.println("\t\t====================================");
    43. System.out.println("\t\t||..:: Roemisches Zahlenspiel ::..||");
    44. System.out.println("\t\t====================================\n\n");
    45. System.out.println("Es werden zufaellig roemische Zahlen erzeugt, \n" +
    46. "gib die dazu passende Dezimalzahl an.\n" +
    47. "HINWEIS: DAS PROGRAMM VERWENDET KEINE FEHLERUEBERPRUEFUNG !!!");
    48. System.out.println("Druecke "Q" um das Spiel zu beenden !\n");
    49. while( !done )
    50. {
    51. Zahl = RandRoman();
    52. System.out.printf("%s : ", Zahl);
    53. Eingabe = Integer.parseInt(Input.readLine());
    54. if( Dec2Roman(Eingabe).equals(Zahl))
    55. {
    56. System.out.println("\nHey, das war richtig :-) ! [Druecke ENTER zum fortfahren oder Q zum beenden]");
    57. Points += 5;
    58. }
    59. else
    60. {
    61. System.out.println("\nVersuch es weiter Lusche ;-) ! [Druecke ENTER zum fortfahren oder Q zum beenden]");
    62. }
    63. // Punktzahl erhöhen
    64. maxPoints += 5;
    65. // Beenden ?
    66. if ( Input.readLine().equals("Q") )
    67. done = true;
    68. }
    69. // Punktewertung ausgeben
    70. System.out.println("\n==============");
    71. System.out.println(" Auswertung");
    72. System.out.println("==============\n");
    73. System.out.println("Maximal zu erreichende Punkte = " + maxPoints);
    74. System.out.println("Deine erreichte Punktzahl = " + Points);
    75. }
    76. }
    Display All


    ..:: 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