Ejercicio: 1Eva2018TII_T2 Juego conocimiento (Ahorcado)
Propuesta de solución al ejercicio.
Estado del juego: F***
adivine una letra: C
Adivinaste...C
Estado del juego: FC**
turno: 1
fallas: 0
adivine una letra: M
Adivinaste...M
Estado del juego: FC*M
turno: 2
fallas: 0
adivine una letra: A
NO es una letra de palabra...
Estado del juego: FC*M
turno: 3
fallas: 1
adivine una letra: N
Adivinaste...N
Estado del juego: FCNM
turno: 4
fallas: 1
Felicitaciones, adivinó: FCNM
>>>
Algoritmo en Python
Siguiendo las sugerencias, para dividir y simplificar el problema, primero se crean las funciones: escondeletras(secreta) y cambialetra(secreta,letra,estado).
Se inicia con la selección aleatoria de la palabra secreta y el sorteo de la letra pista, verificando que sea consonante.
Se actualiza la palabra secreta con la letra pista, y se inicia el juego.
# CCPG1001 Fundamentos de Programación FIEC-ESPOL
# 1Eva_IIT2018_T2 Juego conocimiento (Ahorcado)
# propuesta de solución: edelros@espol.edu.ec
# tarea: indiferente usar mayúsculas/minúsculas
# contar solo letras adivinadas, no repetidas
import numpy as np
import random as rnd
def escondeletras(secreta):
estado = ''
n = len(secreta)
i = 0
while not(i>=n):
estado = estado + '*'
i = i + 1
return(estado)
def cambialetra(secreta,letra,estado):
nuevoestado = ''
n = len(secreta)
i = 0
while not(i>=n):
if (secreta[i]==letra):
nuevoestado = nuevoestado + letra
else:
nuevoestado = nuevoestado + estado[i]
i = i + 1
return(nuevoestado)
# PROGRAMA JUEGO
# selecciona secreta
palabras = ['ESPOL','FCNM','FIEC','FIMCP','FICT']
n = len(palabras)
sorteo = int(rnd.random()*n)+0
secreta = palabras[sorteo]
# estado inicial del juego
estado = escondeletras(secreta)
# una letra como pista
consonante = 'BCDFGHJKLMNPQRSTVWXYZ'
m = len(secreta)
sorteo = int(rnd.random()*m)+0
pista = secreta[sorteo]
while not(pista in consonante):
sorteo = int(rnd.random()*m)+0
pista = secreta[sorteo]
# actualiza estado del juego
estado = cambialetra(secreta,pista,estado)
# Control del Juego
turnomax = 2*m
gana = 1
falla = 0
print('Estado del juego: ', estado)
turno = 1
while not(turno>turnomax or gana==m):
letra = input(' adivine una letra: ')
if (letra in secreta):
gana = gana +1
estado = cambialetra(secreta,letra, estado)
mensaje = ' Adivinaste...' + letra
else:
falla = falla + 1
mensaje = ' NO es una letra de palabra...'
print(mensaje)
print()
print('Estado del juego: ', estado)
print('turno:', turno)
print('fallas: ', falla)
turno = turno + 1
if (turno<=turnomax and gana==m):
mensaje = 'Felicitaciones, adivinó: ' + secreta
else:
mensaje = 'lo lamento, perdió..., la palabra era: '
mensaje = mensaje + secreta
# SALIDA
print(mensaje)
Recuerde que se ha dejado como tarea, realizar las instrucciones para cumplir que:
- sea indiferente usar mayúsculas/minúsculas
- contar solo letras adivinadas, no repetidas
Referencia: 2Eva2005TI_T3 Adivina palabra (ahorcado)
Solución propuesta: s2Eva2005TI_T3 Adivina palabra (ahorcado)