¿Cómo crear un juego de adivinanzas de números en Python?

Ya deberías haber adivinado el contenido de este artículo. Y probablemente debería estar familiarizado con la adivinación de números y buscar una manera de construirlo usando Python.

Aprendamos a crear un juego de adivinanzas desde cero.

Juego de adivinanzas de números

El juego es simple. El usuario tiene que adivinar el número generado aleatoriamente que se encuentra entre el rango de 1 a 100. Eso es todo.

¿Es el juego tan simple?

Sí lo es.

Pero, hay una cosa que tenemos que proporcionar a los usuarios para que adivinen el número. Eso es pistas. Tenemos que proporcionar un mensaje al usuario que diga que el número adivinado actual es menor que el número correcto o que el número adivinado actual es mayor que el número correcto. Para que los usuarios sepan en qué dirección tienen que ir.

Podemos hacerlo más emocionante agregando funciones adicionales como el número máximo de posibilidades de adivinar, aumentando el rango, configurando un temporizador, etc.

Es obligatorio crear el juego de trabajo básico. Después de eso, podemos agregar más funciones como se discutió. Entonces, vamos a crear la versión básica del juego en esta sección. Y luego pasaremos a agregar nuevas características.

Quiero que intentes crear el juego sin copiar el código a ciegas. Entonces, primero voy a explicar el algoritmo. Le ayudará a codificarse usted mismo o comprender el código rápidamente.

Veamos el algoritmo para crear el juego de adivinanzas de números.

Algoritmo

Asegúrese de comprender el algoritmo antes de pasar a la parte de codificación.

  • Defina el rango de los números. Por defecto, es 1-100 pero puedes cambiarlo como prefieras.
  • Genere un número entero aleatorio del rango anterior (1-100).
  • Inicie el juego mostrando al usuario un mensaje que dice «Adivina el número de X a Y». Puede actualizar el mensaje como desee.
  • Inicialice una variable a 0 para contar el número total de oportunidades que el usuario ha tenido para adivinar el número correctamente.
  • Escribe un bucle infinito.
    • Pida al usuario que adivine el número.
    • Si el número adivinado actual es igual al número generado aleatoriamente, felicite al usuario con un mensaje como desee. Un ejemplo sería “-> ¡Hurra! ¡Lo conseguiste en 5 pasos!”.
    • Rompe el bucle después de felicitar al usuario.
    • Si el número adivinado actual es menor que el número generado aleatoriamente, envíe un mensaje al usuario que diga «-> Su número es menor que el número aleatorio» o un mensaje personalizado que tenga el mismo significado.
    • Si el número adivinado actual es mayor que el número generado aleatoriamente, envíe un mensaje al usuario que diga «-> Su número es mayor que el número aleatorio» o una costumbre con el mismo significado.
    • Finalmente, incremente las oportunidades que el usuario ha tomado para adivinar.

Habría tenido código en su mente después de ver el algoritmo. No se preocupe, incluso si no obtiene el código completo. Pero, asegúrese de entender el algoritmo anterior.

Es hora de poner manos a la obra con el código. Entra en el código sin más preámbulos.

Código

¿Intentaste escribir el código?

Si es así y lo completó. Es genial. Consulte el código y entiéndalo para agregar más perspectivas a su conocimiento.

No te preocupes incluso si no escribiste el código. Vea el siguiente código y entiéndalo. Intente modificarlo y escribirlo a su manera para una mejor comprensión.

Entonces, veamos el código.

import random


class NumberGuessingGame:

    def __init__(self):
        ## define the range
        self.LOWER = 1
        self.HIGHER = 100

    ## method to generate the random number
    def get_random_number(self):
        return random.randint(self.LOWER, self.HIGHER)

    ## game start method
    def start(self):
        ## generating the random number
        random_number = self.get_random_number()

        print(
            f"Guess the randomly generated number from {self.LOWER} to {self.HIGHER}")

        ## heart of the game
        chances = 0
        while True:
            user_number = int(input("Enter the guessed number: "))
            if user_number == random_number:
                print(
                    f"-> Hurray! You got it in {chances + 1} step{'s' if chances > 1 else ''}!")
                break
            elif user_number < random_number:
                print("-> Your number is less than the random number")
            else:
                print("-> Your number is greater than the random number")
            chances += 1

