diff --git a/web-app/js/projects/snake.js b/web-app/js/projects/snake.js index d268ea6..39b4e1b 100644 --- a/web-app/js/projects/snake.js +++ b/web-app/js/projects/snake.js @@ -245,9 +245,6 @@ function gameEngine() { const selector = document.getElementById('difficultySelect'); if (selector) selector.disabled = false; - snakeArr = [{ x: 13, y: 10 }]; - score = 0; - document.getElementById('score').innerHTML = score; return; } @@ -291,6 +288,34 @@ function initSnakeGame() { // Set initial historic rendering metrics updateBestScoreUI(); + function restartGame() { + // Hide game over overlay + document.getElementById('game-over-overlay').classList.add('hidden'); + + // Reset snake + snakeArr = [{ x: 13, y: 10 }]; + + // Reset score + score = 0; + document.getElementById('score').innerHTML = score; + + // Reset direction and start moving + direction = { x: 1, y: 0 }; + + // Generate new food + food = { + x: Math.round(2 + (16 - 2) * Math.random()), + y: Math.round(2 + (16 - 2) * Math.random()) + }; + + // Re-enable difficulty selection before start + if (selector) { + selector.disabled = true; + } + + // Reset frame timing + lastPaintTime = 0; +} // Map difficulty listener parameters const selector = document.getElementById('difficultySelect'); @@ -307,18 +332,9 @@ function initSnakeGame() { direction = { x: 1, y: 0 }; // Start moving right }); - document.getElementById('restartSnakeBtn').addEventListener('click', () => { - location.reload(); - }); + document.getElementById('restartSnakeBtn').addEventListener('click', restartGame); - document.getElementById('overlayRestartBtn').addEventListener('click', () => { - document.getElementById('game-over-overlay').classList.add('hidden'); - if (selector) selector.disabled = false; - direction = { x: 0, y: 0 }; - snakeArr = [{ x: 13, y: 10 }]; - score = 0; - document.getElementById('score').innerHTML = score; - }); + document.getElementById('overlayRestartBtn').addEventListener('click', restartGame); window.addEventListener('keydown', e => { // Change difficulty selection dynamic evaluations if arrow key registers