Crear el Juego «Adivina el Número» en PSeInt (Guía 2026)

Nivel: Intermedio Tiempo: ~25 min

Programar un videojuego, por sencillo que sea, es el sueño de todo aspirante a desarrollador. El clásico juego de «Alto o Bajo» es el ejercicio perfecto para dar ese salto. En este tutorial de PSeInt, construiremos un algoritmo donde la computadora «piensa» un número aleatorio y tú debes adivinarlo con pistas. Este proyecto es fundamental porque integra tres pilares de la lógica: la generación de números aleatorios (Azar), el uso de bucles interactivos (Repetir/Mientras) y el manejo de contadores para registrar tu puntaje. ¡Prepárate para retar a la máquina!

Conceptos Clave: Azar y Bucles

Para que el juego sea divertido e impredecible, necesitamos herramientas especiales:

Función Azar(N)

Esta función genera un número aleatorio entero. ¡Ojo con el rango! En PSeInt, Azar(100) genera números del 0 al 99. Si queremos jugar del 1 al 100, debemos sumar 1 a la fórmula: Azar(100) + 1.

Bucle Indeterminado (Repetir)

A diferencia de una tabla de multiplicar (donde sabemos que son 10 vueltas), aquí no sabemos cuántos intentos necesitará el usuario. Usamos la estructura Repetir... Hasta Que para mantener el juego vivo hasta que el jugador acierte.

Análisis del Algoritmo

El flujo del juego debe ser lógico y amigable para el usuario:

  • INICIO 1. La computadora genera un número secreto (ej: 42) y lo guarda en memoria.
    2. Inicializamos el contador de intentos en 0.
  • BUCLE DE JUEGO Pedir un número al usuario. Sumar 1 intento. Comparar:
    • Si Usuario < Secreto: Decir "¡Más Alto!".
    • Si Usuario > Secreto: Decir "¡Más Bajo!".
    • Si son iguales: ¡Ganaste!
  • SALIDA Mostrar mensaje de felicitación y el número total de intentos utilizados.

Código Fuente (Juego Clásico)

Archivo: AdivinaNumero.psc
Algoritmo JuegoAdivinanza
    // 1. Definición de Variables
    Definir secreto, intento, contador Como Entero;
    
    // 2. Generación del Número Aleatorio (1 al 100)
    // Azar(100) da de 0 a 99, por eso sumamos 1
    secreto <- Azar(100) + 1;
    contador <- 0;
    intento <- 0; // Inicializamos con un valor que no sea el secreto
    
    Escribir "=== JUEGO: ADIVINA EL NÚMERO ===";
    Escribir "He pensado un número entre 1 y 100.";
    Escribir "¡Intenta adivinarlo!";
    Escribir "--------------------------------";
    
    // 3. Bucle Interactivo
    // Usamos 'Mientras' para repetir hasta que acierte
    Mientras intento <> secreto Hacer
        
        Escribir "Ingresa tu número:";
        Leer intento;
        
        // Aumentamos el contador de intentos
        contador <- contador + 1;
        
        // 4. Lógica de Pistas (Alto/Bajo)
        Si intento > secreto Entonces
            Escribir ">> ¡Demasiado ALTO! Prueba uno más bajo.";
        SiNo
            Si intento < secreto Entonces
                Escribir ">> ¡Demasiado BAJO! Prueba uno más alto.";
            SiNo
                // Si no es mayor ni menor, es igual (Victoria)
                Escribir "*********************************";
                Escribir "¡FELICIDADES! ¡ADIVINASTE!";
                Escribir "*********************************";
            FinSi
        FinSi
        
    FinMientras
    
    // 5. Estadísticas Finales
    Escribir "Número secreto: ", secreto;
    Escribir "Total de intentos: ", contador;
    
FinAlgoritmo

Diagrama de Flujo

⚠️ Errores Comunes de Desarrollo

Programar juegos tiene sus trampas. Evita estos fallos:

Rango Incorrecto (El error del 0)

Si solo escribes Azar(100), la computadora puede generar el número 0 y nunca generará el 100. Recuerda que en informática contamos desde 0. La corrección +1 es obligatoria si quieres jugar del 1 al 100.

Inicialización del Bucle

Si usas Mientras intento <> secreto, debes asegurarte de que intento no valga lo mismo que secreto antes de empezar (aunque es improbable por azar). Es más seguro inicializar intento en -1 o un valor fuera de rango.

Reto: Modo Difícil (Intentos Limitados)

Hagamos el juego más emocionante. Ahora el jugador solo tiene 5 vidas. Si se agotan, pierde el juego (Game Over). Esto introduce una condición de salida doble en el bucle.

Algoritmo JuegoVidasLimitadas
    Definir secreto, intento, vidas Como Entero;
    
    secreto <- Azar(50) + 1; // Rango 1-50
    vidas <- 5;
    intento <- 0;
    
    Escribir "=== MODO HARDCORE (1-50) ===";
    Escribir "Tienes ", vidas, " vidas para adivinar.";
    
    // El bucle sigue MIENTRAS no acierte Y le queden vidas
    Mientras intento <> secreto Y vidas > 0 Hacer
        
        Escribir "Vidas restantes: ", vidas;
        Escribir "Ingresa tu número:";
        Leer intento;
        
        Si intento == secreto Entonces
            Escribir "¡VICTORIA! Lo lograste.";
        SiNo
            vidas <- vidas - 1; // Restamos vida
            
            Si vidas == 0 Entonces
                Escribir "--- GAME OVER ---";
                Escribir "El número era: ", secreto;
            SiNo
                // Damos pistas solo si sigue vivo
                Si intento > secreto Entonces
                    Escribir "Pista: Busca más BAJO.";
                SiNo
                    Escribir "Pista: Busca más ALTO.";
                FinSi
            FinSi
        FinSi
        Escribir ""; // Espacio estético
    FinMientras
    
FinAlgoritmo

Preguntas Frecuentes (FAQ)

¿Por qué PSeInt siempre genera los mismos números?
Esto se llama "semilla pseudoaleatoria". En algunas configuraciones de PSeInt, la secuencia es fija para pruebas. Para evitarlo, marca la opción "No inicializar el azar con la misma semilla" en las opciones de configuración de tu perfil.
¿Cuál es la diferencia entre Azar y Aleatorio?
Azar(N) genera desde 0 hasta N-1. Aleatorio(A, B) genera un número entre A y B (ambos incluidos). Aleatorio(1, 100) es equivalente a Azar(100) + 1.
¿Cómo hago niveles de dificultad?
Puedes añadir un menú al inicio: "1. Fácil (1-10), 2. Medio (1-50), 3. Difícil (1-100)". Según la opción elegida, cambias el valor dentro de la función Azar().
¿Puedo poner pistas de "Caliente" o "Frío"?
Sí. Calcula la diferencia con abs(secreto - intento). Si la diferencia es menor a 5, escribes "¡Muy caliente!", si es mayor a 20, "¡Congelado!".

¿Listo para el siguiente nivel?

Domina la lógica de programación con nuestra colección completa.

Ver Más Ejercicios Resueltos

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *