Current directory: /home/klas4s23/domains/585455.klas4s23.mid-ica.nl/public_html/Gastenboek/uploads
import { update as updateSnake, draw as drawSnake, SNAKE_SPEED, getSnakeHead, snakeIntersection, showGameOverMessage } from './snake.js';
import { update as updateFood, draw as drawFood, getScore } from './food.js';
import { outsideGrid } from './grid.js';
let lastRenderTime = 0;
let gameIsRunning = false;
const startButton = document.getElementById('start-button');
const startScreen = document.getElementById('start-screen');
const gameBoard = document.getElementById('game-board');
const scoreElement = document.getElementById('score');
let score = 0;
let highscore = getCookie();
let snake;
let food;
let gameOver = false;
startButton.addEventListener('click', startGame);
function startGame() {
startScreen.style.display = 'none';
gameIsRunning = true;
gameOver = false;
snake = createSnake();
food = createFood();
score = 0;
scoreElement.style.opacity = '0.5';
scoreElement.style.position = 'absolute';
scoreElement.style.top = '10px';
scoreElement.style.right = '10px';
scoreElement.textContent = `Score: ${score}`;
const gameOverMessage = document.getElementById('game-over-message');
gameOverMessage.textContent = '';
window.requestAnimationFrame(main);
}
function main(currentTime) {
if (!gameIsRunning) return;
if (gameOver) {
showGameOverMessage(startGame);
gameIsRunning = false;
setTimeout(function () {
location.reload(); // Refresh the page after 2 seconds
}, 2000);
return;
}
const secondsSinceLastRender = (currentTime - lastRenderTime) / 1000;
if (secondsSinceLastRender < 1 / SNAKE_SPEED) {
window.requestAnimationFrame(main);
return;
}
lastRenderTime = currentTime;
update();
draw();
updateScore();
window.requestAnimationFrame(main);
}
function update() {
updateSnake(snake);
updateFood(snake);
checkDeath(snake);
updateScore();
}
function draw() {
gameBoard.innerHTML = '';
drawSnake(gameBoard, snake);
drawFood(gameBoard, food);
}
function checkDeath(snake) {
const head = getSnakeHead(snake);
gameOver = outsideGrid(head) || snakeIntersection(snake);
}
function resetGame() {
gameIsRunning = false;
startScreen.style.display = 'block';
scoreElement.style.position = 'absolute';
scoreElement.style.top = '50%';
scoreElement.style.left = '50%';
scoreElement.style.transform = 'translate(-50%, -50%)';
const gameOverMessage = document.getElementById('game-over-message');
gameOverMessage.textContent = '';
}
function createSnake() {
return [
{ x: 3, y: 3 },
];
}
function createFood() {
return { x: 8, y: 8 };
}
function updateScore() {
score = getScore();
scoreElement.textContent = `Score: ${score}`;
setHighscore();
}
function setHighscore() {
if (score > highscore) {
highscore = score;
setCookie(score);
}
document.getElementById('highscore').innerHTML = `Highscore: ${highscore}`;
}
function setCookie(cvalue) {
const d = new Date();
d.setTime(d.getTime() + (30*24*60*60*1000));
let expires = "expires="+ d.toUTCString();
document.cookie = "highscore=" + cvalue + ";" + expires + ";path=/";
}
function getCookie () {
let name = "highscore=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for (let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}