用js写一段贪吃蛇代码
时间: 2023-12-24 15:06:09 浏览: 97
贪吃蛇js代码
以下是一个简单的贪吃蛇游戏的实现示例:
```html
<!DOCTYPE html>
<html>
<head>
<title>贪吃蛇游戏</title>
<style>
canvas {
border: 1px solid #ddd;
}
</style>
</head>
<body>
<canvas id="canvas" width="400" height="400"></canvas>
<script>
// 获取画布对象
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
// 定义贪吃蛇的初始位置和速度
var snake = [{x: 10, y: 10}];
var dx = 10;
var dy = 0;
// 定义食物的初始位置
var food = {x: Math.floor(Math.random() * 40), y: Math.floor(Math.random() * 40)};
// 定义游戏循环
function gameLoop() {
// 更新贪吃蛇的位置
var head = {x: snake[0].x + dx, y: snake[0].y + dy};
snake.unshift(head);
// 判断是否吃到了食物
if (head.x == food.x && head.y == food.y) {
food = {x: Math.floor(Math.random() * 40), y: Math.floor(Math.random() * 40)};
} else {
snake.pop();
}
// 绘制游戏画面
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "green";
for (var i = 0; i < snake.length; i++) {
ctx.fillRect(snake[i].x * 10, snake[i].y * 10, 10, 10);
}
ctx.fillStyle = "red";
ctx.fillRect(food.x * 10, food.y * 10, 10, 10);
// 判断游戏是否结束
if (head.x < 0 || head.x >= 40 || head.y < 0 || head.y >= 40) {
alert("游戏结束!");
clearInterval(interval);
}
for (var i = 1; i < snake.length; i++) {
if (head.x == snake[i].x && head.y == snake[i].y) {
alert("游戏结束!");
clearInterval(interval);
break;
}
}
}
// 监听键盘事件,控制贪吃蛇的方向
document.addEventListener("keydown", function(event) {
if (event.code == "ArrowUp") {
dx = 0;
dy = -1;
} else if (event.code == "ArrowDown") {
dx = 0;
dy = 1;
} else if (event.code == "ArrowLeft") {
dx = -1;
dy = 0;
} else if (event.code == "ArrowRight") {
dx = 1;
dy = 0;
}
});
// 开始游戏循环
var interval = setInterval(gameLoop, 100);
</script>
</body>
</html>
```
这段代码使用 Canvas 画布实现了一个简单的贪吃蛇游戏,其中:
- `snake` 数组存储了贪吃蛇的每个身体部分的位置;
- `dx` 和 `dy` 分别表示贪吃蛇在 x 和 y 方向上的速度;
- `food` 对象表示食物的位置;
- `gameLoop` 函数是游戏的主循环,每次更新贪吃蛇的位置、绘制游戏画面、判断游戏是否结束等;
- `document.addEventListener` 监听键盘事件,根据按键控制贪吃蛇的方向;
- `setInterval` 开始游戏循环,每隔一定时间执行一次 `gameLoop` 函数。
阅读全文