0% acharam este documento útil (0 voto)
5 visualizações4 páginas

App Quiz

modelo de código de um arquivo para configuração de um sistema de quiz em python para perguntas simples e de múltipla escolha
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
5 visualizações4 páginas

App Quiz

modelo de código de um arquivo para configuração de um sistema de quiz em python para perguntas simples e de múltipla escolha
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

import json

from factory import QuestaoFactory


from jogo import Jogo

class QuizApp(Jogo):

# Singleton
_instancia = None
_inicializado = False

def __new__(cls, *args, **kwargs):


if cls._instancia is None:
cls._instancia = super().__new__(cls)
return cls._instancia

def __init__(self, caminho_arquivo: str):

# Evita reinicialização do Singleton


if QuizApp._inicializado:
return

self.questoes_totais = []
self.questoes_para_jogar = []
[Link] = 0

self.carregar_dados(caminho_arquivo)

QuizApp._inicializado = True

def carregar_dados(self, caminho_arquivo: str):


try:
with open(caminho_arquivo, 'r', encoding='utf-8') as arquivo:
dados_json = [Link](arquivo)

for item in dados_json['quiz_data']:


questao = QuestaoFactory.criar_questao(item)
self.questoes_totais.append(questao)

except FileNotFoundError:
print(f"Erro: O arquivo '{caminho_arquivo}' não foi encontrado.")
exit()

# ==========================
# Template Method
# ==========================

def configurar(self):
self.configurar_jogo()

def jogar(self):

print(" INICIO DO QUIZ ".center(40, "="))

if not self.questoes_para_jogar:
print("Nenhuma questão encontrada com esses filtros.")
return

for questao in self.questoes_para_jogar:

questao.exibir_pergunta()

acertou = [Link]()


if acertou:
print(" Resposta CORRETA!")
[Link] += 10 * [Link]


else:
print(" Resposta INCORRETA!")

def finalizar(self):
self.exibir_resultado()

# ==========================
# Regras do Quiz
# ==========================

def configurar_jogo(self):

print(" MENU DO QUIZ ".center(40, "="))

categorias_disponiveis = list(
set([Link] for q in self.questoes_totais)
)

print("\nEscolha a Categoria:")
print("0) Todas as categorias")

for i, cat in enumerate(categorias_disponiveis, 1):


print(f"{i}) {[Link]()}")

try:
op_cat = int(input("Opção: "))
cat_escolhida = (
categorias_disponiveis[op_cat - 1]
if op_cat > 0
else None
)
except:
cat_escolhida = None

dificuldades_disponiveis = sorted(
set([Link] for q in self.questoes_totais)
)

print("\nEscolha a Dificuldade:")
print("0) Todas as dificuldades")

for i, dif in enumerate(dificuldades_disponiveis, 1):


print(f"{i}) Nível {dif}")

try:
op_dif = int(input("Opção: "))
dif_escolhida = (
dificuldades_disponiveis[op_dif - 1]
if op_dif > 0
else None
)
except:
dif_escolhida = None

print("\nEscolha o Tipo de Questão:")


print("0) Todos os tipos")
print("1) Apenas escolha simples")
print("2) Apenas múltipla escolha")

try:
tipo_escolhido = int(input("Opção: "))
except:
tipo_escolhido = 0

self.questoes_para_jogar = []

for q in self.questoes_totais:

# Categoria
if cat_escolhida and [Link] != cat_escolhida:
continue

# Dificuldade
if dif_escolhida and [Link] != dif_escolhida:
continue

# Tipo
if tipo_escolhido == 1 and [Link]:
continue

if tipo_escolhido == 2 and not [Link]:


continue

self.questoes_para_jogar.append(q)

def exibir_resultado(self):

print(" FIM DO QUIZ ".center(40, "="))


print(
f"Você respondeu {len(self.questoes_para_jogar)} perguntas."
)
print(
f"Sua pontuação final foi: {[Link]} pontos."
)

Você também pode gostar