import java.lang.reflect.Array; import java.util.Scanner; public class torovaca { public static void main(String[] args) throws InterruptedException { Scanner sn = new Scanner(System.in); int numAdivinar = 0; int [] digitos; boolean cifrasRepetidas = false; do { numAdivinar= generaNumeroAleatorio(1000,9999); digitos= devuelveDigitos(numAdivinar); cifrasRepetidas = elementoRepetido(digitos); } while(cifrasRepetidas); //System.out.println("Ramdon "+numAdivinar); boolean fin = false; // empieza a jugar int intentos=0; while (!fin) { // el usuario introduce un numero System.out.println("Inserte un número: "); int numeroUsuario = sn.nextInt(); intentos++; System.out.println("Intento nro: "+intentos); // Creamos el array de digitos int[] digitosUsuario = devuelveDigitos(numeroUsuario); // Sino son 4 cifras, volvemos de nuevo a pedir if (digitosUsuario.length != 4) { System.out.println("Solo numeros de 4 cifras es permitido"); } else { // obtenemos el numero de toros int toros = numeroElementosRepetidosMismaPosicion(digitosUsuario, digitos); // Obtengo el numero de vacas int vacas = numeroElementosRepetidosDistintaPosicion(digitosUsuario, digitos); // Muestro lo obtenido System.out.println(toros + "Toros " + vacas + "Vacas"); // Si son 4 toros, hemos ganado if(intentos<=12){ if(toros == digitos.length ){ fin = true; System.out.println("Ha ganado B"); } }else{ fin = true; System.out.println("Ha ganado A"); } } } } // FUNCIONES A USAR public static int generaNumeroAleatorio (int minimo, int maximo ){ int num= (int) Math.floor(Math.random() * (maximo - minimo +1) + (minimo) ); return num; } // CONTADOR DE VACAS public static int numeroElementosRepetidosDistintaPosicion(int[] array1, int[] array2){ int repetidos = 0; for(int i=0; i< array1.length;i++){ for(int j=0 ; j0;i++){ numero = numero / 10 ; numero_solo= numeroInicial - (numero * 10); digitos[i] = numero_solo ; numeroInicial = numero; } return invertirArray(digitos); } // CUENTA EL NUMERO DE CIFRAS DE UN NUMERO public static int cuentaCifras (int num){ int contador = 0 ; if(num==0){ contador=1; }else{ for(int i= Math.abs(num); i>0; i/=10){ contador++; } } return contador; } public static int[] invertirArray(int [] array){ int temp []= new int [array.length]; for (int i = temp.length - 1,j=0; i >= 0; i--,j++) { temp[i] = array[j]; } return temp; } }