<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css">
</head>
<body>
<canvas id="gameCanvas" width="400" height="400"></canvas>
<script src="script.js"></script>
</body>
</html>
const canvas = document.getElementById('gameCanvas');
const ctx = canvas.getContext('2d');
const gridSize = 20;
let snake = [{ x: 10, y: 10 }];
let food = { x: 15, y: 10 };
let score = 0;
let dx = 1; // Vận tốc theo trục x (ban đầu đi sang phải)
let dy = 0; // Vận tốc theo trục y (ban đầu không di chuyển)
function drawSnake() {
snake.forEach(segment => {
ctx.fillStyle = 'green';
ctx.fillRect(segment.x * gridSize, segment.y * gridSize, gridSize - 2, gridSize - 2);
});
}
function drawFood() {
ctx.fillStyle = 'red';
ctx.fillRect(food.x * gridSize, food.y * gridSize, gridSize - 2, gridSize - 2);
}
function moveSnake() {
const head = { x: snake[0].x + dx, y: snake[0].y + dy };
snake.unshift(head); // Thêm đầu rắn mới vào đầu mảng
if (head.x === food.x && head.y === food.y) {
score++;
generateFood();
} else {
snake.pop(); // Loại bỏ đuôi rắn nếu không ăn thức ăn
}
}
document.addEventListener('keydown', event => {
switch (event.keyCode) {
case 37: // стрелка влево
dx = -1;
dy = 0;
break;
case 38: // стрелка вверх
dx = 0;
dy = -1;
break;
case 39: // стрелка вправо
dx = 1;
dy = 0;
break;
case 40: // стрелка вниз
dx = 0;
dy = 1;
break;
}
});
setInterval(() => {
ctx.clearRect(0, 0, canvas.width, canvas.height); // Xóa màn hình
drawSnake();
drawFood();
moveSnake();
}, 500); // Tốc độ làm mới (100ms)