html js 写个贪吃蛇游戏
时间: 2023-09-05 20:09:12 浏览: 53
好的,这里是一个简单的 HTML + JavaScript 实现的贪吃蛇游戏示例代码,供您参考:
HTML 部分:
```html
<!DOCTYPE html>
<html>
<head>
<title>贪吃蛇游戏</title>
<style>
#game-board {
width: 300px;
height: 300px;
border: 1px solid #ccc;
position: relative;
}
.snake {
width: 10px;
height: 10px;
position: absolute;
background-color: #333;
}
.food {
width: 10px;
height: 10px;
position: absolute;
background-color: #f00;
}
</style>
</head>
<body>
<div id="game-board"></div>
<script src="snake.js"></script>
</body>
</html>
```
JavaScript 部分:
```javascript
// 获取游戏面板元素和大小
var gameBoard = document.getElementById("game-board");
var boardWidth = gameBoard.offsetWidth;
var boardHeight = gameBoard.offsetHeight;
// 定义贪吃蛇的初始状态和属性
var snake = {
body: [
{ x: 5, y: 5 },
{ x: 4, y: 5 },
{ x: 3, y: 5 },
],
direction: "right",
};
// 定义食物的初始位置
var food = { x: 10, y: 10 };
// 渲染贪吃蛇和食物
function render() {
// 清空游戏面板
gameBoard.innerHTML = "";
// 渲染贪吃蛇
snake.body.forEach(function (segment) {
var snakeElement = document.createElement("div");
snakeElement.className = "snake";
snakeElement.style.left = segment.x * 10 + "px";
snakeElement.style.top = segment.y * 10 + "px";
gameBoard.appendChild(snakeElement);
});
// 渲染食物
var foodElement = document.createElement("div");
foodElement.className = "food";
foodElement.style.left = food.x * 10 + "px";
foodElement.style.top = food.y * 10 + "px";
gameBoard.appendChild(foodElement);
}
// 根据方向移动贪吃蛇
function move() {
// 根据方向计算新头部的坐标
var head = snake.body[0];
var newHead;
if (snake.direction === "right") {
newHead = { x: head.x + 1, y: head.y };
} else if (snake.direction === "left") {
newHead = { x: head.x - 1, y: head.y };
} else if (snake.direction === "up") {
newHead = { x: head.x, y: head.y - 1 };
} else if (snake.direction === "down") {
newHead = { x: head.x, y: head.y + 1 };
}
// 将新头部加入到贪吃蛇的身体中
snake.body.unshift(newHead);
// 如果贪吃蛇吃到了食物,则生成新的食物
if (newHead.x === food.x && newHead.y === food.y) {
food.x = Math.floor(Math.random() * boardWidth / 10);
food.y = Math.floor(Math.random() * boardHeight / 10);
} else {
// 如果贪吃蛇没有吃到食物,则移除尾部
snake.body.pop();
}
}
// 监听键盘事件,改变贪吃蛇的方向
document.addEventListener("keydown", function (event) {
if (event.keyCode === 37 && snake.direction !== "right") {
snake.direction = "left";
} else if (event.keyCode === 38 && snake.direction !== "down") {
snake.direction = "up";
} else if (event.keyCode === 39 && snake.direction !== "left") {
snake.direction = "right";
} else if (event.keyCode === 40 && snake.direction !== "up") {
snake.direction = "down";
}
});
// 定时器循环
setInterval(function () {
move();
render();
}, 100);
```
这个示例代码实现的贪吃蛇游戏比较简单,但是已经包含了基本的游戏逻辑和交互。您可以根据自己的需求对其进行扩展和优化。