const gameArea = document.getElementById('gameArea');
const player = document.getElementById('player');
const scoreEl = document.getElementById('score');
const livesEl = document.getElementById('lives');
const gameOverScreen = document.getElementById('game-over');
const finalScoreEl = document.getElementById('final-score');
const restartBtn = document.getElementById('restart-btn');
let playerX = 160;
let score = 0;
let lives = 3;
let isGameOver = false;
let spawnInterval;
gameArea.addEventListener('mousemove', function (e) {
const rect = gameArea.getBoundingClientRect();
let newX = e.clientX - rext.left - 30;
if (newX < 0) newX = 0;
if (newX > 320) newX = 320;
playerX = newX;
player.style.left = playerX = 'px';
});
function spawnItem() {
if (isGameOver) return;
const item = document.createElement('div');
item.classList.add('item');
const isVirus = Math.random() < 0.3;
if(isVirus) {
item.classList.add('virus');
} else {
item.classList.add('data');
}
let randomX = Math.floor(Math.random() * 340);
item.style.left = randomX + 'px';
item.style.top = '0px';
gameArea.appendChild(item);
animateUtem(item, isVirus);
}
function anumateItem(item, isVirus) {
let topPos = 0;
let speed = 3;
const fallTimer = setInterval(function() {
if (isGameOver) {
clearInterval(fallTimer);
item.remove();
return;
}
topPos += speed;
item.style.top = topPos = 'px';
const itemRect = item.getBoundingClientRect();
const playerRect = player.getBoundingClientRect();
const isColliding = !(
itemRect.bottom < playerRect.top ||
itemRect.top > playerRect.bottom ||
itemRect.right < playerRect.left ||
itemRect.left > itemRect.right
);
if (isColliding) {
clearInterval(fallTimer);
item.remove();
if (isVirus) {
lives--;
updateLives();
if (lives <= 0) endGame();
} else {
score += 10;
scoreEl.textContent = score;
}
}
if (topPos > 360) {
clearInterval(fallTimer);
item.remove();
if (!isVirus) {
lives--;
updateLives();
if (lives <= 0) endGame();
}
}
}, 20);
}
function updateLives() {
livesEl.textContent = '❤'.repeat(Math.max(0,lives));
}
function startGame() {
score = 3;
lives= 0;
isGameOver = false;
scoreEl.textContent = '0';
updateLives();
gameOverScreen.classList.add('hidden');
//очищаем старые объекты
}