Javascript, HTML, CSS Code
Copy
<html>
<head>
<script type="text/javascript"> window.addEventListener('error', function(event) { var message = JSON.parse(JSON.stringify(event.message)); var source = event.filename; var lineno = event.lineno; var colno = event.colno; var error = event.error; window.parent.postMessage({ type: 'iframeError', details: { message: message, source: source, lineno: lineno, colno: colno, error: error ? error.stack : '' } }, '*'); }); window.addEventListener('unhandledrejection', function(event) { window.parent.postMessage({ type: 'iframePromiseRejection', details: { reason: event.reason } }, '*'); }); </script>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Base 10 Math Game for 2nd Graders</title>
<meta name="description" content="A simple one-page educational game for 2nd grade children to learn about base 10 math and the hundreds, tens, and ones places.">
<meta name="keywords" content="base 10, math, game, second grade, children, education">
<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=Pacifico|Russo+One&display=swap" rel="stylesheet">
<script type="text/javascript">
var localStoragePrefix = "ct-168149385812473";
var lastSave = 0;
function saveLocal(data) {
if (Date.now() - lastSave < 1000) {
return;
}
let cookie = localStoragePrefix + "=" + JSON.stringify(data) + "; path=" + window.location.pathname + "'; SameSite=Strict";
cookie += "; expires=" + new Date(Date.now() + 1000 * 60 * 60 * 24 * 365 * 1000).toUTCString();
document.cookie = cookie;
lastSave = Date.now();
}
function loadLocal() {
var cookiePrefix = localStoragePrefix + "=";
var cookieStart = document.cookie.indexOf(cookiePrefix);
if (cookieStart > -1) {
let cookieEnd = document.cookie.indexOf(";", cookieStart);
if (cookieEnd == -1) {
cookieEnd = document.cookie.length;
}
var cookieData = document.cookie.substring(cookieStart + cookiePrefix.length, cookieEnd);
return JSON.parse(cookieData);
}
}
</script>
<script type="text/javascript">
$(document).ready(function() {
let randomNumber = 0;
let tokens = [];
function generateNumber() {
randomNumber = Math.floor(Math.random() * 999) + 1;
$("#random-number").text(randomNumber);
generateTokens();
}
function generateTokens() {
tokens = [];
let hundreds = Math.floor(randomNumber / 100);
let tens = Math.floor((randomNumber % 100) / 10);
let ones = randomNumber % 10;
for (let i = 0; i < hundreds; i++) {
tokens.push($('<div class="token">100</div>'));
}
for (let i = 0; i < tens; i++) {
tokens.push($('<div class="token">10</div>'));
}
for (let i = 0; i < ones; i++) {
tokens.push($('<div class="token">1</div>'));
}
$("#token-container").html(tokens);
$(".token").draggable({containment: "#main-container", helper: "clone", snap: ".container-box", snapMode: "inner"});
}
$(".container-box").droppable({
accept: ".token",
drop: function(event, ui) {
let droppedToken = $(ui.helper).clone();
droppedToken.removeClass("ui-draggable-dragging");
droppedToken.draggable({containment: "#main-container", helper: "clone", snap: ".container-box", snapMode: "inner"});
$(this).append(droppedToken);
}
});
$("#submit-answer").click(function() {
let userHundreds = 0;
let userTens = 0;
let userOnes = 0;
$("#hundreds-container .token").each(function() {
userHundreds += parseInt($(this).text());
});
$("#tens-container .token").each(function() {
userTens += parseInt($(this).text());
});
$("#ones-container .token").each(function() {
userOnes += parseInt($(this).text());
});
let userNumber = userHundreds + userTens + userOnes;
if (userNumber === randomNumber) {
$("#feedback").html('<span class="correct">😃 Yay!</span>');
} else {
$("#feedback").html('<span class="incorrect">❌</span>');
}
});
$("#restart-game").click(function() {
$(".container-box").empty();
generateNumber();
$("#feedback").html('');
});
generateNumber();
});
</script>
<style>
body {
font-family: 'Russo One', sans-serif;
background: linear-gradient(to right, #56ccf2, #2f80ed);
}
#main-container {
max-width: 600px;
margin: 40px auto;
padding: 20px;
background-color: #fff;
border-radius: 10px;
box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);
}
#random-number {
font-family: 'Pacifico', cursive;
font-size: 48px;
color: #2f80ed;
}
.token {
display: inline-block;
background-color: #6dd5ed;
border-radius: 50%;
width: 50px;
height: 50px;
line-height: 50px;
text-align: center;
font-size: 24px;
color: #2f80ed;
margin: 5px;
cursor: grab;
}
.token:active {
cursor: grabbing;
}
.container-box {
border: 2px dashed #2f80ed;
border-radius: 10px;
height: 100px;
padding: 5px;
margin-bottom: 20px;
}
.container-label {
font-size: 24px;
color: #2f80ed;
margin-bottom: 10px;
}
button {
font-family: 'Russo One', sans-serif;
}
#feedback {
font-size: 24px;
margin-top: 20px;
}
.correct {
color: green;
}
.incorrect {
color: red;
}
</style>
<link rel="canonical" href="https://calculator.tools/prompt/432/">
<meta charset="utf-8">
</head>
<body>
<div id="main-container" class="container">
<h1>Base 10 Math Game</h1>
<p>Current Number: <span id="random-number"></span></p>
<div id="token-container"></div>
<div class="container-box" id="hundreds-container">
<div class="container-label">Hundreds</div>
</div>
<div class="container-box" id="tens-container">
<div class="container-label">Tens</div>
</div>
<div class="container-box" id="ones-container">
<div class="container-label">Ones</div>
</div>
<button id="submit-answer" class="btn btn-primary">Submit Answer</button>
<button id="restart-game" class="btn btn-secondary">Restart Game</button>
<div id="feedback"></div>
</div>
<script type="text/javascript"> var localStoragePrefix = "ct-{{ cachebreaker }}"; var lastSave = 0; function saveLocal(data) { if (Date.now() - lastSave < 1000) { return; } let cookie = localStoragePrefix + "=" + JSON.stringify(data) + "; path=" + window.location.pathname + "'; SameSite=Strict"; cookie += "; expires=" + new Date(Date.now() + 1000 * 60 * 60 * 24 * 365 * 1000).toUTCString(); document.cookie = cookie; lastSave = Date.now(); } function loadLocal() { var cookiePrefix = localStoragePrefix + "="; var cookieStart = document.cookie.indexOf(cookiePrefix); if (cookieStart > -1) { let cookieEnd = document.cookie.indexOf(";", cookieStart); if (cookieEnd == -1) { cookieEnd = document.cookie.length; } var cookieData = document.cookie.substring(cookieStart + cookiePrefix.length, cookieEnd); return JSON.parse(cookieData); } } </script>
<script type="text/javascript"> window.addEventListener('load', function() { var observer = new MutationObserver(function() { window.parent.postMessage({height: document.documentElement.scrollHeight || document.body.scrollHeight},"*"); }); observer.observe(document.body, {attributes: true, childList: true, subtree: true}); window.parent.postMessage({height: document.documentElement.scrollHeight || document.body.scrollHeight},"*"); }); </script>
</body>
</html>