El desarrollo de juegos sencilols es una excelente práctica para comprender la lógica de control de flujo, la gestión de variables y la interacción con el usuario en diferentes lenguajes de programación. A continuación, se presenta la implementación de un juego de "Adivina el número" en tres de los lenguajes más utilziados actualmente: Python, JavaScript y C#.
1. Implementación en Python
En este ejemplo, utilizamos el módulo random para generar el valor secreto y un bucle while junto con una estructura try-except para validar que la entrada del usuario sea un entero válido.
import random
def iniciar_juego():
numero_secreto = random.randint(1, 100)
intentos_realizados = 0
ha_ganado = False
print("--- Juego de Adivinanza ---")
while not ha_ganado:
try:
entrada = input("Introduce un número entre 1 y 100: ")
sugerencia = int(entrada)
intentos_realizados += 1
if sugerencia < numero_secreto:
print("El número buscado es mayor.")
elif sugerencia > numero_secreto:
print("El número buscado es menor.")
else:
print(f"¡Felicidades! Has acertado en {intentos_realizados} intentos.")
ha_ganado = True
except ValueError:
print("Error: Por favor, ingresa un número entero válido.")
if __name__ == "__main__":
iniciar_juego()
2. Implementación en JavaScript
Para la versión en JavaScript, se utiliza una lógica basada en el navegador mediante el uso de prompt para capturar datos y alert para mostrar mensajes de retroalimentación.
const ejecutarRetoNumerico = () => {
const valorObjetivo = Math.floor(Math.random() * 100) + 1;
let contador = 0;
let adivinado = false;
while (!adivinado) {
let inputUsuario = prompt("Adivina el número (del 1 al 100):");
if (inputUsuario === null) break; // Permite cancelar el juego
let numero = parseInt(inputUsuario);
contador++;
if (numero === valorObjetivo) {
alert(`¡Correcto! El número era ${valorObjetivo}. Te tomó ${contador} intentos.`);
adivinado = true;
} else if (numero < valorObjetivo) {
alert("Intenta con un número más alto.");
} else if (numero > valorObjetivo) {
alert("Intenta con un número más bajo.");
} else {
alert("Por favor, ingresa un valor numérico válido.");
}
}
};
ejecutarRetoNumerico();
3. Implementación en C#
En C#, empleamos la clase Random y el método int.TryParse dentro de un bloque do-while. Este enfoque asegura que el programa no falle si el usuario introduce caracteres no numéricos en la consola.
using System;
namespace EjerciciosLogica
{
class JuegoNumerico
{
static void Main(string[] args)
{
Random generador = new Random();
int claveSecreta = generador.Next(1, 101);
int intentos = 0;
bool acertado = false;
Console.WriteLine("Bienvenido al buscador de números.");
do
{
Console.Write("Propón un número: ");
string entrada = Console.ReadLine();
if (int.TryParse(entrada, out int propuesta))
{
intentos++;
if (propuesta == claveSecreta)
{
Console.WriteLine($"¡Éxito! Adivinaste el número en {intentos} intentos.");
acertado = true;
}
else
{
string pista = propuesta < claveSecreta ? "más alto" : "más bajo";
Console.WriteLine($"Pista: El número es {pista}.");
}
}
else
{
Console.WriteLine("Entrada no válida. Ingresa un número entero.");
}
} while (!acertado);
}
}
}