Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: flpe45 en 12 de Noviembre 2015, 21:52
-
HOla lo que necesito es uj programa que adivine un numero pensado por el ser humano
Yo tengo uno en el que es lo opuesto el humano debe adivinar el numero pero lo que yo quiero es que el PROGRAMA ADIVINE MI NUMERO AYUDAAA!!!!
import java.util.Scanner;
import java.util.Random;
public class AdivinaNumero
{
public void Adivina()
{
int numero;
int recibido;
int Escala = 1000;
Random aleatorio = new Random();
Scanner entrada = new Scanner(System.in);
numero = aleatorio.nextInt(Escala) + 1;
System.out.printf("\nTengo un numero entero entre 1 y %d. ", Escala);
System.out.println("Puede adivinarlo?");
System.out.println("\nPor favor introduzca un numero: \n");
recibido = entrada.nextInt();
while ( recibido != numero )
{
if ( recibido > numero )
{
System.out.println("\nEl numero es muy grande, por favor intenta de nuevo.");
recibido = entrada.nextInt();
}
else
{
System.out.println("\nEl numero es muy chico, por favor intenta de nuevo.");
recibido = entrada.nextInt();
}
}
System.out.println("\nHAS ADIVINADO EL NUMERO!");
}
}
Este es para poder corre el anterior
import java.util.Scanner;
public class UsaAdivinaNumero
{
public static void main(String args[])
{
Scanner entero = new Scanner(System.in);
AdivinaNumero miObjeto = new AdivinaNumero();
int centinela = 0;
while ( -1 != centinela )
{
miObjeto.Adivina();
System.out.printf("\nEste programa propone adivinar un numero. ");
System.out.println("\nQuiere jugar otra vez? Introduzca un numero o -1 para terminar");
centinela = entero.nextInt();
}
}
}
-
Hola flpe45! Por si no lo has leído en otros hilos, siempre recomendamos poner un título conteniendo la descripción del problema y las palabras clave, esto se explica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0
Si no lo haces así quien ve el mensaje en el foro no sabe de qué trata el tema y con ello te resultará más difícil que alguien te ayude.
Te indico cuál sería la lógica del juego:
Supongamos que el número pensado debe estar entre 1 y 100.
El computador debe generar un número aleatorio entre 1 y 100 y preguntar, ¿es mayor, menor o exacto?
Si el usuario responde menor, el computador debe calcular el valor medio entre 1 el número introducido y preguntar de nuevo si es mayor, menor o exacto. Debe llevarse una variable con limiteSuperior y otra con limiteInferior
Se sigue procediendo de la misma manera hasta que el usuario responde exacto y el computador responde ¡Por fin lo he conseguido!
Ejemplo: el número pensado es 88. Inicialmente limiteInferior=1 y limiteSuperior=100. El computador genera como aleatorio el 22 y pregunta ¿es mayor, menor o exacto?
Respondemos mayor. Ahora limiteInferior=22 y limiteSuperior=100 El siguiente número es (22+100) / 2 = 61 y el computador pregunta ¿es mayor, menor o exacto?
Respondemos mayor. Ahora limiteInferior=61 y limiteSuperior=100 El siguiente número es (61+100)/2 = 81.5 redondeo hacia abajo 80 y el computador pregunta ¿es mayor, menor o exacto?
Respondemos mayor. Ahora limiteInferior=80 y limiteSuperior=100 El siguiente número es (80+100)/2 = 90 y el computador pregunta ¿es mayor, menor o exacto?
Respondemos menor. Ahora limiteInferior=80 y limiteSuperior=90 El siguiente número es (80+90)/2 = 85 y el computador pregunta ¿es mayor, menor o exacto?
Respondemos mayor. Ahora limiteInferior=85 y limiteSuperior=90. el siguiente número es (85+90)/2 = 87.5 redondeo inferior 87 y el computador pregunta ¿es mayor, menor o exacto?
Respondemos mayor. Ahora limiteInferior=87 y limiteSuperior=90. El siguiente número es (87+90)/2 = 88.5 redondeo inferior 88 y el computador pregunta ¿es mayor, menor o exacto?
Respondemos exacto y el computador responde ¡Por fin lo he conseguido! y termina el programa
Si no sabes cómo implementar esta lógica recomendable seguir el curso http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188
Saludos!