用JS写一段贪吃蛇游戏中蛇不能反方向运动的代码。
时间: 2024-09-20 16:16:44 浏览: 51
在JavaScript中,我们通常会使用数组来表示蛇的身体,并通过设置蛇的方向变量来控制蛇的移动。为了防止蛇反向运动,我们可以在更新蛇的位置后检查新的位置是否与身体其他部分冲突,以及新方向与当前方向是否一致。以下是一个简单的例子:
```javascript
let snake = [[0, 0], [1, 0]]; // 蛇的初始位置和方向
let direction = { x: 0, y: 1 }; // 上方
function moveSnake() {
let head = snake[0].slice(); // 获取头部的副本
// 检查新位置与自身冲突
for (let bodyPart of snake.slice(1)) {
if (head[0] === bodyPart[0] && head[1] === bodyPart[1]) {
return; // 如果冲突,则停止
}
}
// 更新方向
if (direction.x === -1 && head[0] === snake[snake.length - 1][0]) { // 如果试图向左但头和尾巴重合
direction.y = direction.y === 1 ? -1 : 1; // 则改变垂直方向
} else if (direction.y === -1 && head[1] === snake[snake.length - 1][1]) { // 同理处理水平方向
direction.x = direction.x === 1 ? -1 : 1;
}
// 计算新的位置
head[0] += direction.x;
head[1] += direction.y;
// 将新的头部添加到蛇的身体,并删除尾部
snake.unshift(head);
snake.pop();
// 显示蛇的新位置
drawSnake(snake); // 这里假设drawSnake函数负责在屏幕上画蛇
}
// 使用定时器每帧运行moveSnake函数
setInterval(moveSnake, 1000 / 60); // 一般游戏帧率为60fps
```
在这个示例中,当尝试向左并碰到尾巴时,我们会自动切换到垂直方向,以此避免蛇往回走。当然,这只是一个基础版的处理,实际游戏中可能还需要考虑边界条件、食物位置等更多因素。
阅读全文