Update 2025-04-13_16:26:56
This commit is contained in:
88
static/app.js
Normal file
88
static/app.js
Normal file
@ -0,0 +1,88 @@
|
||||
// Simpler approach to show 3s 'Get ready...' and then start dynamic loop
|
||||
|
||||
let lastGrid = [];
|
||||
let currentGrid = [];
|
||||
let gameStartTime = null;
|
||||
|
||||
// Linear formula: from 3s down to 1s over 60s
|
||||
function getInterval(secondsElapsed) {
|
||||
return Math.max(1, -secondsElapsed / 30 + 3);
|
||||
}
|
||||
|
||||
function renderGrid(grid) {
|
||||
const gridDiv = document.getElementById('grid');
|
||||
gridDiv.innerHTML = '';
|
||||
grid.forEach((num, idx) => {
|
||||
const cell = document.createElement('button');
|
||||
cell.textContent = num;
|
||||
cell.onclick = () => guess(idx);
|
||||
gridDiv.appendChild(cell);
|
||||
});
|
||||
}
|
||||
|
||||
function initGame() {
|
||||
// 1) Fetch grid once
|
||||
fetch('/get_grid')
|
||||
.then(r => r.json())
|
||||
.then(grid => {
|
||||
currentGrid = [...grid];
|
||||
renderGrid(currentGrid);
|
||||
|
||||
// 2) Show 'Get ready...' for 3s
|
||||
const feedback = document.getElementById('feedback');
|
||||
feedback.textContent = "⏳ Get ready...";
|
||||
|
||||
setTimeout(() => {
|
||||
feedback.textContent = "";
|
||||
|
||||
// 3) Now start the game
|
||||
lastGrid = [...currentGrid];
|
||||
gameStartTime = Date.now();
|
||||
startStats();
|
||||
startDynamicLoop();
|
||||
}, 3000);
|
||||
})
|
||||
.catch(err => {
|
||||
console.error('Init fetch error:', err);
|
||||
});
|
||||
}
|
||||
|
||||
function startDynamicLoop() {
|
||||
// Repeatedly fetch grid at decreasing intervals
|
||||
function loop() {
|
||||
const secondsElapsed = (Date.now() - gameStartTime) / 1000;
|
||||
const nextInterval = getInterval(secondsElapsed);
|
||||
fetchGrid();
|
||||
setTimeout(loop, nextInterval * 1000);
|
||||
}
|
||||
loop();
|
||||
}
|
||||
|
||||
function fetchGrid() {
|
||||
fetch('/get_grid')
|
||||
.then(r => r.json())
|
||||
.then(grid => {
|
||||
lastGrid = [...currentGrid];
|
||||
currentGrid = [...grid];
|
||||
renderGrid(currentGrid);
|
||||
})
|
||||
.catch(err => {
|
||||
console.error('Fetch grid error:', err);
|
||||
});
|
||||
}
|
||||
|
||||
function guess(idx) {
|
||||
const feedback = document.getElementById('feedback');
|
||||
if (lastGrid.length === 9 && currentGrid[idx] !== lastGrid[idx]) {
|
||||
feedback.textContent = "✅ Correct!";
|
||||
incrementCorrect();
|
||||
} else {
|
||||
feedback.textContent = "❌ Try again!";
|
||||
incrementWrong();
|
||||
}
|
||||
setTimeout(() => feedback.textContent = "", 1500);
|
||||
}
|
||||
|
||||
// Kick off
|
||||
initGame();
|
||||
|
Reference in New Issue
Block a user