Calculator Tools Calculator Tools
Create

Trivia Game

Dec 28, 2023

About this app

Test your knowledge with this fun trivia game!

Trivia Game

Related apps

Put this on your site

Source

                    <html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">

<title>Trivia Game</title>
<meta name="description" content="Test your knowledge with this fun trivia game!">
<meta name="keywords" content="trivia, game, knowledge, fun">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Roboto:400,700" rel="stylesheet">

<script type="text/javascript">
try {
// App Javascript Goes Here. Place your entire script content inside the try block for error handling.

// Trivia Questions
const triviaQuestions = [
{
question: "What is the capital city of France?",
options: ["Paris", "London", "Rome", "Madrid"],
answer: 0
},
{
question: "Who painted the Mona Lisa?",
options: ["Leonardo da Vinci", "Pablo Picasso", "Vincent van Gogh", "Michelangelo"],
answer: 0
},
{
question: "What is the largest planet in our solar system?",
options: ["Jupiter", "Saturn", "Neptune", "Earth"],
answer: 0
},
{
question: "Which country is home to the kangaroo?",
options: ["Australia", "Brazil", "Canada", "India"],
answer: 0
},
{
question: "What is the tallest mountain in the world?",
options: ["Mount Everest", "K2", "Kangchenjunga", "Makalu"],
answer: 0
}
];

// Generate Random Number within range
function getRandomNumber(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}

// Shuffle Array
function shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
return array;
}

// Generate Trivia Game
function generateTriviaGame() {
const triviaContainer = document.getElementById("trivia-container");
triviaContainer.innerHTML = "";

const shuffledQuestions = shuffleArray(triviaQuestions);
let questionNumber = 1;

shuffledQuestions.forEach((questionObj) => {
const questionCard = document.createElement("div");
questionCard.classList.add("card", "mb-3");

const cardHeader = document.createElement("div");
cardHeader.classList.add("card-header");
cardHeader.innerText = "Question " + questionNumber;
questionCard.appendChild(cardHeader);

const cardBody = document.createElement("div");
cardBody.classList.add("card-body");
cardBody.innerHTML = `
<h5 class="card-title">${questionObj.question}</h5>
<div class="options">
${questionObj.options
.map(
(option, index) =>
`<div class="form-check">
<input class="form-check-input" type="radio" name="question-${questionNumber}" id="question-${questionNumber}-option-${index}" value="${index}">
<label class="form-check-label" for="question-${questionNumber}-option-${index}">
${option}
</label>
</div>`
)
.join("")}
</div>
`;
questionCard.appendChild(cardBody);

triviaContainer.appendChild(questionCard);
questionNumber++;
});

const submitButton = document.createElement("button");
submitButton.classList.add("btn", "btn-primary");
submitButton.innerText = "Submit";
submitButton.addEventListener("click", calculateScore);
triviaContainer.appendChild(submitButton);
}

// Calculate and Display Score
function calculateScore() {
const triviaContainer = document.getElementById("trivia-container");
const triviaCards = triviaContainer.getElementsByClassName("card");

let correctAnswers = 0;

Array.from(triviaCards).forEach((card, index) => {
const selectedOption = card.querySelector(`input[name="question-${index + 1}"]:checked`);
if (selectedOption) {
const answerIndex = parseInt(selectedOption.value);
if (answerIndex === triviaQuestions[index].answer) {
correctAnswers++;
card.classList.add("correct");
} else {
card.classList.add("incorrect");
}
}
});

const totalQuestions = triviaQuestions.length;
const score = (correctAnswers / totalQuestions) * 100;

const scoreContainer = document.createElement("div");
scoreContainer.classList.add("score-container");

const scoreHeading = document.createElement("h3");
scoreHeading.innerText = "Your Score:";
scoreContainer.appendChild(scoreHeading);

const scorePercentage = document.createElement("h1");
scorePercentage.innerText = `${score}%`;
scoreContainer.appendChild(scorePercentage);

triviaContainer.innerHTML = "";
triviaContainer.appendChild(scoreContainer);
}

// This will run when the DOM is ready.
document.addEventListener("DOMContentLoaded", function() {
generateTriviaGame();
});

} catch (error) {
// This will throw the error to the parent window.
throw error;
}
</script>

<style>
/* App CSS Goes Here */
body {
font-family: 'Roboto', sans-serif;
background-color: #f8f9fa;
}

#main-container {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
}

.card {
background-color: #fff;
border-radius: 10px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.card-header {
background-color: #007bff;
color: #fff;
font-weight: bold;
text-transform: uppercase;
}

.card-body {
padding: 20px;
}

.card-title {
font-size: 18px;
margin-bottom: 15px;
}

.options {
margin-top: 10px;
}

.form-check {
margin-bottom: 10px;
}

.btn-primary {
background-color: #007bff;
border-color: #007bff;
}

.correct {
background-color: #d4edda;
}

.incorrect {
background-color: #f8d7da;
}

.score-container {
text-align: center;
}

.score-container h3 {
margin-bottom: 20px;
}

.score-container h1 {
font-size: 48px;
color: #007bff;
}
</style>
</head>
<body>
<div id="main-container" class="container">
<div id="trivia-container"></div>
</div>
</body>
</html>