## instantiating and starting the game
numberGuessingGame = NumberGuessingGame()
numberGuessingGame.start()

Hay algunas cosas que entiendes del código.

  • El rango se define dentro del método __init__ para que pueda usarse en todos los métodos de la clase.
  • Podemos cambiarlo fácilmente en un lugar que cambia en la aplicación en consecuencia.
  • Hay un método separado para generar el número aleatorio que sigue el principio de «separar las preocupaciones». Aquí, nuestro método tiene poco código, pero podría aumentar en el futuro.
  • Finalmente, hemos usado class para que todos los métodos relacionados con el juego residan dentro de él. Y se puede reutilizar fácilmente en otras aplicaciones.

Todos los puntos que se discutieron anteriormente están relacionados con la escritura de código limpio. Deberíamos tratar de escribir un código limpio que entienda incluso después de unos X años.

La salida de muestra del juego tiene el siguiente aspecto.

$ python number_guessing_game.py 
Guess the randomly generated number from 1 to 100
Enter the guessed number: 50
-> Your number is less than the random number
Enter the guessed number: 75
-> Your number is less than the random number
Enter the guessed number: 90
-> Your number is greater than the random number
Enter the guessed number: 85
-> Your number is greater than the random number
Enter the guessed number: 80
-> Hurray! You got it in 5 steps!

Supongo que tiene Python instalado para probar el código anterior.

Característica adicional

Vamos a sumar el número máximo de posibilidades que tiene un usuario de adivinar el número. Si el usuario no adivina el número dentro del número de posibilidades, entonces el usuario pierde.

¿Cómo lo agregamos?

Es un proceso simple de dos pasos. Veamos los pasos.

  • Defina el número máximo de posibilidades que tiene el usuario de adivinar el número.
  • Compruebe si el usuario tiene posibilidades o no antes de solicitar la entrada. Y termina el juego si el usuario no tiene oportunidades.

El siguiente código adicional completará la característica.

  • Agregue el siguiente código dentro del método __init__.
self.MAX_CHANCES = 10
  • Agregue la siguiente condición antes de que el usuario ingrese la siguiente suposición.
if chances == self.MAX_CHANCES:
                print("-> Phew! You lost the game. You are out of chances")

Ahora, prueba el juego sin adivinar el número correcto. Debería ver una salida similar a la siguiente.

$ python number_guessing_game.py 
Guess the randomly generated number from 1 to 100. You have 10 chances to guess.
Enter the guessed number: 1
-> Your number is less than the random number
Enter the guessed number: 2
-> Your number is less than the random number
Enter the guessed number: 3
-> Your number is less than the random number
Enter the guessed number: 4
-> Your number is less than the random number
Enter the guessed number: 5
-> Your number is less than the random number
Enter the guessed number: 6
-> Your number is less than the random number
Enter the guessed number: 7
-> Your number is less than the random number
Enter the guessed number: 8
-> Your number is less than the random number
Enter the guessed number: 9
-> Your number is less than the random number
Enter the guessed number: 10
-> Your number is less than the random number
-> Phew! You lost the game. You are out of chances

¡Viva! Hemos agregado una función adicional a nuestro juego. Aunque no es el final. Puede agregar algunas características más para que sea más atractivo para los usuarios. Es tu momento ahora. Adelante, hazlo más bonito :).

Conclusión

Hemos creado un simple juego de adivinanzas de números. Ahora, es tu turno de pensar en los juegos que jugabas cuando eras joven. Hazlos usando lenguaje de programación y compártelos con tus amigos. Podemos digitalizar la mayoría de nuestros juegos de la infancia.

A continuación, explore el IDE de Python y el compilador en línea para ejecutar el código de Python.

Codificación feliz 🙂

Si no te cansas de los juegos de palabras virales, aquí tienes cómo hacerlo mejor en Wordle.

¿Te gustó leer el artículo? ¿Qué tal compartir con el mundo?