C++ Ejercicios

Páginas: 36 (8875 palabras) Publicado: 21 de mayo de 2012
Tema numero cuatro


4. Cómo generar números al azar. Un primer juego: adivinar números.

Contenido de este apartado:
• Pautas generales.
• Cómo hacerlo en el caso del lenguaje C y la biblioteca Allegro.
• Cómo hacerlo con Free Pascal.
• Cómo hacerlo en el caso de Java.


4.1. Pautas generales.

Un requisito fundamental en la mayoría de los juegos es que no seasiempre igual, para que no sea predecible. Si hay cosas al azar, no bastará con que el jugador memorice, sino que tendrá que enfrentarse a retos que no serán siempre los mismos.

Por eso, vamos a ver cómo generar números al azar. A partir de esos números, haremos el que posiblemente es el juego más sencillo posible: adivinar un número oculto, teniendo una cantidad limitada de intentos.


En cuantoa obtener números aleatorios al azar, suele haber ciertas cosas comunes en casi cualquier lenguaje de programación: las funciones que nos dan ese número se llamarán "rand" o algo muy parecido, porque "aleatorio" en inglés es "random". Por otra parte, en muchos lenguajes es necesario decirle una "semilla" a partir de la que empezar a generar los números. Si la semilla fuera siempre la misma, losnúmeros obtenidos, por lo que se suele usar como semilla el reloj interno del ordenador, porque sería casi imposible que dos partidas comenzaran exactamente a la misma hora (con una precisión de centésimas de segundo o más). Para complicar la situación, en algunos lenguajes la función "rand" (o como se llame) nos da un número entre 0 y 1, que nosotros deberíamos multiplicar si queremos números másgrandes (eso pasa en Pascal y Java);  en otros lenguajes obtenemos un número muy grande, entre 0 y otro valor (a veces cerca de 32.000, otras cerca de 2.000 millones, según la biblioteca que usemos), como es el caso de C, así que para obtener un número más pequeño lo que haremos es dividir y quedarnos con el resto de esa división.

Así, en nuestro caso, en la versión de C del juego haremos(semilla a partir del reloj, y un número enorme, del que tomamos el resto de la división):

  srand(time(0));
  numeroAdivinar = rand() % MAXIMONUMERO;

y en Pascal algo como (primero la semilla y luego un número entre 0 y 1, que multiplicamos)

  randomize;
  numeroAdivinar := round(random * MAXIMONUMERO);

y en Java  (similar a Pascal, pero sin necesidad de pedir que se cree la semilla):  numeroAdivinar = (int) Math.round(Math.random() * MAXIMONUMERO);


Por lo que respecta a nuestro juego, la idea de lo que tiene que hacer (lo que se suele llamar "pseudocódigo") podría ser algo así:

Generar un número al azar entre 0 y 99
acertado = FALSO
repetir
  pedir número al usuario
  si el número tecleado el número al azar, terminado = VERDADERO
    en caso contrario, si elnúmero tecleado es más pequeño, avisar
    en caso contrario, si el número tecleado es mayor, avisar
  incrementar Numero de intentos
hasta que (acertado) o (Numero de intentos = maximo)
si acertado, felicitar
  en caso contrario, decir qué número era el correcto


Pasar de aquí a la práctica no debería ser difícil, salvo quizá por el hecho de "pedir número al usuario". Como ya habíamoscomentado, en general no tendremos en modo gráfico rutinas que permitan leer entradas complejas por teclado. Pero como esa es la única complicación de este juego, lo podemos evitar de una forma sencilla: obligaremos a que el usuario tenga que teclear un número de 2 cifras entre 00 y 99, de modo que nos bastará con dos órdenes de comprobar una pulsación de teclado (readkey, getch o similar).

Pasar delas dos letras "1" y "4" al número 14 tampoco es difícil. Algunos lenguajes nos permitirán "juntar" (concatenar, hablando más correctamente) las dos letras para obtener "14" y luego decir que calcule el valor numérico de este texto. Otra opción es restar la letra "0" a cada cifra, con lo cual ya tenemos el valor numérico de cada una, es decir 1 y 4; para obtener el 14 basta con multiplicar el...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • ejercicio C
  • Ejercicios c++
  • Ejercicios En C++
  • Ejercicios De C#
  • Ejercicios C++
  • Ejercicios c++
  • Ejercicios de c++
  • Ejercicios en c

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS