quantumcode-ai-architect / gamequest-coffee.html
muboboev's picture
Подэтап 5.3 — GameQuest
be3690e verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Order a Coffee | QuantumCode</title>
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://unpkg.com/feather-icons"></script>
<script src="components/voice-track.js"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&display=swap');
body {
font-family: 'Space Grotesk', sans-serif;
background-color: #0f172a;
color: #e2e8f0;
}
.gradient-text {
background: linear-gradient(90deg, #7c3aed 0%, #2563eb 100%);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
}
.glass-card {
background: rgba(15, 23, 42, 0.7);
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 1rem;
}
.menu-item {
transition: all 0.2s ease;
border: 1px solid transparent;
}
.menu-item:hover {
border-color: #7c3aed;
transform: translateY(-2px);
}
.menu-item.selected {
border-color: #7c3aed;
background: rgba(124, 58, 237, 0.1);
}
.progress-bar {
height: 8px;
border-radius: 4px;
background: rgba(124, 58, 237, 0.2);
}
.progress-fill {
height: 100%;
border-radius: 4px;
background: linear-gradient(90deg, #7c3aed 0%, #2563eb 100%);
}
</style>
</head>
<body class="min-h-screen">
<nav class="px-6 py-4 flex justify-between items-center">
<div class="flex items-center space-x-2">
<i data-feather="cpu" class="text-indigo-500"></i>
<span class="text-xl font-bold gradient-text">QuantumCode</span>
</div>
<div class="flex items-center space-x-2">
<a href="i18n-setup.html" class="flex items-center text-sm hover:text-indigo-400 transition-colors">
<i data-feather="globe" class="w-4 h-4 mr-1"></i>
<span id="currentLang">EN</span>
</a>
</div>
</nav>
<main class="container mx-auto px-4 py-16">
<section class="max-w-4xl mx-auto">
<div class="flex justify-between items-center mb-8">
<h1 class="text-3xl md:text-4xl font-bold gradient-text">Order a Coffee</h1>
<div class="text-xl font-medium">
Score: <span id="currentScore" class="text-indigo-400">0</span>/100
</div>
</div>
<div class="glass-card p-8 mb-8">
<div class="flex flex-col md:flex-row gap-8">
<div class="md:w-1/3">
<h3 class="text-xl font-bold mb-4">Café Menu</h3>
<div class="space-y-3">
<div class="menu-item glass-card p-4 cursor-pointer" data-item="latte">
<div class="font-medium">Latte</div>
<div class="text-sm text-slate-400">Espresso with steamed milk</div>
</div>
<div class="menu-item glass-card p-4 cursor-pointer" data-item="cappuccino">
<div class="font-medium">Cappuccino</div>
<div class="text-sm text-slate-400">Espresso with foam</div>
</div>
<div class="menu-item glass-card p-4 cursor-pointer" data-item="americano">
<div class="font-medium">Americano</div>
<div class="text-sm text-slate-400">Espresso with hot water</div>
</div>
<div class="menu-item glass-card p-4 cursor-pointer" data-item="mocha">
<div class="font-medium">Mocha</div>
<div class="text-sm text-slate-400">Chocolate espresso</div>
</div>
</div>
</div>
<div class="md:w-2/3">
<h3 class="text-xl font-bold mb-4">Your Order</h3>
<div class="glass-card p-6 mb-6 min-h-32" id="orderDisplay">
<p class="text-slate-400 italic">Your order will appear here...</p>
</div>
<div class="mb-6">
<voice-track></voice-track>
</div>
<div class="progress-bar w-full mb-2">
<div class="progress-fill" id="progressBar" style="width: 0%"></div>
</div>
<div class="text-right text-sm text-slate-400">
Progress: <span id="progressText">0</span>%
</div>
</div>
</div>
</div>
<div class="text-center">
<a href="gamequest.html" class="inline-flex items-center px-6 py-3 border border-indigo-500 text-indigo-400 hover:bg-indigo-900/50 rounded-full font-medium transition-colors">
<i data-feather="arrow-left" class="mr-2"></i>
Back to GameQuest
</a>
</div>
</section>
</main>
<script>
let currentScore = 0;
let selectedItem = null;
let progress = 0;
// Menu item selection
document.querySelectorAll('.menu-item').forEach(item => {
item.addEventListener('click', function() {
document.querySelectorAll('.menu-item').forEach(i => i.classList.remove('selected'));
this.classList.add('selected');
selectedItem = this.getAttribute('data-item');
updateOrderDisplay();
});
});
function updateOrderDisplay() {
const orderDisplay = document.getElementById('orderDisplay');
if (selectedItem) {
orderDisplay.innerHTML = `
<p>You ordered: <span class="text-indigo-400 font-medium">${selectedItem}</span></p>
<p class="mt-2">Try saying: <span class="text-slate-300">"I'd like a ${selectedItem}, please"</span></p>
`;
}
}
// Update score and progress
function updateScore(points) {
currentScore += points;
document.getElementById('currentScore').textContent = currentScore;
progress = Math.min(currentScore / 100 * 100, 100);
document.getElementById('progressBar').style.width = `${progress}%`;
document.getElementById('progressText').textContent = Math.floor(progress);
if (progress >= 100) {
completeGame();
}
}
function completeGame() {
// Save game stats
const stats = JSON.parse(localStorage.getItem('gamequestStats')) || {
gamesPlayed: 0,
totalScore: 0,
highScore: 0
};
stats.gamesPlayed += 1;
stats.totalScore += currentScore;
if (currentScore > stats.highScore) {
stats.highScore = currentScore;
}
localStorage.setItem('gamequestStats', JSON.stringify(stats));
alert(`Congratulations! You scored ${currentScore}/100 points.`);
}
// Set initial language
document.getElementById('currentLang').textContent =
document.cookie.match('(^|;)\\s*NEXT_LOCALE\\s*=\\s*([^;]+)')?.pop() || 'EN';
feather.replace();
</script>
</body>
</html>