import random
import unicodedata
# Llista de paraules temàtiques (aparell respiratori)
WORDS = [
"pulmó", "pulmons", "diafragma", "inspiració", "espiració",
"tràquea", "laringe", "faringe", "bronqui", "bronquíol",
"alvèol", "pleura", "ventilació", "oxigenació", "hemoglobina",
"capil·lar", "mucosa", "secreció", "bronquitis", "asma"
]
HANGMAN_PICS = [
"""
+---+
|
|
|
===""",
"""
+---+
O |
|
|
===""",
"""
+---+
O |
| |
|
===""",
"""
+---+
O |
/| |
|
===""",
"""
+---+
O |
/|\\ |
|
===""",
"""
+---+
O |
/|\\ |
/ |
===""",
"""
+---+
O |
/|\\ |
/ \\ |
==="""
]
MAX_WRONG = len(HANGMAN_PICS) - 1
def normalize(s):
# Normalitza per comparar sense accents
return ''.join(
c for c in unicodedata.normalize('NFD', s)
if unicodedata.category(c) != 'Mn'
).lower()
def choose_word():
return random.choice(WORDS)
def display_state(secret, guessed):
shown = ' '.join([c if normalize(c) in guessed else '_' for c in secret])
print("\nParaula: ", shown)
def play():
secret = choose_word()
norm_secret = normalize(secret)
guessed = set()
wrong = 0
print("=== JOC DEL PENJAT: Aparell respiratori ===")
print(f"Tens {MAX_WRONG} intents erronis abans del penjat.")
use_hint = input("Vols una pista? (s/n): ").strip().lower()
hint_used = False
while True:
print(HANGMAN_PICS[wrong])
display_state(secret, guessed)
print("Lletres encertades:", ' '.join(sorted(guessed)) if guessed else "(cap)")
guess = input("Endevina una lletra o la paraula sencera: ").strip().lower()
if not guess:
print("Introdueix alguna cosa, si us plau.")
continue
# Normalitzar entrada per comparar
norm_guess = normalize(guess)
# Si l'usuari demana pista
if use_hint == 's' and not hint_used:
# Mostrem una lletra correcta aleatòria
for ch in norm_secret:
if ch.isalpha() and ch not in guessed:
print(f"Pista: una de les lletres és '{ch}'")
guessed.add(ch)
hint_used = True
break
# Si l'usuari intenta endevinar la paraula sencera
if len(norm_guess) > 1:
if norm_guess == norm_secret:
print(f"\nEnhorabona! Has encertat la paraula: {secret}")
break
else:
wrong += 1
print("Paraula incorrecta.")
else:
# Una sola lletra
letter = norm_guess
if letter in guessed:
print("Ja has provat aquesta lletra.")
continue
if letter in norm_secret:
guessed.add(letter)
print("Correcte!")
# Comprovar si ha guanyat
if all((normalize(ch) in guessed) or (not ch.isalpha()) for ch in secret):
print(f"\nEnhorabona! Has encertat la paraula: {secret}")
break
else:
guessed.add(letter)
wrong += 1
print("No hi és.")
if wrong >= MAX_WRONG:
print(HANGMAN_PICS[wrong])
print(f"\nHas perdut. La paraula era: {secret}")
break
print("Gràcies per jugar!")
if __name__ == "__main__":
play()6 views