Diferencia entre revisiones de «Ahorcado en Python»

Contenido eliminado Contenido añadido
Danimros (discusión | contribs.)
Sin resumen de edición
Danimros (discusión | contribs.)
Sin resumen de edición
Línea 19:
Tenemos que guardar la lista de las letras que hemos dicho, tanto correctas como incorrectas. Para ello, utilizaremos dos listas, de momento vacías:
 
<syntaxhighlight lang="python">
letraIncorrecta = []
letraCorrecta = []
</syntaxhighlight>
 
Guardaremos en una variable la palabra que tenemos que adivinar, y en otra una copia de la misma palabra, pero vacía (con _ en lugar de letras), que iremos modificando, cambiando los _ por letras, a medida que se vayan acertando:
 
<syntaxhighlight lang="python">
palabraSecreta = list("navidad") # Palabra original, la guardamos
longitudPalabra = len(palabraSecreta)
palabraResuelta = ['_'] * longitudPalabra # Creamos una lista para resolver con todo "_"
</syntaxhighlight>
 
Una vez declarado esto, entraremos en un bucle de pedir letras, hasta que el juego termine. De momento, el bucle será infinito, aunque después deberemos modificar esto:
 
<syntaxhighlight lang="python">
while True:
 
Podemos pintar un poco de texto informando del juego, que podremos personalizar:
 
<syntaxhighlight lang="python">
print ("") # pinta una línea en blanco
print ('A H O R C A D O (Ramon Llull Edition)')
Línea 40 ⟶ 46:
Antes de pedir letras, mostramos las incorrectas, para evitar que se repitan:
 
<syntaxhighlight lang="python">
print ('Letras incorrectas: ', end = '')
for letra in letraIncorrecta:
Línea 47 ⟶ 54:
Ahora mostraremos la palabra tal como está, con las letras que hayan sido acertadas en su posición, y las que quedan con un _:
 
<syntaxhighlight lang="python">
print ("--------------------------------------\n")
print("PALABRA: ")
Línea 62 ⟶ 70:
Por último, pedimos al usuario que introduzca una letra:
 
<syntaxhighlight lang="python">
print ('Adivina una letra:')
letra = input()
Línea 67 ⟶ 76:
Si la letra está en la palabra, la meteremos en la lista letraCorrecta. Sino, en la lista letraIncorrecta:
 
<syntaxhighlight lang="python">
if letra in palabraSecreta:
letraCorrecta.append(letra)
Línea 83 ⟶ 93:
Podemos crear una función que devuelva una palabra al final, de la lista listaPalabras. Para ello utilizaremos una función de la librería random, que deberemos importar al principio de nuestro programa.
 
<syntaxhighlight lang="python">
import random
 
La función radint devuelve un número aleatorio del rango que pidamos.
 
<syntaxhighlight lang="python">
posicion = random.randint(0, len(palabras) - 1)
palabraSecreta = palabras[posicion]
Línea 95 ⟶ 107:
Cualquier tecla del teclado puede ser utilizada por el usuario a la hora de elegir la letra, por lo que debemos comprobar que solo están permitidas letras del alfabeto. Para ello, mejor crear una función elijeLetra(), puesto que la vamos a utilizar cada vez que pidamos al usuario una letra.
 
<syntaxhighlight lang="python">
def elijeLetra():
...
Línea 102 ⟶ 115:
El bloque principal consiste en capturar un input (el funcionamiento que ya tenemos):
 
<syntaxhighlight lang="python">
print ('Adivina una letra:')
letra = input()
Línea 107 ⟶ 121:
Podemos forzar que la letra se convierta a minúsculas:
 
<syntaxhighlight lang="python">
letra = letra.lower()
 
Podemos comprobar que solo se introduce una letra y no dos o más:
 
<syntaxhighlight lang="python">
if len(letra) != 1:
 
No tendríamos que poder decir una letra que ya se ha dicho antes. En este caso algunaLetra es una lista que contiene todas las letras que ya se han dicho antes.
 
<syntaxhighlight lang="python">
if letra in algunaLetra:
 
Comprobar que la letra está en el alfabeto:
 
<syntaxhighlight lang="python">
if letra not in 'abcdefghijklmnopqrstuvwxyz':
 
Línea 130 ⟶ 148:
Para ello podemos comprobar que no quedan huecos de letras vacías en la palabra resuelta:
 
<syntaxhighlight lang="python">
if "_" not in palabraResuelta
 
Línea 136 ⟶ 155:
Podemos ayudarnos de una variable que contenga el máximo número de vidas o "errores" permitidos. Si hemos fallado tantas letras como vidas,el juego tiene que terminar.
 
<syntaxhighlight lang="python">
vidas = 6
if len(letraIncorrecta) == vidas:
Línea 141 ⟶ 161:
El bucle principal se tiene que cambiar:
 
<syntaxhighlight lang="python">
juegoTerminado = False
while not juegoTerminado:
Línea 153 ⟶ 174:
2.4 Jugar otra vez
 
<syntaxhighlight lang="python">
def jugarOtra():
print('¿Quieres jugar otra partida? (Sí o no))
Línea 170 ⟶ 192:
...
 
<syntaxhighlight lang="python">
import random
 
Línea 183 ⟶ 206:
 
print([categoria,palabraElegida])
 
 
2.6. Clasificación
Línea 190 ⟶ 214:
Creamos un diccionario tablaClasificacion, que contendrá el nombre del jugador y su puntuación.
 
<syntaxhighlight lang="python">
tablaClasificacion = { 'Dani': 4000, 'Pepe: 2000, 'Manolo: 1000, }
Añadir puntuación
Línea 195 ⟶ 220:
Tendríamos que pedir el nombre al jugador en una variable nombre al comenzar la partida y guardarlo en alguna variable, como jugador. Al final de la partida, calculamos la puntuación y la guardamos en el diccionario:
 
<syntaxhighlight lang="python">
tablaClasificacion[nombre] = puntuacion
 
Línea 201 ⟶ 227:
La función mostrarClasificación podría ser:
 
<syntaxhighlight lang="python">
def mostrarClasificacion(tablaClasificacion):
print("--------------------------------")