diff --git b/TorosVacas.java a/TorosVacas.java new file mode 100644 index 0000000..7bee16d --- /dev/null +++ a/TorosVacas.java @@ -0,0 +1,107 @@ +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"); + } +}