使用js做出贪吃蛇
时间: 2023-07-20 18:20:19 浏览: 60
JS做贪吃蛇
好的,下面是使用 JavaScript 实现贪吃蛇游戏的简单步骤:
1. 创建 HTML 页面,定义游戏区域,绘制贪吃蛇和食物。
2. 在 JavaScript 中定义贪吃蛇对象,包括位置、长度、方向等属性和方法。
3. 实现键盘事件监听,根据按键改变贪吃蛇方向。
4. 定义游戏运行函数,不断更新贪吃蛇位置,检测是否吃到食物或撞墙,更新分数和长度。
5. 实现游戏结束条件,当贪吃蛇撞墙或撞到自己时,游戏结束。
6. 添加重新开始按钮,点击后重新开始游戏。
下面是一个简单的实现,仅供参考:
HTML 页面:
```html
<!DOCTYPE html>
<html>
<head>
<title>贪吃蛇游戏</title>
<style>
#gameArea {
width: 600px;
height: 400px;
border: 1px solid black;
position: relative;
}
#snake {
width: 10px;
height: 10px;
background-color: black;
position: absolute;
}
#food {
width: 10px;
height: 10px;
background-color: red;
position: absolute;
}
</style>
</head>
<body>
<div id="gameArea">
<div id="snake"></div>
<div id="food"></div>
</div>
<button onclick="restart()">重新开始</button>
<script src="snake.js"></script>
</body>
</html>
```
JavaScript 文件 snake.js:
```javascript
// 定义变量
var gameArea = document.getElementById("gameArea");
var snakeBody = document.getElementById("snake");
var food = document.getElementById("food");
var score = 0;
var speed = 200;
var direction = "right";
var snake = {
body: [{x: 0, y: 0}],
length: 1
};
// 监听键盘事件
document.onkeydown = function(event) {
switch (event.keyCode) {
case 37:
direction = "left";
break;
case 38:
direction = "up";
break;
case 39:
direction = "right";
break;
case 40:
direction = "down";
break;
}
}
// 游戏运行函数
function runGame() {
// 更新贪吃蛇位置
var head = snake.body[0];
switch (direction) {
case "left":
snake.body.unshift({x: head.x - 10, y: head.y});
break;
case "up":
snake.body.unshift({x: head.x, y: head.y - 10});
break;
case "right":
snake.body.unshift({x: head.x + 10, y: head.y});
break;
case "down":
snake.body.unshift({x: head.x, y: head.y + 10});
break;
}
snakeBody.style.left = snake.body[0].x + "px";
snakeBody.style.top = snake.body[0].y + "px";
// 判断是否吃到食物
if (snake.body[0].x === food.offsetLeft && snake.body[0].y === food.offsetTop) {
food.style.left = Math.floor(Math.random() * (gameArea.offsetWidth / 10)) * 10 + "px";
food.style.top = Math.floor(Math.random() * (gameArea.offsetHeight / 10)) * 10 + "px";
score++;
snake.length++;
speed -= 10;
}
// 判断是否撞墙或撞到自己
if (snake.body[0].x < 0 || snake.body[0].x >= gameArea.offsetWidth ||
snake.body[0].y < 0 || snake.body[0].y >= gameArea.offsetHeight ||
checkCollision()) {
clearInterval(timer);
alert("游戏结束,您的得分是:" + score);
}
// 更新分数显示
document.title = "贪吃蛇游戏,得分:" + score;
// 更新贪吃蛇长度
if (snake.body.length > snake.length) {
snake.body.pop();
}
}
// 检测是否撞到自己
function checkCollision() {
for (var i = 1; i < snake.body.length; i++) {
if (snake.body[i].x === snake.body[0].x && snake.body[i].y === snake.body[0].y) {
return true;
}
}
return false;
}
// 重新开始游戏
function restart() {
snake = {
body: [{x: 0, y: 0}],
length: 1
};
direction = "right";
score = 0;
speed = 200;
snakeBody.style.left = 0;
snakeBody.style.top = 0;
food.style.left = Math.floor(Math.random() * (gameArea.offsetWidth / 10)) * 10 + "px";
food.style.top = Math.floor(Math.random() * (gameArea.offsetHeight / 10)) * 10 + "px";
document.title = "贪吃蛇游戏,得分:" + score;
clearInterval(timer);
timer = setInterval(runGame, speed);
}
// 开始游戏
var timer = setInterval(runGame, speed);
```
这是一个简单的贪吃蛇游戏实现,您可以根据自己的需求和技能水平进行扩展和优化。
阅读全文