const canvas = document.getElementById("gameCanvas");
const ctx = canvas.getContext("2d");
const scoreDisplay = document.getElementById("score");
// Настройки игрока (квадрата)
let target = {
x: 200,
y: 150,
size: 40,
speedX: 3,
speedY: 3
};
let score = 0;
// Функция генерации случайных чисел (чтобы отбрасывать квадрат при клике)
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
// Главный игровой цикл (обновление кадра)
function updateGame() {
// 1. Очищаем экран
ctx.clearRect(0, 0, canvas.width, canvas.height);
// 2. Двигаем квадрат
target.x += target.speedX;
target.y += target.speedY;
// 3. Отскок от левой и правой стены
if (target.x <= 0 || target.x + target.size >= canvas.width) {
target.speedX = -target.speedX;
}
// Отскок от верхней и нижней стены
if (target.y <= 0 || target.y + target.size >= canvas.height) {
target.speedY = -target.speedY;
}
// 4. Рисуем квадрат (пусть будет зеленым)
ctx.fillStyle = "#00ff00";
ctx.fillRect(target.x, target.y, target.size, target.size);
// Вызываем следующий кадр
requestAnimationFrame(updateGame);
}
// Отслеживаем клики мыши по canvas
canvas.addEventListener("click", function(event) {
// Получаем координаты клика относительно canvas
const rect = canvas.getBoundingClientRect();
const mouseX = event.clientX - rect.left;
const mouseY = event.clientY - rect.top;
// Проверяем, попал ли клик внутрь квадрата
if (mouseX >= target.x && mouseX <= target.x + target.size &&
mouseY >= target.y && mouseY <= target.y + target.size) {
// Попал! Увеличиваем счет
score++;
scoreDisplay.innerText = "Очки: " + score;
// Телепортируем квадрат в случайное место
target.x = getRandomInt(0, canvas.width - target.size);
target.y = getRandomInt(0, canvas.height - target.size);
// Немного увеличиваем скорость при каждом попадании
target.speedX += (target.speedX > 0 ? 0.5 : -0.5);
target.speedY += (target.speedY > 0 ? 0.5 : -0.5);
}
});
// Запуск игры
updateGame();