/* Juego operaciones aritmeticas */ public class RetoMatematico { public static void main(String args[]) { System.out.print("Juego: reto matematico. Responda cada operacion correctamente:\n\n"); // Indica la cantidad de digitos de los numeros generados en las operaciones // Si el jugador acierta, se incrementa, si falla, se decrementa. Siempre debe // estar en el rango 1 a 18 inclusive. short nivelDificultad = 1; // La respuesta del jugador en cada intento long continuarJugando = 1; // Se mantiene en el juego hasta que responda que no while ( continuarJugando == 1 ) { // Escoger dos operandos aleatorios de tantos digitos como diga el nivel de dificultad long numero1 = (long)(Math.pow(10, nivelDificultad - 1) * (1 + 9 * Math.random())); long numero2 = (long)(Math.pow(10, nivelDificultad - 1) * (1 + 9 * Math.random())); // Escoger una operacion aleatoria short operacion = (short)(Math.random() * 5); switch ( operacion ) { case 0: nivelDificultad += hacerOperacion(numero1 + " + " + numero2, numero1 + numero2) ? 1 : -1; break; case 1: nivelDificultad += hacerOperacion(numero1 + " - " + numero2, numero1 - numero2) ? 1 : -1; break; case 2: nivelDificultad += hacerOperacion(numero1 + " * " + numero2, numero1 * numero2) ? 1 : -1; break; case 3: nivelDificultad += hacerOperacion(numero1 + " / " + numero2, numero1 / numero2) ? 1 : -1; break; case 4: nivelDificultad += hacerOperacion(numero1 + " % " + numero2, numero1 % numero2) ? 1 : -1; break; } // Mantener el nivel de dificultad en sus valores permitidos if ( nivelDificultad < 1 ) nivelDificultad = 1; if ( nivelDificultad > 18 ) nivelDificultad = 18; // Preguntar al usuario si quiere seguir jugando continuarJugando = Keyboard.getNextLong("Continuar jugando [1=Si, 2=No]: ", 1, 2); System.out.println(); } } public static boolean hacerOperacion(String operacion, long resultado) { System.out.print(operacion + " = "); boolean correcto = Keyboard.getNextLong() == resultado; System.out.println(correcto ? "Felicidades, respuesta correcta!" : ("El resultado correcto es " + resultado)); return correcto; } }