Semeando a Palavra e Cumprindo a Missão.

Páginas

Pesquisar

Postagens do Blog

18/12/2025

Quiz Biblico

18/12/2025 - 17:49 Posted by Leonardo Silva Santos No comments
import React, { useState, useEffect } from 'react'; import { Book, Settings, ChevronRight, CheckCircle, XCircle, RefreshCcw, Award, Scroll, Users, BarChart, Loader2 } from 'lucide-react'; // Banco de Questões Expandido (10 Perguntas) // Tags: 'antigo', 'novo' para filtros básicos const fullQuestionBank = [ { id: 1, testament: 'novo', question: "Na transfiguração de Jesus, descrita nos Evangelhos, duas figuras importantes do Antigo Testamento apareceram conversando com Ele. Quem eram elas?", options: [ { id: 'A', text: "Abraão e Davi", rationale: "Embora sejam patriarcas importantes, não foram eles que apareceram no monte da transfiguração." }, { id: 'B', text: "Moisés e Elias", rationale: "Correto! Moisés representa a Lei e Elias representa os Profetas. (Ref: Mateus 17:3 NVT)", isCorrect: true }, { id: 'C', text: "Enoque e Elias", rationale: "Enoque e Elias foram traslados, mas o texto bíblico especifica que Moisés estava presente." }, { id: 'D', text: "Isaías e Jeremias", rationale: "Estes são profetas maiores, mas não foram os que apareceram." } ] }, { id: 2, testament: 'novo', question: "Segundo Hebreus, quais eram os três itens contidos dentro da Arca da Aliança?", options: [ { id: 'A', text: "Um pote com maná, a vara de Arão e as tábuas da aliança", rationale: "Correto! Hebreus 9:4 detalha esses três itens no Santo dos Santos. (Ref: Hebreus 9:4 NVT)", isCorrect: true }, { id: 'B', text: "As tábuas da lei, o cajado de Moisés e um frasco de azeite", rationale: "O cajado foi o de Arão, não o de Moisés. O azeite não estava na Arca." }, { id: 'C', text: "As roupas sacerdotais, o Urim e o Tumim", rationale: "Itens do Sumo Sacerdote, não guardados dentro da Arca." }, { id: 'D', text: "Um pedaço da serpente de bronze, incenso e as tábuas", rationale: "A serpente de bronze não ficava na Arca." } ] }, { id: 3, testament: 'antigo', question: "Quem foi o profeta enviado por Deus para confrontar o rei Davi após o pecado com Bate-Seba?", options: [ { id: 'A', text: "Samuel", rationale: "Samuel já havia falecido nesta época." }, { id: 'B', text: "Natã", rationale: "Correto! Natã contou a parábola da ovelha para levar Davi ao arrependimento. (Ref: 2 Samuel 12:1-7 NVT)", isCorrect: true }, { id: 'C', text: "Elias", rationale: "Elias viveu muito tempo depois." }, { id: 'D', text: "Eliseu", rationale: "Eliseu viveu gerações após Davi." } ] }, { id: 4, testament: 'novo', question: "Em Atos, quem foi o primeiro mártir cristão apedrejado enquanto via o céu aberto?", options: [ { id: 'A', text: "Tiago", rationale: "Tiago foi morto à espada por Herodes." }, { id: 'B', text: "Estêvão", rationale: "Correto! Estêvão foi apedrejado enquanto Saul observava. (Ref: Atos 7:55-60 NVT)", isCorrect: true }, { id: 'C', text: "Pedro", rationale: "Pedro foi martirizado muito mais tarde." }, { id: 'D', text: "Barnabé", rationale: "O relato de Atos 7 refere-se a Estêvão." } ] }, { id: 5, testament: 'novo', question: "Qual é a definição bíblica de fé apresentada em Hebreus 11:1?", options: [ { id: 'A', text: "Um sentimento forte de otimismo.", rationale: "A fé bíblica é mais que um sentimento." }, { id: 'B', text: "A realidade daquilo que esperamos; a prova de coisas que não vemos.", rationale: "Correto! Essa é a definição exata da NVT. (Ref: Hebreus 11:1 NVT)", isCorrect: true }, { id: 'C', text: "A certeza da prosperidade material.", rationale: "O texto define a fé de maneira existencial e espiritual." }, { id: 'D', text: "Acreditar sem questionar.", rationale: "Fé envolve convicção ('prova')." } ] }, { id: 6, testament: 'antigo', question: "Quem foi o homem que 'andou com Deus' e não morreu, pois Deus o levou para junto de si?", options: [ { id: 'A', text: "Noé", rationale: "Noé andou com Deus, mas morreu." }, { id: 'B', text: "Enoque", rationale: "Correto! Gênesis relata que ele desapareceu porque Deus o levou. (Ref: Gênesis 5:24 NVT)", isCorrect: true }, { id: 'C', text: "Abraão", rationale: "Abraão morreu e foi sepultado." }, { id: 'D', text: "Elias", rationale: "Elias também foi levado, mas a descrição 'andou com Deus' é clássica de Enoque." } ] }, { id: 7, testament: 'antigo', question: "Qual profeta foi engolido por um grande peixe após tentar fugir para Társis?", options: [ { id: 'A', text: "Jonas", rationale: "Correto! Ele tentava fugir da missão em Nínive. (Ref: Jonas 1:17 NVT)", isCorrect: true }, { id: 'B', text: "Joel", rationale: "Joel profetizou sobre o Espírito, não foi engolido por peixe." }, { id: 'C', text: "Amós", rationale: "Amós era pastor de Tekoa." }, { id: 'D', text: "Daniel", rationale: "Daniel foi para a cova dos leões, não para o mar." } ] }, { id: 8, testament: 'novo', question: "Onde Jesus realizou seu primeiro sinal milagroso, transformando água em vinho?", options: [ { id: 'A', text: "Nazaré", rationale: "Nazaré era onde ele cresceu." }, { id: 'B', text: "Cafarnaum", rationale: "Cafarnaum foi sua base ministerial, mas não o primeiro milagre." }, { id: 'C', text: "Caná da Galileia", rationale: "Correto! Foi em um casamento em Caná. (Ref: João 2:11 NVT)", isCorrect: true }, { id: 'D', text: "Jerusalém", rationale: "Muitos milagres ocorreram lá, mas não o primeiro." } ] }, { id: 9, testament: 'novo', question: "Em Gálatas, qual é o fruto do Espírito listado logo após o amor?", options: [ { id: 'A', text: "Paz", rationale: "Paz vem depois da alegria." }, { id: 'B', text: "Alegria", rationale: "Correto! A ordem é: amor, alegria, paz... (Ref: Gálatas 5:22 NVT)", isCorrect: true }, { id: 'C', text: "Paciência", rationale: "Vem depois da paz." }, { id: 'D', text: "Bondade", rationale: "Está mais adiante na lista." } ] }, { id: 10, testament: 'novo', question: "No Apocalipse, qual igreja foi chamada de 'morna' (nem fria nem quente)?", options: [ { id: 'A', text: "Éfeso", rationale: "Éfeso perdeu o primeiro amor." }, { id: 'B', text: "Laodiceia", rationale: "Correto! 'Estou a ponto de vomitá-lo da minha boca'. (Ref: Apocalipse 3:16 NVT)", isCorrect: true }, { id: 'C', text: "Filadélfia", rationale: "Filadélfia foi elogiada." }, { id: 'D', text: "Sardes", rationale: "Sardes tinha fama de estar viva, mas estava morta." } ] } ]; const QuizConfigurator = () => { const [gameState, setGameState] = useState('menu'); // 'menu', 'loading', 'quiz', 'results' const [config, setConfig] = useState({ testament: 'ambos', difficulty: 'intermediario', quantity: 5 }); const [activeQuestions, setActiveQuestions] = useState([]); const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0); const [score, setScore] = useState(0); const [selectedAnswer, setSelectedAnswer] = useState(null); const [showFeedback, setShowFeedback] = useState(false); const [history, setHistory] = useState([]); // Config Handler const handleConfigChange = (field, value) => { setConfig(prev => ({ ...prev, [field]: value })); }; // Start & Filter Logic const startQuiz = () => { setGameState('loading'); // Simula tempo de processamento setTimeout(() => { let filtered = fullQuestionBank; // Filtro básico de Testamento if (config.testament !== 'ambos') { filtered = fullQuestionBank.filter(q => q.testament === config.testament); } // Se o filtro resultar em poucas questões, completamos com outras para não quebrar a experiência // (Em um app real, buscaríamos mais no DB) if (filtered.length < config.quantity) { const remaining = fullQuestionBank.filter(q => !filtered.includes(q)); filtered = [...filtered, ...remaining]; } // Embaralhar e cortar const shuffled = [...filtered].sort(() => 0.5 - Math.random()); const finalSelection = shuffled.slice(0, config.quantity); setActiveQuestions(finalSelection); setCurrentQuestionIndex(0); setScore(0); setHistory([]); setSelectedAnswer(null); setShowFeedback(false); setGameState('quiz'); }, 1500); }; // Quiz Interaction Handlers const handleAnswerSelect = (option) => { if (showFeedback) return; setSelectedAnswer(option); setShowFeedback(true); if (option.isCorrect) { setScore(prev => prev + 1); } setHistory(prev => [...prev, { question: activeQuestions[currentQuestionIndex], selected: option, correct: option.isCorrect }]); }; const nextQuestion = () => { if (currentQuestionIndex < activeQuestions.length - 1) { setCurrentQuestionIndex(prev => prev + 1); setSelectedAnswer(null); setShowFeedback(false); } else { setGameState('results'); } }; const resetQuiz = () => { setGameState('menu'); }; // Renders const renderMenu = () => (

