Eso es lo que me está trayendo de cabeza hasta tal punto de estar perdiendo interés por continuar y es que no me gusta dejar programas incompletos o imperfectos.
Bien, al principio traté de hacerlo con un par de bucles for anidados para que me repitiesen el número 'x' veces (en función del nivel) con su respectivo salto de línea. Finalmente daba unos cuantos saltos de línea para "eliminar" cualquier pista de la serie de la consola y pedía al usuario la repetición de esta.
¿Y cuál es el problema? Que descubrí por ahí la librería Timer y ahora no quiero volver atrás. Me llevó tiempo encontrar una solución por mi cuenta pero me está llevando más tiempo finalizar el programa con el Timer.
Por lo que tengo entendido, lo que hace mi objeto Timer a través del método schedule, es repetir una tarea cada 'x' tiempo en ms.
El tema es que yo necesito que el programa siga su curso cuando empleo timer.cancel() y que me compare la serie creada por el ordenador con la que introduce el usuario y esto último no se da, directamente se queda trabado.
Espero haberme explicado con claridad y gracias por vuestro tiempo.
Esta es la clase JuegoMemoria donde creo el objeto.
Código
public class JuegoMemoria { private int[] numeros = new int[10]; private int[] numsUsu = new int[10]; public int cont = 1; private int nivel; public int tiempo = 0; JuegoMemoria() { } public void espacioBlanco(int x) { for(int i = 0; i < x; i++) { } } public void eleccionNivel() { do { try { e.printStackTrace(); } } while(nivel < 1 && nivel > 3); switch(nivel) { case 1: tiempo = cont * 5000; break; case 2: tiempo = cont * 2500; break; case 3: tiempo = cont * 1500; break; } } public void generarSerie() { for(int i = 0; i < 10; i++) { numsUsu[i] = 0; } } public void mostrarSerie() { if(cont > 1) { cont++; } for(int i = 0; i < cont ; i++) { } } public void compararSeries() { int i = 0; while(i != cont) { try { e.printStackTrace(); } if(numeros[i] == numsUsu[i]) { i++; } else { i = cont; } } } }
Y en esta otra es la que contiene el main.
Código
public class JuegoMemoriaPrueba { JuegoMemoria jm = new JuegoMemoria(); int contador = 0; @Override public void run() { jm.mostrarSerie(); if(jm.cont > 0) { jm.espacioBlanco(10); } timer.cancel(); contador++; } }; jm.eleccionNivel(); jm.generarSerie(); do { timer.schedule(task, 0, jm.tiempo); jm.compararSeries(); } while(jm.cont < 9); } }
Gracias por cualquier tipo de ayuda o sugerencia.