Juego superior-inferior con Python

En este artículo, veremos la forma de diseñar un juego en el que el usuario tiene que adivinar cuál tiene un mayor número de seguidores y muestra los puntajes.

Como se Juega:

Se mostrará el nombre de algunas cuentas de Instagram, debes adivinar cuál tiene un mayor número de seguidores escribiendo el nombre de esa cuenta. Asegúrese de escribir el nombre exactamente como se muestra. Si la respuesta es correcta, una de las cuentas permanecerá y se mostrará otra cuenta para comparar. Desarrollaremos el juego usando conceptos básicos de Python.

Estructura del proyecto

 

Recursos adicionales : usaremos algo de arte ASCII para mostrar el título de nuestro juego y hacer que se vea más atractivo. Se almacenará en un archivo python separado: art.py. Puede generar su propio arte ASCII desde aquí: https://patorjk.com/software/taag/#p=display&f=Graffiti&t=Type%20Something%20

Archivo: art.py

Python3

# three quotation marks are used to make a multiline string.
 
logo = """
  _    _ _       _                 _                           
 | |  | (_)     | |               | |                          
 | |__| |_  __ _| |__   ___ _ __  | |     _____      _____ _ __
 |  __  | |/ _` | '_ \ / _ \ '__| | |    / _ \ \ /\ / / _ \ '__|
 | |  | | | (_| | | | |  __/ |    | |___| (_) \ V  V /  __/ |  
 |_|  |_|_|\__, |_| |_|\___|_|    |______\___/ \_/\_/ \___|_|  
            __/ |                                              
           |___/                                               
"""
 
 
vs = """
 _    __   
| |  / /____
| | / / ___/
| |/ (__  )
|___/____(_)
"""

Datos del juego :

La siguiente parte es tener algunos datos para que nuestro juego funcione. Tenga en cuenta que los datos seguramente serán incorrectos en comparación con cuando lee este artículo, ya que la cantidad de seguidores sigue cambiando. Entonces, para tener datos altamente precisos, los actualiza usted mismo. Los datos del juego son simplemente una lista de diccionarios de Python. Puede encontrar datos de muestra en este archivo game_data Cópielo y péguelo en un archivo python separado: game_data.py. Así es como se verá una pequeña muestra de datos completos. 

Archivo: game_data.py

Python3

data = [
    {
        'name': 'Instagram',
        'follower_count': 346,
        'description': 'Social media platform',
        'country': 'United States'
    },
    {
        'name': 'Cristiano Ronaldo',
        'follower_count': 215,
        'description': 'Footballer',
        'country': 'Portugal'
    },
    {
        'name': 'Ariana Grande',
        'follower_count': 183,
        'description': 'Musician and actress',
        'country': 'United States'
    }
]

Lógica del juego:

Paso 1: Primero, necesitamos hacer algunas importaciones necesarias:

Los datos almacenados en un archivo de Python se pueden usar en algún otro archivo de Python usando la palabra clave from e import donde from especifica desde qué archivo queremos importar e import especifica qué datos queremos usar. También realizamos una importación opcional, que es un método clear(), que borrará la consola de salida, de modo que el juego se pueda llevar a cabo durante un período más largo sin saturar la pantalla de salida con texto de salida innecesario. 

Python3

# since we want to randomly select an
# option from the data, we need random
# module
import random
 
# import the game data
from game_data import data
 
# import the ASCII art to display.
from art import logo
from art import vs
 
# IDEs like Replit have their own "clear"
# functions to clear the output console:
from replit import clear
 
# If you are using some other IDE, this import
# will not work.
# You will have to use clear of that IDE
# For example, in Google Colab Notebook we have:
from googl.colab import output

Paso 2: cree tres funciones, para jugar, seleccione una opción de game_data y compare el ganador.

Los datos almacenados en un archivo de Python se pueden usar en algún otro archivo de Python usando la palabra clave from e import donde from especifica desde qué archivo queremos importar e import especifica qué datos queremos usar. También realizamos una importación opcional, que es un método clear(), que borrará la consola de salida, de modo que el juego se pueda llevar a cabo durante un período más largo sin saturar la pantalla de salida con texto de salida innecesario. 

Python3

def assign():
    pass
 
def compare(p1, p2, user_input):
    pass
 
def play_higher_lower():
    pass
 
 
want_to_play = input("Do you want to play Higher Lower? (y/n)\n").lower()
if want_to_play == 'y':
    clear()
    play_higher_lower()
elif want_to_play == 'n':
    print("Program Exit Successful.")
else:
    print("Invalid Input, Program Exited.")

Paso 3: Haz que la función de asignación funcione:

Aquí, el método de elección de módulos aleatorios elige aleatoriamente un elemento de una lista. El elemento, que en este caso es un diccionario, se almacena en una variable donde se llama a esta función.

Python3

def assign():
    return random.choice(data)

