Um jogo de quiz com perguntas de múltipla escolha sobre um tema específico (como geografia, cinema ou ciências). O jogador acumula pontos conforme acerta as respostas.
O código será modular, fácil de expandir e seguirá boas práticas de programação. Vou incluir funcionalidades como:
Perguntas de múltipla escolha: Cada pergunta terá 4 opções.
Pontuação: O jogador acumula pontos conforme acerta as respostas.
Tema específico: O quiz será sobre geografia, mas você pode facilmente adaptar para outros temas.
Feedback: O jogador recebe feedback imediato sobre se acertou ou errou a pergunta.
Finalização: No final, o jogador recebe a pontuação total.
Aqui está o código:
import json import os class Quiz: def __init__(self, questions_file): self.questions = self.load_questions(questions_file) self.score = 0 def load_questions(self, questions_file): """Carrega as perguntas de um arquivo JSON.""" if not os.path.exists(questions_file): raise FileNotFoundError(f"Arquivo {questions_file} não encontrado.") with open(questions_file, 'r', encoding='utf-8') as file: questions = json.load(file) return questions def display_question(self, question): """Exibe a pergunta e as opções de resposta.""" print(f"\n{question['pergunta']}") for idx, option in enumerate(question['opcoes'], start=1): print(f"{idx}. {option}") print() def get_user_answer(self): """Obtém a resposta do usuário.""" while True: try: choice = int(input("Escolha a opção correta (1-4): ")) if 1 <= choice <= 4: return choice else: print("Por favor, escolha um número entre 1 e 4.") except ValueError: print("Entrada inválida. Por favor, insira um número.") def check_answer(self, question, user_answer): """Verifica se a resposta do usuário está correta.""" correct_answer = question['resposta_correta'] if user_answer == correct_answer: print("Resposta correta! 🎉") self.score += 1 else: print(f"Resposta incorreta. A resposta correta era {correct_answer}. 😢") def run_quiz(self): """Executa o quiz.""" print("Bem-vindo ao Quiz de Geografia! 🌍") print("Você receberá uma série de perguntas de múltipla escolha. Boa sorte!\n") for question in self.questions: self.display_question(question) user_answer = self.get_user_answer() self.check_answer(question, user_answer) print(f"\nQuiz finalizado! Sua pontuação final é {self.score}/{len(self.questions)}. 🏆") if __name__ == "__main__": # Arquivo JSON contendo as perguntas e respostas questions_file = "perguntas_geografia.json" try: quiz = Quiz(questions_file) quiz.run_quiz() except FileNotFoundError as e: print(e)
Estrutura do Arquivo JSON (perguntas_geografia.json):
O arquivo JSON deve conter as perguntas, opções de resposta e a resposta correta. Aqui está um exemplo:
[ { "pergunta": "Qual é a capital da França?", "opcoes": ["Berlim", "Madri", "Paris", "Roma"], "resposta_correta": 3 }, { "pergunta": "Qual é o maior oceano do mundo?", "opcoes": ["Atlântico", "Índico", "Ártico", "Pacífico"], "resposta_correta": 4 }, { "pergunta": "Qual país é conhecido como a Terra do Sol Nascente?", "opcoes": ["China", "Japão", "Coreia do Sul", "Tailândia"], "resposta_correta": 2 } ]
Como Funciona:
Carregamento das Perguntas: As perguntas são carregadas de um arquivo JSON, o que facilita a adição ou remoção de perguntas sem alterar o código.
Exibição das Perguntas: Cada pergunta é exibida com suas opções de resposta.
Resposta do Usuário: O usuário escolhe uma opção, e o programa verifica se a resposta está correta.
Pontuação: A pontuação é acumulada conforme o usuário acerta as respostas.
Finalização: No final, a pontuação total é exibida.
Como Executar:
Salve o código Python em um arquivo, por exemplo,
quiz.py.Crie o arquivo JSON com as perguntas, por exemplo,
perguntas_geografia.json.Execute o script Python:
python quiz.py.
Expansão:
Adicionar mais temas: Basta criar novos arquivos JSON com perguntas de outros temas e carregá-los no código.
Dificuldade variável: Você pode adicionar níveis de dificuldade e carregar perguntas diferentes com base na escolha do usuário.
Interface gráfica: Você pode integrar o quiz com uma interface gráfica usando bibliotecas como
tkinterouPyQt.
Espero que isso atenda às suas expectativas!
Nenhum comentário:
Postar um comentário