kreilly

super_ahorcado.py

Jan 27th, 2021
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.27 KB | None | 0 0
  1. import random
  2.  
  3. '''
  4. Objetivos:
  5. 1. Introducir la eleción dentro del bucle while
  6. 2. modo pve, con dos opciones:
  7. 1.1. fácil: una palabra random en una lista elegida
  8. 1.2. difícil: una palabra random en una lista tb random
  9. 3. modo pvp, permitiendo introducir una palabra y en un futuro también una frase
  10. '''
  11.  
  12. '''
  13. Flujo:
  14. 1. Presentación.
  15. 2. Elige un modo.
  16. 2.1. Pve
  17. 2.1.1. Palabra random en una lista elegida.
  18. 2.1.2. Palabra random en una lista random.
  19. 2.2. Pvp
  20. 3. Introducir una letra.
  21. 3.1. La letra está en la palabra, marcarla en las letras_descubiertas
  22. 3.2. La letra no está en la palabra, marcarla en letras letras_incorrectas
  23. 3.3. ¿Le quedan intentos y no ha descubierto la palabra? Sigue jugando.
  24. 4. Resolución.
  25. 4.1. ¿Ha descubierto todas las letras? Ha ganado.
  26. 4.2. ¿Ha terminado con los intentos disponibles? Ha perdido.
  27. 5. Volver a jugar.
  28. 5.1. ¿Sí? Reiniciar, poner a cero letras_descubiertas y letrasIncorrectas
  29. 5.2. ¿No? Salir.
  30. '''
  31.  
  32. # introducimos los estados del cadalso
  33. IMÁGENES_AHORCADO = ['''
  34.  
  35. +---+
  36. | |
  37. |
  38. |
  39. |
  40. |
  41. =========''', '''
  42.  
  43. +---+
  44. | |
  45. O |
  46. |
  47. |
  48. |
  49. =========''', '''
  50.  
  51. +---+
  52. | |
  53. O |
  54. | |
  55. |
  56. |
  57. =========''', '''
  58.  
  59. +---+
  60. | |
  61. O |
  62. /| |
  63. |
  64. |
  65. =========''', '''
  66.  
  67. +---+
  68. | |
  69. O |
  70. /|\ |
  71. |
  72. |
  73. =========''', '''
  74.  
  75. +---+
  76. | |
  77. O |
  78. /|\ |
  79. / |
  80. |
  81. =========''', '''
  82.  
  83. +---+
  84. | |
  85. O |
  86. /|\ |
  87. / \ |
  88. |
  89. =========''']
  90.  
  91. # listas de palabras
  92.  
  93. ANIMALES = 'hormiga babuino tejon murcielago oso castor camello gato almeja cobra pantera coyote cuervo ciervo perro burro pato aguila huron zorro rana cabra ganso halcon leon lagarto llama topo mono alce raton mula salamandra nutria buho panda loro paloma piton conejo carnero rata cuervo rinoceronte salmon foca tiburon oveja mofeta perezoso serpiente araña cigüeña cisne tigre sapo trucha pavo tortuga comadreja ballena lobo wombat cebra'.split()
  94. COLORES = 'rojo amarillo azul naranja violeta verde marron ambar añil beige bermellon blanco burdeos cafe caoba caqui carmesi castaño celeste cereza champan cartujo cian cobre coral crema fucsia granate gris hueso lavanda negro ocre oro pardo plata purpura rosa salmon turquesa aguamarina vino'.split()
  95. PAISES = 'afganistan albania alemania andorra argelia armenia australia austria azerbaiyan banglades barbados bareain belgica bielorusia belice belarus benin bolivia bulgaria burundi butan camboya canada chad chequia chile china chipre colombia congo corea croacia cuba dinamarca ecuador egipto eslovaquia eritrea eslovenia españa usa filipinas etiopia finlandia fiyi francia gambia gabon georgia ghana grecia guatemala guinea guyana haiti honduras hungria india indonesia iran irlanda islandia israel italia jamaica japon jordania kazakistan kenia kirguistan kuwait laos lesoto letonia libano liberia libia liechtenstein lituania luxemburgo macedonia madagascar malasia malaui maldivas mali malta marruecos mauricio mauritania mejico micronesia moldavia monaco mongolia montenegro mozambique namibia nauru nepal nicaragua niger nigeria noruega oman pakistan palaos palestina papua peru polonia portugal uk ruanda rumania rusia samoa senegal serbia seychelles singapur siria somalia sudafrica sudan suecia suiza surinam tailandia tanzania taykistan timor togo tonga tunez turkmenistan turquia tuvalu ucrania uganda uruguay uzbekistan vanuatu venezuela vietnam yibuti zambia zimbaue'.split()
  96.  
  97. # lista global para el modo difícil
  98.  
  99. listas = ANIMALES + COLORES + PAISES # +, si haces una lista de listas con [] el random abarcara la totalidad de una lista, ojo
  100.  
  101. # función de elección pve
  102.  
  103. def lista_pve():
  104. while True:
  105. lista = input('''
  106. 1. Animales 2. Colores 3. Paises
  107. ''')
  108.  
  109. if lista == '1':
  110. lista_elegida = ANIMALES
  111. return lista_elegida
  112.  
  113. elif lista == '2':
  114. lista_elegida = COLORES
  115. return lista_elegida
  116.  
  117. elif lista == '3':
  118. lista_elegida = PAISES
  119. return lista_elegida
  120.  
  121. else:
  122. print('no es una opción válida')
  123.  
  124.  
  125. # función de elección general
  126.  
  127. def eleccion_lista():
  128. while True:
  129. modo = input('''
  130. SUPER AHORCADO
  131.  
  132. 1. Pve fácil 2. Pve difícil 3. Pvp
  133. ''')
  134.  
  135. if modo == '1':
  136. lista_elegida = lista_pve() # te lleva a la función anterior para no enguarrinar el texto aquí
  137. return lista_elegida
  138.  
  139. if modo == '2':
  140. lista_elegida = listas
  141. return lista_elegida
  142.  
  143. if modo == '3':
  144. lista_elegida = [input('''
  145. Escribe una palabra, sin acentos en esta versión del juego: ''')]
  146. return lista_elegida
  147.  
  148. else:
  149. print('Elige una opción correcta')
  150.  
  151. # random de la palabra en 1 y 2
  152.  
  153. def obtenerPalabraAlAzar(lista_de_palabras):
  154. índice_de_palabras = random.randint(0, len(lista_de_palabras) - 1)
  155. return lista_de_palabras[índice_de_palabras]
  156.  
  157. # presentación del tablero
  158.  
  159. def mostrarTablero(IMÁGENES_AHORCADO, letras_incorrectas, letras_correctas, palabra_secreta):
  160. print(IMÁGENES_AHORCADO[len(letras_incorrectas)])
  161. print('Letras incorrectas:', end=' ')
  162. for letra in letras_incorrectas:
  163. print(letra, end=' ')
  164. print()
  165. espacios_vacíos = '_' * len(palabra_secreta)
  166. for i in range(len(palabra_secreta)):
  167. if palabra_secreta[i] in letras_correctas: # hace dos lineas ha convertido todo en _, así que ahora comprueba todas las de la variable letrasCorrectas
  168. espacios_vacíos = espacios_vacíos[:i] + palabra_secreta[i] + espacios_vacíos[i+1:]
  169. for letra in espacios_vacíos:
  170. print(letra, end=' ')
  171. print()
  172.  
  173. # función para preguntarle una letra
  174.  
  175. def obtener_intento(letras_probadas):
  176. while True:
  177. print('Adivina una letra.')
  178. intento = input()
  179. intento = intento.lower()
  180. if len(intento) != 1:
  181. print('Por favor, introduce una sola letra.')
  182. elif intento in letras_probadas:
  183. print('Ya has probado esa letra, elige otra.')
  184. elif intento not in 'abcdefghiíjklmnñopqrstuvwxyz': # puedes meter áéíóú, pero serán letras diferentes
  185. print('Por favor, ingresa una LETRA.')
  186. else: # en cualquier otro caso
  187. return intento
  188.  
  189. # función para jugar de nuevo
  190.  
  191. def jugar_de_nuevo():
  192. print('¿Quieres jugar de nuevo (sí o no)') # imprimimos la pregunta
  193. return input().lower().startswith('s')
  194.  
  195. # empieza el juego
  196.  
  197. while True:
  198. lista_elegida = eleccion_lista()
  199. palabra_secreta = obtenerPalabraAlAzar(lista_elegida)
  200. letras_correctas = ''
  201. letras_incorrectas = ''
  202.  
  203. # bucle de comprobación
  204.  
  205. while True:
  206. mostrarTablero(IMÁGENES_AHORCADO, letras_incorrectas, letras_correctas, palabra_secreta)
  207. intento = obtener_intento(letras_incorrectas + letras_correctas)
  208. if intento in palabra_secreta:
  209. letras_correctas = letras_correctas + intento
  210. encontradoTodasLasLetras = True
  211. for i in range(len(palabra_secreta)):
  212. if palabra_secreta[i] not in letras_correctas:
  213. encontradoTodasLasLetras = False
  214.  
  215. if encontradoTodasLasLetras:
  216. print('¡Sí! ¡La palabra secreta es "' + palabra_secreta + '"! ¡Has ganado!')
  217. break
  218.  
  219. else:
  220. letras_incorrectas = letras_incorrectas + intento
  221.  
  222. if len(letras_incorrectas) == len(IMÁGENES_AHORCADO) - 1: # depende de else: porque sólo puede suceder si la letra introducida es incorrecta, un indent menos y pasará por aquí siempre
  223. mostrarTablero(IMÁGENES_AHORCADO, letras_incorrectas, letras_correctas, palabra_secreta)
  224. print('¡Te has quedado sin intentos!\nDespués de ' + str(len(letras_incorrectas)) + ' intentos fallidos y ' + str(len(letras_correctas)) + ' aciertos, la palabra era "' + palabra_secreta + '"')
  225. break
  226.  
  227.  
  228. if jugar_de_nuevo():
  229. continue
  230. else:
  231. break
  232.  
  233.  
  234.  
  235.  
  236.  
Add Comment
Please, Sign In to add comment