import asyncio
import random
import sys
# Garante que o terminal do Windows não trave com caracteres (caso use em outros projetos)
sys.stdout.reconfigure(encoding='utf-8')
jogos = [
{"id": 1, "times": "Flamengo vs Palmeiras"},
{"id": 2, "times": "São Paulo vs Corinthians"},
{"id": 3, "times": "Grêmio vs Internacional"},
]
RESULTADOS = ["Vitória do Time A", "Vitória do Time B", "Empate"]
async def processar_jogo(jogo, future):
tempo_espera = random.randint(2, 8)
await asyncio.sleep(tempo_espera)
# Sorteia o resultado base
resultado_sorteado = random.choice(RESULTADOS)
# Separa os nomes dos times usando o " vs " como divisor
time_a, time_b = jogo["times"].split(" vs ")
# Formata a string final do resultado com o nome real do time
if resultado_sorteado == "Vitória do Time A":
resultado_final = f"Vitória do {time_a}"
elif resultado_sorteado == "Vitória do Time B":
resultado_final = f"Vitória do {time_b}"
else:
resultado_final = "Empate"
# Guarda o ID, o resultado formatado e o tempo no Future
future.set_result({
"id": jogo["id"],
"resultado_final": resultado_final,
"tempo": tempo_espera
})
def exibir_resultado_imediatamente(future):
dados = future.result()
# Imprime o resultado exatamente no formato da imagem
print(f"Aposta no jogo {dados['id']} definida: {dados['resultado_final']} (após {dados['tempo']}s).")
async def main():
futures = []
tarefas = []
loop = asyncio.get_running_loop()
for jogo in jogos:
# Exibe a mensagem de registro individual para cada jogo
print(f"Aposta no jogo {jogo['id']} ({jogo['times']}) registrada! Aguardando resultado...")
future = loop.create_future()
future.add_done_callback(exibir_resultado_imediatamente)
futures.append(future)
tarefa = asyncio.create_task(processar_jogo(jogo, future))
tarefas.append(tarefa)
# Adiciona uma linha em branco para separar os registros dos resultados
print()
await asyncio.gather(*tarefas)
# Adiciona uma quebra de linha antes da mensagem final
print("\nTodos os resultados foram revelados!")
if __name__ == "__main__":
asyncio.run(main())