Spaces:
Running
Running
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>Calculator Game</title> | |
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet"> | |
<style> | |
body { | |
font-family: 'Roboto', sans-serif; | |
display: flex; | |
justify-content: center; | |
align-items: center; | |
height: 100vh; | |
background-color: #f0f0f0; | |
margin: 0; | |
} | |
.calculator { | |
width: 300px; | |
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); | |
border-radius: 10px; | |
overflow: hidden; | |
background: #fff; | |
} | |
.display { | |
background-color: #222; | |
color: #fff; | |
font-size: 2rem; | |
text-align: right; | |
padding: 20px; | |
box-sizing: border-box; | |
} | |
.buttons { | |
display: grid; | |
grid-template-columns: repeat(4, 1fr); | |
} | |
.button { | |
border: 1px solid #ddd; | |
padding: 20px; | |
font-size: 1.5rem; | |
cursor: pointer; | |
transition: background 0.3s; | |
} | |
.button:hover { | |
background-color: #f7f7f7; | |
} | |
.explode { | |
animation: explode 0.5s forwards; | |
} | |
@keyframes explode { | |
0% { transform: scale(1); } | |
100% { transform: scale(0); } | |
} | |
</style> | |
</head> | |
<body> | |
<div class="calculator"> | |
<div class="display" id="display">0</div> | |
<div class="buttons"> | |
<div class="button">7</div> | |
<div class="button">8</div> | |
<div class="button">9</div> | |
<div class="button">/</div> | |
<div class="button">4</div> | |
<div class="button">5</div> | |
<div class="button">6</div> | |
<div class="button">*</div> | |
<div class="button">1</div> | |
<div class="button">2</div> | |
<div class="button">3</div> | |
<div class="button">-</div> | |
<div class="button">0</div> | |
<div class="button">C</div> | |
<div class="button">=</div> | |
<div class="button">+</div> | |
</div> | |
</div> | |
<!-- Placeholder for explosion sound --> | |
<audio id="explosionSound" src="explosion.mp3"></audio> | |
<script> | |
const display = document.getElementById('display'); | |
const explosionSound = document.getElementById('explosionSound'); | |
let expression = ''; | |
document.querySelectorAll('.button').forEach(button => { | |
button.addEventListener('click', () => { | |
const value = button.textContent; | |
if (value === 'C') { | |
expression = ''; | |
display.textContent = '0'; | |
} else if (value === '=') { | |
try { | |
if (expression.includes('/0')) { | |
explodeScreen(); | |
} else { | |
expression = eval(expression).toString(); | |
display.textContent = expression; | |
} | |
} catch { | |
display.textContent = 'Error'; | |
expression = ''; | |
} | |
} else { | |
expression += value; | |
display.textContent = expression; | |
} | |
}); | |
}); | |
function explodeScreen() { | |
explosionSound.play(); | |
display.textContent = 'Boom!'; | |
document.querySelector('.calculator').classList.add('explode'); | |
setTimeout(() => { | |
expression = ''; | |
display.textContent = '0'; | |
document.querySelector('.calculator').classList.remove('explode'); | |
}, 500); | |
} | |
</script> | |
</body> | |
</html><script async data-explicit-opt-in="true" data-cookie-opt-in="true" src="https://vercel.live/_next-live/feedback/feedback.js"></script> |