Paso 4: Haz que la función de comparación funcione:

Almacenamos los conteos de seguidores de cada cuenta en una variable y los comparamos para ver qué cuenta tiene un mayor número de conteos de seguidores y almacenamos el nombre de esa cuenta en una variable, máx. Luego lo comparamos con el nombre ingresado por el usuario, si el usuario ingresa el nombre correcto, se devuelve True; de ​​lo contrario, se devuelve False.

Python3

def compare(p1, p2, user_input):
 
    # store the follower count of
    # account1 in a variable
    sum1 = p1['follower_count']
     
    # store the follower count of
    # account2 in a variable
    sum2 = p2['follower_count']
     
    # make an empty variable max, where
    # we will store the name of account
    # with highest followers, then compare
    # it with user input name.
    max = ""
     
    # if account1 has greater follower count
    if sum1 > sum2:
           
        # max is name of account1
        max = p1['name']
    elif sum1 < sum2:
           
        # otherwise, if account2 has higher
        # follower count,
        # max is name of account two.
        max = p2['name']
     
    # now compare the name of account with greater
    #follower count against the user input name,
    # if user is correct, return True
    if max == user_input:
        return True
    else:
          # otherwise return False
        return False

Paso 5: Haz que funcione la función de juego:

Necesitamos un ciclo para seguir solicitando continuamente la entrada del usuario y seguir revisándolos. Si está en lo correcto, el ciclo continuará; de lo contrario, se interrumpirá. No queremos que la función termine ahí, queremos preguntarle si le gustaría volver a jugar, lo hacemos usando un bucle while externo, que seguirá ejecutándose mientras el usuario quiera seguir jugando. En el ciclo del juego actual, cree dos variables y use el método de asignación para asignarles una cuenta, muéstrelas, luego solicite la entrada del usuario, compárela y continúe el ciclo si el usuario está en lo correcto. En la segunda iteración, queremos cambiar las cuentas que se muestran en la pantalla. Queremos mantener la segunda cuenta, convertirla en la cuenta uno y usar el método de asignación para asignar otra cuenta a la cuenta 2. Para que esto suceda en la segunda iteración, y no en la primera, necesitamos realizar un seguimiento de la puntuación, que inicialmente es cero y aumenta si el usuario está en lo correcto. Si la puntuación no es cero, significa que el usuario no está en la primera iteración y que su respuesta anterior era correcta. Así cambiamos las cuentas para que se muestren en este if check.

Después de llamar a la función de comparación, la puntuación aumenta en 1 y el bucle continúa; de lo contrario, la puntuación se establece en cero y el bucle del juego finaliza. Debido al bucle externo, se le pide al usuario que ingrese, si quiere continuar o no, el bucle continúa, por lo que comienza un nuevo juego que seguirá ejecutándose mientras el usuario siga ingresando la entrada correcta.

Python3

def play_higher_lower():
     
    # infinite loop to make user play
    # game again and again.
    playing_game = True
    while playing_game:
         
        # variable to keep track fo suer's score,
        # i.e., how many times he answers correctly
        score = 0
         
        # infinite loop to continue the current game play
        still_guessing = True
        while still_guessing:
             
            # print the logo after clearing the screen.
            clear()
            print(logo)
             
            # assign two account names to display
            person1 = assign()
            person2 = assign()
             
            # if we are not in first iteration, and user
            # input corret answer to previous iteration,
            # in that case, make account1 become account2
            # and randomly asing account2 some other account.
            if score > 0:
                person1 = person2
                person2 = assign()
                 
                # we need to make sure that the two accounts
                # are not same.
                if person1 == person2:
                    person2 = assign()
             
            # display account1 name and description
            print(f"Name: {person1['name']}, Desc: {person1['description']}")
             
            # display the "VS" art
            print(vs)
             
            # display account2 name and description
            print(f"Name: {person2['name']}, Desc: {person2['description']}")
             
            # display current score
            print("----------------------------------------------")
            print(f"Your current score is: {score}")
            print("----------------------------------------------")
             
            # ask for user input
            guess = input("Enter name of person with Higher Followers: ")
             
            # see if user is correct
            if compare(person1, person2, guess):
               
                  # if user is correct continue to next iteration
                # and increase score by 1
                score += 1
            else:
                # if user is wrong, the current game play loop stops
                still_guessing = False
                 
        # since the user was wrong in previous iteration and
        # the game ended, ask him if he want to play again.
                 
        play_again = input("Want to Play Again? (y/n): ").lower()
         
        # if he want to, continue, otherwise end the outer
        # loop as well. also check if the user entered some
        # other input than what is allowed
        if play_again == 'y':
            continue
        elif play_again == 'n':
            playing_game = False
            clear()
            print("Game Exited Successfully")
        else:
            playing_game = False
            print("Invalid Input Taken as no.")

Producción:

 

Publicación traducida automáticamente

Artículo escrito por ishanrastogi26 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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