Inove Escuela de Código
info@inove.com.ar
Web: Inove
En este repositorio contiene todos los materiales e instrucciones para poder realizar el proyecto de python inicial.
Para poder entregar este proyecto y que pueda ser validado y aprobado deberá crear un repositorio (puede forkear este repositorio para ello) y almacenar allí su solución a este desafió. Una vez hecho eso deberá entregar el link de su repositorio a el email de alumnos alumnos.inove@gmail.com
- Contará con un script de python "interfaz.py" el cual será el responsable de dibujar la interfaz del juego.
-
Deberá crear un archivo "main.py" en el cual colocará todo el código necesario para realizar el proyecto.
-
Dentro de ese archivo deberá importar las siguientes librerías ni bien comienza el archivo:
-
- random
-
- interfaz
-
Luego deberá crear el bloque principal
if __name__ == "__main__":. Dentro del bloque principal utilizará sus funciones y desarrollará el proyecto. -
Entre el lugar donde usted importó las librerías y generó el bloque pincipal, ahí irá creando sus funciones.
- En el archivo interfaz.py se encuentra la función "dibujar" para dibujar en consola el ahorcado.
- Argumentos de la función dibujar:
- palabra_secreta [string]: Palabra secreta que debe adivinar el jugador.
- lista_letras_usadas [lista]: Lista de letras usadas hasta el momento, ingresadas por el usuario en cada intento.
- intentos_invalidos [int]: Cantidad de intentos invalidos.
- 0 --> no hubo errores
- 7 --> máxima cantidad de intentos inválidos
Dentro del bloque principal del programa deberá colocar la siguiente estructura de código:
if __name__ == "__main__":
print("\n¡Aquí comienza el juego del ahorcado!\n")
# Inicializo las variables y listas a utilizar.
max_cantidad_intentos = 7
intentos = 0
letras_usadas = []
es_ganador = False
# Leer la palabra secreta de una lista.
palabras = ["listas", "bucles", "variables"]
palabra_secreta = leer_palabra_secreta(palabras)
# Esto se realiza para que el jugador pueda ver al principio
# la cantidad de letras de la palabra a adivinar.
interfaz.dibujar(palabra_secreta, letras_usadas, intentos)
while intentos < max_cantidad_intentos and not es_ganador:
# Pedir una nueva letra
letra = pedir_letra(letras_usadas)
letras_usadas.append(letra)
# Verificar si la letra es parte de la palabra secreta
if verificar_letra(letra, palabra_secreta) == False:
# En caso de no estar la letra ingresada en la palabra
# a adivinar incremento en 1 la variable intentos.
intentos += 1
# Dibujar la interfaz
interfaz.dibujar(palabra_secreta, letras_usadas, intentos)
# Validar si la palabra secreta se ha adivinado
if validar_palabra(letras_usadas, palabra_secreta) == True:
es_ganador = True
break
if es_ganador:
print(f'\n¡Usted ha ganado la partida!, palabra secreta {palabra_secreta}!\n')
else:
print('\n¡Ahorcado!')
print(f'\n¡Usted ha perdido la partida!, palabra secreta {palabra_secreta}!\n')Tener en cuenta que todas las funciones que se utilizan en ese código no están implementadas aún, será usted quien la implemente y de eso se tratará el proyecto de este curso.
Dentro del archivo main.py deberá implementar las siguientes funciones que utilizará luego el bloque main para armar el proyecto:
Encabezado de la función:
def leer_palabra_secreta(palabras):Entrada (argumentos):
- Esta función recibe por parámetro la lista de posibles palabras secretas a adivinar.
Objetivo:
- La función deberá utilizar la función
random.choicepara seleccionar aleatoriamente alguna palabra de la lista de palabras. Almacenar esa palabra seleccionada en una varible.
Salida (return):
- La función deberá retornar la palabra secreta seleccionada por el random.choice.
Encabezado de la función:
def pedir_letra(letras_usadas):Entrada (argumentos):
- Esta función recibe por parámetro la lista de palabras utilizadas hastas el momento.
Objetivo:
- Deberá armar un bucle While infinito que se ejecute hasta que el procedimiento de pedir letra se complete exitosamente.
- Deberá pedirle al usuario que ingrese por "input" una letra nueva que no haya utilizado antes. Almacenar esa letra ingresada por "input" en una variable.
- La letra ingresada deberá transformarse a minúscula para evitar problemas.
- Utilizando la variable "letras_usadas" deberá verificar utilizando el operador "in" que esa letra es nueva y no se ha utilizado antes. Si se ha utilizado antes (es decir, existe dentro de "letras_usadas") el sistema no deberá salir del bucle y volverá al comienzo solicitando una letra nueva.
- Deberá verificar que la letra ingresada es solo una letra, es decir, verificar que no se ha ingresado más de una letra a la vez. Para eso utilice la función "len". Si se ha ingresado más de una letra junta, el sistema no deberá salir del bucle y volverá al comienzo solicitando una letra nueva.
- Si todas las condiciones se cumplen, deberá salir del bucle.
- Antes de que finalice la función debe retornar la letra validada (return)
Salida (return):
- La función deberá retornar la letra validada (return).
Encabezado de la función:
def verificar_letra(letra, palabra_secreta):Entrada (argumentos):
- Esta función recibe por parámetro la letra ingresada por el usuario y la palabra secreta a adivinar.
Objetivo:
- Deberá verificar si la variable "letra" es parte de la palabra secreta a divinar "palabra_secreta". Utilice el operador "in" para llevar a cabo esta verificación.
Salida (return):
- Si la letra pertenece a la palabra secreta a adivinar, esta función debe retornar True.
- Si la letra no pertenece a la palabra secreta a adivinar, esta función debe retornar False.
Encabezado de la función:
def validar_palabra(letras_usadas, palabra_secreta):Entrada (argumentos):
- Esta función recibe por parámetro las letras ingresada hasta el momento por el usuario "letras_usadas" y la palabra secreta a adivinar "palabra_secreta".
Objetivo:
- Deberá verificar si todas las letras de la "palabra_secreta" se encuentran contenidas/disponible en la lista de letras usadas "letras_usadas".
- Para esto deberá armar un bucle que recorra todas las letras de "palabra_secreta". Con el operador "in" debe verificar si cada letra de la palabra secreta existe en la lista "letras_usadas".
- Con que una letra de la palabra secreta no exista en las letras usadas, se debe terminar el bucle e indicar que aún no se ha adivinado la palabra secreta.
Salida (return):
- Si se avidinó por completo la palabra secreta, esta función debe retornar True.
- Si no se avidinó por completo la palabra secreta, esta función debe retornar False.
