Deploy from Lumerel

This commit is contained in:
Lumerel Deploy
2026-02-18 18:12:33 +00:00
commit 4754d24870
5 changed files with 719 additions and 0 deletions

159
script.js Normal file
View File

@@ -0,0 +1,159 @@
// Game state
const gameState = {
currentCard: 0,
sum: 0,
cardValues: [1, 2, 4, 8, 16, 32],
};
// DOM elements
const welcomeScreen = document.getElementById('welcomeScreen');
const cardScreen = document.getElementById('cardScreen');
const analysisScreen = document.getElementById('analysisScreen');
const resultScreen = document.getElementById('resultScreen');
const startBtn = document.getElementById('startBtn');
const yesBtn = document.getElementById('yesBtn');
const noBtn = document.getElementById('noBtn');
const restartBtn = document.getElementById('restartBtn');
const cardNumber = document.getElementById('cardNumber');
const cardGrid = document.getElementById('cardGrid');
const statusMessage = document.getElementById('statusMessage');
const progressBar = document.getElementById('progressBar');
const resultNumber = document.getElementById('resultNumber');
// Card values and their corresponding binary values
const cardValues = [1, 2, 4, 8, 16, 32];
// Generate numbers for a specific card
function generateCardNumbers(cardValue) {
const numbers = [];
for (let n = 1; n <= 63; n++) {
if ((n & cardValue) !== 0) {
numbers.push(n);
}
}
return numbers;
}
// Display a card
function displayCard(cardIndex) {
const cardValue = cardValues[cardIndex];
const numbers = generateCardNumbers(cardValue);
cardNumber.textContent = `Card ${cardIndex + 1} of 6`;
cardGrid.innerHTML = '';
numbers.forEach((num) => {
const numberDiv = document.createElement('div');
numberDiv.className = 'card-number';
numberDiv.textContent = num;
cardGrid.appendChild(numberDiv);
});
}
// Handle Yes response
function handleYes() {
gameState.sum += gameState.cardValues[gameState.currentCard];
nextCard();
}
// Handle No response
function handleNo() {
nextCard();
}
// Move to the next card
function nextCard() {
gameState.currentCard++;
if (gameState.currentCard < 6) {
displayCard(gameState.currentCard);
} else {
// Move to analysis screen
showAnalysisScreen();
}
}
// Show analysis screen with animations
function showAnalysisScreen() {
switchScreen(analysisScreen);
animateAnalysis();
}
// Animate the analysis screen
function animateAnalysis() {
const messages = [
'Reading signals…',
'Matching pattern…',
'Locking onto your thought…',
'Decoding brainwaves…',
'Final verification…',
];
let messageIndex = 0;
let progressValue = 0;
// Cycle through messages
const messageInterval = setInterval(() => {
statusMessage.textContent = messages[messageIndex % messages.length];
messageIndex++;
}, 400);
// Simulate progress
const progressInterval = setInterval(() => {
progressValue += Math.random() * 15;
if (progressValue > 100) progressValue = 100;
progressBar.style.width = progressValue + '%';
if (progressValue >= 100) {
clearInterval(progressInterval);
}
}, 200);
// Reveal result after 2 seconds
setTimeout(() => {
clearInterval(messageInterval);
clearInterval(progressInterval);
revealResult();
}, 2000);
}
// Reveal the result
function revealResult() {
resultNumber.textContent = `Your number is ${gameState.sum}`;
switchScreen(resultScreen);
}
// Switch between screens
function switchScreen(targetScreen) {
document.querySelectorAll('.screen').forEach((screen) => {
screen.classList.remove('active');
});
targetScreen.classList.add('active');
}
// Reset game
function resetGame() {
gameState.currentCard = 0;
gameState.sum = 0;
switchScreen(welcomeScreen);
progressBar.style.width = '0%';
}
// Event listeners
startBtn.addEventListener('click', () => {
gameState.currentCard = 0;
gameState.sum = 0;
displayCard(0);
switchScreen(cardScreen);
});
yesBtn.addEventListener('click', handleYes);
noBtn.addEventListener('click', handleNo);
restartBtn.addEventListener('click', resetGame);
// Initialize
window.addEventListener('load', () => {
switchScreen(welcomeScreen);
});