Quiz Bíblico NVT

Configure seu desafio teológico personalizado.

{/* Card de Filtros */}
Adultos / EBD (Padrão)
); const renderLoading = () => (

Gerando seu Quiz...

Selecionando questões baseadas em {config.testament === 'ambos' ? 'toda a Bíblia' : config.testament === 'novo' ? 'Novo Testamento' : 'Antigo Testamento'}.

); const renderQuiz = () => { const currentQ = activeQuestions[currentQuestionIndex]; return (
Questão {currentQuestionIndex + 1} / {activeQuestions.length} {config.difficulty}

{currentQ.question}

{currentQ.options.map((option) => { let optionClass = "w-full p-4 text-left rounded-xl border-2 transition-all flex items-start gap-4 group "; let indicatorClass = "font-bold w-8 h-8 flex flex-shrink-0 items-center justify-center rounded-full text-sm border-2 transition-colors "; if (showFeedback) { if (option.isCorrect) { optionClass += "bg-emerald-50 border-emerald-500 text-emerald-900"; indicatorClass += "border-emerald-600 bg-emerald-200 text-emerald-800"; } else if (selectedAnswer === option) { optionClass += "bg-rose-50 border-rose-500 text-rose-900"; indicatorClass += "border-rose-500 bg-rose-200 text-rose-800"; } else { optionClass += "bg-slate-50 border-slate-100 text-slate-400 opacity-60"; indicatorClass += "border-slate-200 bg-slate-100 text-slate-400"; } } else { optionClass += "bg-white border-slate-100 hover:border-indigo-400 hover:shadow-md text-slate-700 hover:bg-slate-50"; indicatorClass += "border-slate-200 bg-slate-50 text-slate-500 group-hover:border-indigo-400 group-hover:text-indigo-600"; } return ( ); })}
{showFeedback && (
{selectedAnswer.isCorrect ? ( ) : ( )}

{selectedAnswer.isCorrect ? 'Excelente! Resposta Correta.' : 'Não foi dessa vez.'}

{selectedAnswer.isCorrect ? selectedAnswer.rationale : activeQuestions[currentQuestionIndex].options.find(o => o.isCorrect).rationale }

)}
); }; const renderResults = () => { const totalQuestions = activeQuestions.length; const percentage = Math.round((score / totalQuestions) * 100); let message = "Bom esforço!"; if (percentage === 100) message = "Perfeito! Você é um mestre!"; else if (percentage >= 80) message = "Excelente conhecimento!"; else if (percentage >= 50) message = "Você está no caminho certo."; return (

{percentage}% de Aproveitamento

{message}

Questões

{totalQuestions}

Acertos

{score}

Erros

{totalQuestions - score}

Gabarito da Rodada

{history.map((item, idx) => (
{item.correct ? ( ) : ( )}

{item.question.question}

Sua escolha: {item.selected.text}

{!item.correct && (

Correta: {item.question.options.find(o => o.isCorrect).text}

)}
))}
); }; return (
{gameState === 'menu' && renderMenu()} {gameState === 'loading' && renderLoading()} {gameState === 'quiz' && renderQuiz()} {gameState === 'results' && renderResults()}
); }; export default QuizConfigurator; ```eof

0 comments:

Postar um comentário