import time def show_message(message):
for char in message:
print(char, end='', flush=True)
time.sleep(0.02) # Simula uma digitação lenta
print("\n") def intro():
show_message("Bem-vindo a Baker Street 221B.")
show_message("És Sherlock Holmes, o maior detetive de todos os tempos.")
show_message("Um mistério aguarda-te. Resolve o caso e descobre a verdade!") def get_choice(options):
for i, option in enumerate(options, 1):
print(f"{i}. {option}")
while True:
try:
choice = int(input("Escolhe uma opção: "))
if 1 <= choice <= len(options):
return choice
else:
print("Escolha inválida. Tenta novamente.")
except ValueError:
print("Por favor, insere um número válido.") def investigation(pistas):
show_message("Chegaste à cena do crime. Um homem foi encontrado morto na sua biblioteca.")
show_message("Há várias pistas disponíveis para investigar:")
options = [
"Examinar o corpo",
"Investigar o ambiente",
"Interrogar a empregada",
"Interrogar o jardineiro",
"Interrogar o amigo da vítima",
]
choice = get_choice(options) if choice == 1:
if "picada misteriosa" not in pistas:
show_message("Examinaste o corpo e percebes um ferimento estranho no pescoço.")
show_message("Parece uma picada, mas é profunda demais para ser de um inseto comum.")
pistas.append("picada misteriosa")
else:
show_message("Já examinaste o corpo.")
elif choice == 2:
if "bilhete misterioso" not in pistas:
show_message("Encontras um bilhete amassado no chão com as palavras: 'Encontro às 22h.'")
pistas.append("bilhete misterioso")
else:
show_message("Já investigaste o ambiente.")
elif choice == 3:
if "testemunha nervosa" not in pistas:
show_message("A empregada está nervosa e menciona ter ouvido passos na noite anterior.")
pistas.append("testemunha nervosa")
else:
show_message("A empregada já foi interrogada.")
elif choice == 4:
if "jardineiro" not in pistas:
show_message("O jardineiro menciona que viu alguém entrar pela janela às 21h.")
pistas.append("jardineiro")
else:
show_message("O jardineiro já foi interrogado.")
elif choice == 5:
if "amigo suspeito" not in pistas:
show_message("O amigo da vítima diz que estava em casa às 22h, mas parece evasivo.")
pistas.append("amigo suspeito")
else:
show_message("O amigo da vítima já foi interrogado.") def solve_case(pistas):
score = 0
show_message("Com base nas pistas, tens que decidir quem é o culpado.")
show_message("Lembra-te: as tuas escolhas afetam o desfecho do caso.") if "picada misteriosa" in pistas:
show_message("A picada no pescoço sugere o uso de uma arma exótica.")
score += 10
if "bilhete misterioso" in pistas:
show_message("O bilhete indica que a vítima tinha um encontro antes de morrer.")
score += 10
if "testemunha nervosa" in pistas:
show_message("A empregada ouviu passos, indicando que havia outra pessoa na casa.")
score += 10
if "jardineiro" in pistas:
show_message("O jardineiro viu alguém a entrar pela janela.")
score += 10
if "amigo suspeito" in pistas:
show_message("O amigo pareceu evasivo durante o interrogatório.")
score += 10
options = [
"O jardineiro, que tinha acesso ao veneno.",
"O amigo da vítima, que marcou o encontro.",
"A empregada, que agiu de forma suspeita.",
"Um invasor desconhecido."
]
choice = get_choice(options) correct_answer = "O jardineiro, que tinha acesso ao veneno."
if options[choice - 1] == correct_answer and "picada misteriosa" in pistas:
show_message("Acertaste! O jardineiro usou veneno para cometer o crime.")
score += 30
else:
show_message("A tua dedução estava errada. O caso continua sem solução.")
score -= 10
show_message(f"A tua pontuação final é {score}.")
if score >= 50:
show_message("Resolveste o caso brilhantemente! Um verdadeiro Sherlock Holmes!")
elif 30 <= score < 50:
show_message("Resolveste o caso, mas algumas pistas importantes passaram despercebidas.")
else:
show_message("Falhaste em resolver o caso. O Watson talvez precise de ajudar da próxima vez.") def main():
intro()
pistas = []
while len(pistas) < 5: # Permitir coleta de até cinco pistas
investigation(pistas)
solve_case(pistas) if __name__ == "__main__":
main()