Commit

parents
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");
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment