使用html+css+js写一段代码,实现贪吃蛇功能
时间: 2024-05-01 14:17:58 浏览: 139
好的,以下是使用HTML、CSS和JavaScript实现贪吃蛇游戏的代码:
HTML:
```
<!DOCTYPE html>
<html>
<head>
<title>Snake Game</title>
<style>
body {
margin:0;
padding:0;
}
#canvas {
background-color: #ddd;
display: block;
margin: 0 auto;
}
</style>
</head>
<body>
<canvas id="canvas"></canvas>
<script src="snake.js"></script>
</body>
</html>
```
CSS:
```
#canvas {
width: 400px;
height: 400px;
border: 1px solid #000;
}
```
JavaScript:
```
// 获取 canvas 元素和绘图上下文
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
// 定义贪吃蛇和食物的初始位置和大小
var snake = [{
x: 10,
y: 10
}, {
x: 9,
y: 10
}, {
x: 8,
y: 10
}];
var food = {
x: Math.floor(Math.random() * 20),
y: Math.floor(Math.random() * 20)
};
var direction = "right"; // 初始方向为右
// 画布格子的大小
var gridSize = 20;
// 定义画布中所有元素的颜色
var snakeColor = "#000";
var foodColor = "#f00";
var bgColor = "#ddd";
// 定义函数用来绘制一个方格
function drawGrid(x, y, color) {
ctx.fillStyle = color;
ctx.fillRect(x * gridSize, y * gridSize, gridSize, gridSize);
}
// 定义函数用来绘制整个画布
function draw() {
// 清空画布
ctx.fillStyle = bgColor;
ctx.fillRect(0, 0, canvas.width, canvas.height);
// 绘制贪吃蛇
snake.forEach(function (segment) {
drawGrid(segment.x, segment.y, snakeColor);
});
// 绘制食物
drawGrid(food.x, food.y, foodColor);
}
// 定义函数用来更新贪吃蛇的位置
function update() {
// 根据当前的方向计算新的蛇头位置
var head = {
x: snake[0].x,
y: snake[0].y
};
if (direction === "right") head.x += 1;
if (direction === "left") head.x -= 1;
if (direction === "up") head.y -= 1;
if (direction === "down") head.y += 1;
// 将新的蛇头加入到贪吃蛇的数组中
snake.unshift(head);
// 如果蛇头与食物的位置相同,就吃掉食物并重新生成一个新的食物
if (head.x === food.x && head.y === food.y) {
food = {
x: Math.floor(Math.random() * 20),
y: Math.floor(Math.random() * 20)
};
} else {
// 否则,移除贪吃蛇的尾部
snake.pop();
}
}
// 定义函数用来处理按键事件
function handleKeyDown(event) {
if (event.keyCode === 37 && direction !== "right") direction = "left";
if (event.keyCode === 38 && direction !== "down") direction = "up";
if (event.keyCode === 39 && direction !== "left") direction = "right";
if (event.keyCode === 40 && direction !== "up") direction = "down";
}
// 注册按键事件的监听器
document.addEventListener("keydown", handleKeyDown);
// 定时调用 update 和 draw 函数,实现动画效果
setInterval(function () {
update();
draw();
}, 100);
```
你可以将以上代码复制粘贴到三个文件中:一个是HTML文件,一个是CSS文件,一个是JavaScript文件。将这三个文件放在同一个目录下,然后在浏览器中打开HTML文件,就可以运行贪吃蛇游戏了。
阅读全文