En esta ocasión te presentamos un entretenido juego matemático escrito en C++ llamado "Adivina mi número". El juego consiste en adivinar un número elegido al azar entre 0 y 100 en un máximo de 4 intentos. Por cada intento fallido, el programa proporcionará pistas al jugador, indicándole si el número es mayor o menor al número secreto.

Ejecución en consola del juego matemático en C++ "Adivina el número"

Si se sobrepasa el rango permitido (de 0 a 100), el programa solicitará que introduzca un número válido y lo evaluará solo cuando cumpla esta condición.

Chequemos el código: 

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main() {
    // Semilla aleatoria para generar el número secreto
    srand(time(0));

    int numeroSecreto = rand() % 101; // Genera un número aleatorio entre 0 y 100
    int intentos = 0;
    int intentoUsuario;

    cout << "¡Hola! ¡Bienvenido al juego \"Adivina Mi Número\"!" << endl;
    cout << "He pensado en un número secreto entre 0 y 100, y tu misión es adivinarlo en un máximo de 4 intentos." << endl;

    do {
        intentos++;
        switch (intentos) {
            case 1:
                cout << "Introduce tu primer intento: ";
                break;
            case 2:
                cout << "Introduce tu segundo intento: ";
                break;
            case 3:
                cout << "Introduce tu tercer intento: ";
                break;
            case 4:
                cout << "Introduce tu cuarto intento: ";
                break;
        }

        // Verifica si la entrada está en el rango válido
        while (true) {
            cin >> intentoUsuario;
            if (intentoUsuario >= 0 && intentoUsuario <= 100) {
                break; // Sale del bucle si la entrada es válida
            } else {
                cout << "Número no válido. El rango de operación es de 0 a 100. Por favor, introduce un número válido:";
            }
        }

        if (intentoUsuario < numeroSecreto && intentos < 4) {
            cout << "Mi número es mayor. Intenta de nuevo." << endl;
        } else if (intentoUsuario > numeroSecreto && intentos < 4) {
            cout << "Mi número es menor. Intenta de nuevo." << endl;
        } else if (intentoUsuario != numeroSecreto) {
            cout << "Agotaste tus 4 intentos. Mi número secreto era: " << numeroSecreto << endl;
        } else {
            cout << "¡Felicidades! Adivinaste mi número en " << intentos << " intentos." << endl;
        }
    } while (intentoUsuario != numeroSecreto && intentos < 4);

    return 0;
}
Funcionamiento:  El programa comienza inicializando la semilla del generador de números aleatorios con la línea 'srand(time(0))', utilizando la hora actual como referencia. Esto garantiza que la secuencia de números aleatorios sea diferente cada vez que se ejecuta el programa.

Luego, con la línea 'int numeroSecreto = rand() % 101', se genera un número aleatorio entre 0 y 100, y este valor se almacena en la variable numeroSecreto. La función rand() genera un número aleatorio en un rango no especificado, y % 101 asegura que el resultado esté dentro del rango 0 a 100.

Se inicializa la variable 'intentos' en 0, con un límite de 4, y se declara la variable de tipo entero 'intentoUsuario', que almacena los intentos del jugador.

Luego, el programa entra en un bucle do-while, que se ejecuta al menos una vez y continuará hasta que el jugador adivine el número secreto o se agoten los 4 intentos 'while (intentoUsuario != numeroSecreto && intentos < 4);'. Dentro de este bucle, se encuentra una estructura while que verifica que el número ingresado esté dentro del rango de 0 a 100, asegurando que se cumpla la condición if (intentoUsuario >= 0 && intentoUsuario <= 100).

Después, con una serie de instrucciones if, se evalúa el número introducido por el jugador y se proporcionan las pistas correspondientes en caso de un intento fallido. Si el jugador agota sus 4 intentos sin adivinar el número secreto, se muestra un mensaje indicando cuál era el número secreto. Si el jugador adivina el número secreto, se muestra un mensaje de felicitación junto con la cantidad de intentos realizados.

El código ha sido probado en Code::Blocks en Windows, por lo que es completamente funcional.

Puedes descargar el código .CPP aquí.

NOTA: Si los acentos o caracteres especiales no se muestran correctamente, puedes checar esta solución: ¿Cómo mostrar acentos y caracteres especiales en programas escritos en C++?