Calculator Tools Calculator Tools
Create

JSON Game App

Oct 11, 2023

About this app

A game app that supports flashcard and quiz time games

JSON Game App JSON Game App Previous Next

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>JSON Game App</title>
<meta name="description" content="A game app that supports flashcard and quiz time games">
<meta name="keywords" content="game, flashcard, quiz, JSON">

<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=Poppins:400,500,600&display=swap" rel="stylesheet">

<script type="text/javascript">
try {
document.addEventListener("DOMContentLoaded", function() {
// Variables
var jsonData = null;
var currentSlide = 0;

// Function to handle file upload
function handleFileUpload(files) {
var reader = new FileReader();
reader.onload = function(e) {
try {
jsonData = JSON.parse(e.target.result);
renderSlide(currentSlide);
} catch (error) {
console.error("Invalid JSON file.");
}
};
reader.readAsText(files[0]);
}

// Function to render the slide
function renderSlide(slideIndex) {
var slideData = jsonData[0].lessonData[slideIndex];
var gameType = slideData.gameType;
var gameData = slideData.gameData;

var slideContent = "";

if (gameType === "flashcard") {
slideContent += "<h2 class='flashcard-term'>" + gameData.term + "</h2>";
slideContent += "<p class='flashcard-translation'>" + gameData.translation + "</p>";
} else if (gameType === "quiz") {
slideContent += "<h2 class='quiz-question'>" + gameData.question + "</h2>";
slideContent += "<ul class='quiz-options'>";
slideContent += "<li><input type='radio' name='quiz-option' value='A'> " + gameData.optionA + "</li>";
slideContent += "<li><input type='radio' name='quiz-option' value='B'> " + gameData.optionB + "</li>";
slideContent += "<li><input type='radio' name='quiz-option' value='C'> " + gameData.optionC + "</li>";
slideContent += "<li><input type='radio' name='quiz-option' value='D'> " + gameData.optionD + "</li>";
slideContent += "</ul>";
slideContent += "<button class='quiz-submit' onclick='checkAnswer()'>Submit</button>";
}

$("#slide-container").html(slideContent);
}

// Function to check the quiz answer
function checkAnswer() {
var selectedOption = $("input[name='quiz-option']:checked").val();
var correctOption = jsonData[0].lessonData[currentSlide].gameData.correct;

if (selectedOption === correctOption) {
alert("Correct answer!");
} else {
alert("Wrong answer. Try again.");
}
}

// Event listener for file upload
$("#file-upload").on("change", function() {
handleFileUpload(this.files);
});

// Event listener for previous slide button
$("#btn-previous").on("click", function() {
if (currentSlide > 0) {
currentSlide--;
renderSlide(currentSlide);
}
});

// Event listener for next slide button
$("#btn-next").on("click", function() {
if (currentSlide < jsonData[0].lessonData.length - 1) {
currentSlide++;
renderSlide(currentSlide);
}
});
});
} catch (error) {
throw error;
}
</script>

<style>
body {
font-family: 'Poppins', sans-serif;
background: linear-gradient(to bottom right, #B0E0E6, #87CEEB);
margin: 0;
padding: 0;
}

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

h1 {
color: #fff;
text-align: center;
margin-bottom: 30px;
}

#slide-container {
background-color: #fff;
padding: 20px;
border-radius: 10px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}

.flashcard-term {
font-size: 24px;
font-weight: 600;
margin-bottom: 10px;
}

.flashcard-translation {
font-size: 18px;
font-weight: 500;
color: #666;
}

.quiz-question {
font-size: 24px;
font-weight: 600;
margin-bottom: 20px;
}

.quiz-options {
list-style-type: none;
padding: 0;
}

.quiz-options li {
margin-bottom: 10px;
}

.quiz-submit {
background-color: #007bff;
border: none;
color: #fff;
padding: 10px 20px;
font-size: 18px;
font-weight: 500;
border-radius: 5px;
cursor: pointer;
}

.quiz-submit:hover {
background-color: #0056b3;
}

.quiz-submit:active {
background-color: #003d80;
}

.btn-container {
display: flex;
justify-content: space-between;
margin-top: 20px;
}

.btn {
background-color: #007bff;
border: none;
color: #fff;
padding: 10px 20px;
font-size: 18px;
font-weight: 500;
border-radius: 5px;
cursor: pointer;
}

.btn:hover {
background-color: #0056b3;
}

.btn:active {
background-color: #003d80;
}
</style>
</head>
<body>
<div id="main-container" class="container">
<h1>JSON Game App</h1>
<div id="slide-container"></div>
<input type="file" id="file-upload" accept=".json">
<div class="btn-container">
<button id="btn-previous" class="btn">Previous</button>
<button id="btn-next" class="btn">Next</button>
</div>
</div>
</body>
</html>