import java.util.Scanner; public class TorosVacas { public static void main(String []args){ play(); } private static int readUserInput(){ /* * Funcion que lee entrada de usuario y la validad de acuerdo a la especificaciones. * En caso correcto retorna el numero * En caso invalido retorna -1 */ Scanner in = new Scanner(System.in); String guess; int intValue; guess = in.nextLine(); try { intValue = Integer.parseInt(guess); } catch (NumberFormatException e){ System.out.println("La entrada no es un numero entero\nIntenta de Nuevo"); return -1; } if (guess.length() != 4){ System.out.println("La entrada debe poseer 4 digitos exactos\nIntente de Nuevo"); return -1; } for(int i=0; i<4; i++){ char number = guess.charAt(i); if(guess.indexOf(number, i+1) != -1){ System.out.println("Existe un numero repetido en su entrada\nIntente de nuevo"); return -1; } } return intValue; } private static int generateTargetNumber(){ /* * Funcion que retorna un numero random de 4 digitos para el juego de vaca, toros. */ StringBuilder target = new StringBuilder(); while(target.toString().length() < 4){ char randomInt = Character.forDigit(((int)(Math.random()*10)), 10); if (target.toString().indexOf(randomInt) == -1){ target.append(randomInt); } } return Integer.parseInt(target.toString()); } private static int checkUserGuess(int guess, int target){ /* * Function que descubre la cantidad de aciertos (Toros y Vacas) del usuario. * Entrada: * guess: Integer de 4 digitos. * target: Integer de 4 digitos. * Salida: * 1 si el usuario adivino el numero * -1 si el usuario no adivino el numero. * */ String guess_string = String.valueOf(guess); String target_string = String.valueOf(target); int vacas = 0; int toros = 0; for(int index_guess=0;index_guess<4;index_guess++){ int index_target = target_string.indexOf(guess_string.charAt(index_guess)); if (index_guess == index_target){ toros++; }else if(index_target != -1) { vacas++; } } System.out.println("RESPUESTA A: "+toros+" TOROS, "+vacas+" VACAS"); if(toros == 4){ return 1; }else{ return -1; } } private static void play(){ /* * Function que ejectuta el juego de toros y vacas. * */ int target_number = generateTargetNumber(); int guess_number; System.out.println("NUMERO A: " + target_number); for(int i=0;i<12;i++){ System.out.print("INTENTO B "+i+":"); guess_number = readUserInput(); if(guess_number==-1){ i--; continue; } System.out.println(guess_number); if(checkUserGuess(guess_number, target_number) == 1){ System.out.println("FIN DEL JUEGO - GANO B en "+ (i+1) + " INTENTOS"); return; } } System.out.println("FIN DEL JUEGO - GANO A"); } }