用js写一个贪吃蛇代码,并可以用于微信小程序上
时间: 2024-05-05 14:20:20 浏览: 107
好的,以下是使用JS编写贪吃蛇游戏的简单代码:
HTML:
```
<body>
<canvas id="canvas"></canvas>
</body>
```
JS:
```
// 定义画布
let canvas = document.querySelector('#canvas');
let ctx = canvas.getContext('2d');
// 定义蛇的初始状态
let snake = {
body: [
{ x: 2, y: 0 },
{ x: 1, y: 0 },
{ x: 0, y: 0 }
],
direction: 'right'
};
// 定义食物的初始状态
let food = {
x: Math.floor(Math.random() * 20),
y: Math.floor(Math.random() * 20)
};
// 定义计时器
let timer = null;
// 定义游戏状态
let isGameOver = false;
// 画出蛇和食物
function draw() {
// 清空画布
ctx.clearRect(0, 0, canvas.width, canvas.height);
// 画蛇
ctx.fillStyle = 'rgb(0, 200, 0)';
snake.body.forEach((segment) => {
ctx.fillRect(segment.x * 20, segment.y * 20, 20, 20);
});
// 画食物
ctx.fillStyle = 'rgb(200, 0, 0)';
ctx.fillRect(food.x * 20, food.y * 20, 20, 20);
}
// 让蛇移动
function update() {
// 移动蛇的身体
for (let i = snake.body.length - 1; i > 0; i--) {
snake.body[i].x = snake.body[i - 1].x;
snake.body[i].y = snake.body[i - 1].y;
}
// 移动蛇的头部
if (snake.direction === 'right') {
snake.body[0].x += 1;
} else if (snake.direction === 'down') {
snake.body[0].y += 1;
} else if (snake.direction === 'left') {
snake.body[0].x -= 1;
} else if (snake.direction === 'up') {
snake.body[0].y -= 1;
}
// 判断是否吃到食物
if (snake.body[0].x === food.x && snake.body[0].y === food.y) {
snake.body.push({ ...snake.body[snake.body.length - 1] });
food.x = Math.floor(Math.random() * 20);
food.y = Math.floor(Math.random() * 20);
}
// 判断是否游戏结束
if (snake.body[0].x < 0 || snake.body[0].x >= 20 || snake.body[0].y < 0 || snake.body[0].y >= 20) {
isGameOver = true;
}
for (let i = 1; i < snake.body.length; i++) {
if (snake.body[0].x === snake.body[i].x && snake.body[0].y === snake.body[i].y) {
isGameOver = true;
}
}
}
// 监听键盘事件
document.addEventListener('keydown', (event) => {
if (event.key === 'ArrowRight' && snake.direction !== 'left') {
snake.direction = 'right';
} else if (event.key === 'ArrowDown' && snake.direction !== 'up') {
snake.direction = 'down';
} else if (event.key === 'ArrowLeft' && snake.direction !== 'right') {
snake.direction = 'left';
} else if (event.key === 'ArrowUp' && snake.direction !== 'down') {
snake.direction = 'up';
}
});
// 主循环
function loop() {
update();
draw();
if (!isGameOver) {
timer = setTimeout(loop, 100);
}
}
// 开始游戏
loop();
```
以上代码可以在微信小程序中使用,只需将HTML文件中的`<canvas>`替换为`<canvas style="width: 100%; height: 500rpx;" canvas-id="myCanvas"></canvas>`,并修改JS文件中获取画布、画蛇、画食物、监听键盘事件等部分代码即可。
阅读全文