/* Juego operaciones aritméticas */ import java.util.Scanner; public class RetoMatematico3 { public static void main(String args[]) { Scanner teclado = new Scanner(System.in); System.out.print("Juego: reto matemático. Responda cada operación correctamente:\n\n"); // Indica la cantidad de digitos de los números 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 short 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 operación 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 System.out.print("Continuar jugando [1=Sí, 2=No]: "); continuarJugando = teclado.nextShort(); System.out.println(); } } public static boolean hacerOperacion(String operacion, long resultado) { System.out.print(operacion + " = "); boolean correcto = getNextLong() == resultado; System.out.println(correcto ? "Felicidades, respuesta correcta!" : ("El resultado correcto es " + resultado)); return correcto; } public static long getNextLong() { Scanner teclado = new Scanner(System.in); while ( true ) { try { return teclado.nextLong(); } catch(java.util.InputMismatchException e) { teclado.nextLine(); } } } }