Buenas tardes. Presento código como posible solución del ejercicio de referencia CU00909C del curso avanzado de Java. Saludos.
Enunciado:
Crea un programa que elija dos números enteros aleatorios A y B pero no los muestre por pantalla aún. Si los dos números fueran iguales, deberá repetirse la elección hasta que sean distintos. El programa preguntará por quién apostamos, A o B (gana el número más alto). Una vez el usuario haya introducido su apuesta, el programa mostrará el valor de A y B, dirá si hemos ganado la apuesta (acertado el número más alto) o perdido y nos dirá cuántas partidas hemos ganado y perdido hasta el momento.Tras una jugada, nos preguntará si queremos jugar otra vez.
Ejemplo de ejecución:
Apuestas por A o por B ? : A
A saca un 9 y B saca un 6 HAS GANADO!!!
Llevas 1 partidas ganadas y 0 partidas perdidas
Quieres probar otra vez ? (S/N) : S
Apuestas por A o por B ? : A
A saca un 1 y B saca un 8 HAS PERDIDO!!!
Llevas 1 partidas ganadas y 1 partidas perdidas
Quieres probar otra vez ? (S/N) : N
Adiós
package CU00909C;
import CU00903C.EntradaPorTeclado;
/**
* Write a description of class TestEjercicio1 here.
*
* @author (Arnaldo R. Martinez)
* @version (20-Ago-2017 ) Ejercicio propuesto por aprenderaprogramar.com
*/
public class TestEjercicio1 {
public static void main (String [] arg) {
NumeroAleatorio nuevoAleatorio = new NumeroAleatorio();
EntradaPorTeclado entradaTcl = new EntradaPorTeclado();
NumeroMayor mayor = new NumeroMayor();
int A,B;
Apuesta apostado = new Apuesta();
String apuesta ="";
char tecla;
do {//Ciclo 'do-while' que determina la elección del usuario para continuar el juego
do {//Ciclo 'do-while' para asegurar que los dos números generados no sean iguales
nuevoAleatorio.setNuevoNumero(0,10);
A = nuevoAleatorio.getNuevoNumero();
nuevoAleatorio.setNuevoNumero(0,10);
B = nuevoAleatorio.getNuevoNumero();
} while (A == B);
System.out.println("Se han generado dos números aleatorios comprendidos entre [0,10] (incluidos los extremos)");
System.out.println("¿Apuestas por 'A' o por 'B'?: ");
entradaTcl.setEntrada();
apuesta = entradaTcl.getEntrada();
System.out.println("La apuesta fue por: " +apuesta);
//Se determina cual de los números generador es el mayor
mayor.setNumeros(A,B);
mayor.numeroMayor();
//Se resuelve como se ejecuta la apuesta
apostado.setAleatorios(A,B);
apostado.setMayor(mayor.numeroMayor());
apostado.setApuesta(apuesta);
//Se muestran los resultados
System.out.print("A saca un " +A+ " y B saca un " +B+ " ");
apostado.determinaGanador();
System.out.println("Llevas " +apostado.getAciertos()+ " partidas ganadas y " +apostado.getDesaciertos()+ " partidas perdidas.");
//Consulta para continuar o salir del programa
System.out.println("¿Otra ronda...?");
entradaTcl.setEntrada();
tecla = (entradaTcl.getEntrada()).charAt(0);
}
while (tecla == 's' || tecla == 'S');
System.out.println("Adios");//Fin del programa
}
}
package CU00909C;
import java.util.Random;
/**
* Write a description of class NumeroAleatorio here.
*
* @author (Arnaldo R. Martinez)
* @version (20-Ago-2017 ) Ejercicio propuesto por aprenderaprogramar.com
*/
public class NumeroAleatorio {
Random rnd;
int inicioIntervalo, finalIntervalo, nuevoNumero;
public NumeroAleatorio() {
rnd = new Random();
nuevoNumero = 0;
}
public int setNuevoNumero(int inicioIntervalo,int finalIntervalo) {
int n = (finalIntervalo-inicioIntervalo+1); //Se le suma 1 para incluir el extremo superior del intervalo
nuevoNumero = rnd.nextInt(n)+inicioIntervalo;
return nuevoNumero;
}
public int getNuevoNumero() {return nuevoNumero;}
}
package CU00909C;
/**
* Write a description of class Apuesta here.
*
* @author (Arnaldo R. Martinez)
* @version (20-Ago-2017 ) Ejercicio propuesto por aprenderaprogramar.com
*/
public class Apuesta {
int mayor,A,B;
String apuesta;
int contadorAciertos;
int contadorDesaciertos;
public Apuesta() {
A = 0;
B = 0;
mayor = 0;
apuesta = "";
contadorAciertos = 0;
contadorDesaciertos = 0;
}
public void setMayor(int mayor) {
this.mayor = mayor;
}
public void setApuesta(String apuesta) {
this.apuesta = apuesta;
}
public void setAleatorios(int A,int B) {
this.A = A;
this.B = B;
}
public void determinaGanador() {
if (mayor == A && apuesta.equals("A") || mayor == B && apuesta.equals("B")) {
System.out.println("HAS ACERTADO...!!");
contadorAciertos++;
} else {
System.out.println("HAS PERDIDO...!!");
contadorDesaciertos++;
}
}
public int getAciertos() {return contadorAciertos;}
public int getDesaciertos() {return contadorDesaciertos;}
}
package CU00909C;
/**
* Write a description of class NumeroMayor here.
*
* @author (Aranaldo R. Martinez)
* @version (20-Ago-2017 ) Ejercicio propuesto por aprenderaprogramar.com
*/
public class NumeroMayor {
int A,B,mayor;
public NumeroMayor() {
A = 0;
B = 0;
mayor = 0;
}
public void setNumeros(int A,int B) {
this.A = A;
this.B = B;
}
public int numeroMayor() {
if (A > B) {
this.mayor = A;
} else {
this.mayor = B;
}
return mayor;
}
public int getNumeroMayor() {return mayor;}
}
package CU00903C;
import java.util.Scanner;
/**
* Para obtener entradas por teclado
*
* @author (Arnaldo R. Martinez) - [Old: Foro de aprenderaprogramar.com (Corregido (16-Ago-2017) por feedback desde aprenderaprogramar.com)]
*
* @version (02_2017).#Se agregó variable (int) y métodos para resolver números enteros. [Old:(01_2016)] -
*/
public class EntradaPorTeclado{
//Campos de la clase
private String entrada;
private int numero;
private Scanner entradaTcl;
public EntradaPorTeclado(){
entrada = "";
numero = 0;
entradaTcl = new Scanner(System.in);
}
//Métodos 'set' t 'get'
public void setEntrada() {
entrada = entradaTcl.nextLine();
}
public void setNumero() {
numero = entradaTcl.nextInt();
}
public String getEntrada(){return entrada;}
public int getEntradaNumero(){return numero;}
}