Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Problemas generando aleatorios pares e impares

Buenos dias, quiero hacer una especie de "juego" para mis primos pequeños, que basicamente, trata de adivinar numeros aleatorios entre 0 y 10, teniendo yo 3 clases, una llamada JuegoAdivinaNumero, JuegoAdivinaPar y JuegoAdivinaImpar, como habreis deducido, el par genera un numero par que hay que adivinar, y el impar un impar. Bien, aqui es cuando empiezan mis problemas, consigo que el JuegoAdivinaNumero funcione, pero no los demas. Aqui dejo los codigos que tengo, haber si podeis hecharme un cable ;)

El Main:

public class Aplicacion{
public static void main(String[] args) {

int numAlea = (int) (Math.random()*11);

JuegoAdivinaNumero jue = new JuegoAdivinaNumero(5, numAlea);
System.out.println("Vidas de jue.\n" + jue.MuestraVidasRestantes());
jue.vidas--;
System.out.println("Vidas de jue con metodo QuitaVidas().\n" + jue.MuestraVidasRestantes());
jue.ReiniciarPartida();
System.out.println("Vidas de jue con metodo ReiniciarPartida().\n" + jue.MuestraVidasRestantes());
JuegoAdivinaNumero jue2 = new JuegoAdivinaNumero(5, numAlea);

System.out.println("Vidas de jue.\n" + jue.MuestraVidasRestantes());
System.out.println("Vidas de jue2.\n" + jue2.MuestraVidasRestantes());
System.out.println("*************");

System.out.println("Vidas de jue2, con metodo QuitaVidas(), resultado final 'Juego Terminado'.");
do{
System.out.println("Vidas: " + jue2.MuestraVidasRestantes());
jue2.QuitaVida();
}while(jue2.vidas>0);

System.out.println("*************");

if(jue2.vidas>jue2.getRecord()){
jue2.setRecord();
System.out.println("Se ha batido el record!");

}else if(jue2.vidas==jue2.getRecord()){
System.out.println("Se ha alcanzado el record!");
}
//jue.juega();

JuegoAdivinaNumero j1 = new JuegoAdivinaNumero(5, numAlea);
j1.juega();
JuegoAdivinaPar j2 = new JuegoAdivinaPar(15, numAlea);
j2.juega();
JuegoAdivinaImpar j3 = new JuegoAdivinaImpar(10, numAlea);
//j3.juega();

}
}

Clase JuegaAdivinaNumero:

import java.util.Scanner;
public class JuegoAdivinaNumero extends Juego{
protected int numAleatorio;
protected int numIntro;

JuegoAdivinaNumero(int vidas_iniciales,int numAle) {
super(vidas_iniciales); //vidas iniciales del padre.
numAleatorio = (int) (Math.random()*11);
}

public void vidas(int vidas_iniciales){
//constructor 5 vidas
super.ReiniciarPartida();
}

private boolean ValidaNumero(){
if(0<numIntro&&10>numIntro)
return true;
else
return false;
}

public void nombre(){
System.out.println("Introduzca un numero del 0 al 10: (la operacion se repetira hasta que acierte o te mueras)");
}
public void juega(){
int numIntro;
boolean bucle=true;
Scanner sc = new Scanner(System.in);
nombre();
do{
do{
numIntro = sc.nextInt();
}while(ValidaNumero());

if(numIntro<=10 && numIntro>=0){
System.out.println(numAleatorio);
if(numIntro==numAleatorio){
System.out.println("Acertaste!!");
super.ActualizaRecord();
System.out.println(super.getRecord());
}else{
System.out.println("Fallastes!!");
bucle = super.QuitaVida();
System.out.println("Te quedan " + super.MuestraVidasRestantes() + " vidas");
}
}else{
System.out.println("El numero introducido no es correcto");
}
}while(numIntro != numAleatorio && bucle); //si aciertas sales.
}
}

Clase JuegaAdivinaPar:

import java.util.Scanner;
public class JuegoAdivinaPar extends JuegoAdivinaNumero{

JuegoAdivinaPar(int vidas_iniciales, int numPar) { //Constructor juegoadivinapar de adivina numero
super(vidas_iniciales, numPar);
}


boolean ValidaNumero(){ //Valida numero entre 0 y 10 y si es par
if(numIntro<0||numIntro>10)
System.out.println("El numero introducido no es correcto");

if(0!=numIntro%2){
System.out.println("Error, introduce un numero par");
return false;
}else
return true;
}

public void juega()
{
System.out.print("par\n" + numAleatorio);
super.juega();
}
public int ValidarAleatorio()
{
do{
numAleatorio=ValidarAleatorio();
}
while(ValidarAleatorio()%2==0);

return numAleatorio;
}
}

P.D: Con que funcione el JuegaAdivinaPar valdria para que funcione tambien el AdivinaImpar, no?, tan solo habria que cambiar el 2%==0 a 2%!=0. No??

abril 17, 2014 | Registered Commenterembilibili

Guenas.

Igual digo una tonteria porque no lo he pensado demasiado, pero creo que para obtener pares podrias obtener un numero al azar del 0 al 5 y multiplicarlo por 2.

Para obtener impares lo mismo pero sumandole 1 al resultado.

Un saludo

abril 18, 2014 | Unregistered CommenterPaposo

No vengas a que te hagan los deberes aqui...juegos para tu sobrino, claro,claro..

marzo 14, 2016 | Unregistered CommenterOLABE