帮我写一个可以在网页运行的贪吃蛇代码
时间: 2024-05-14 07:19:07 浏览: 18
当然可以!以下是一个简单的HTML、CSS和JavaScript代码,实现了经典的贪吃蛇游戏。
HTML代码:
```html
<!DOCTYPE html>
<html>
<head>
<title>贪吃蛇游戏</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>贪吃蛇游戏</h1>
<canvas id="canvas" width="400" height="400"></canvas>
<script src="script.js"></script>
</body>
</html>
```
CSS代码:
```css
body {
text-align: center;
}
canvas {
border: 1px solid black;
}
```
JavaScript代码:
```javascript
// 定义画布和上下文
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
// 定义蛇的初始位置和长度
var snake = [{ x: 8, y: 8 }];
var snakeLength = 1;
// 定义食物的位置
var food = { x: 0, y: 0 };
// 定义游戏区域的大小
var gridSize = 20;
var gridSizeX = canvas.width / gridSize;
var gridSizeY = canvas.height / gridSize;
// 定义蛇的移动方向
var direction = "right";
// 定义游戏是否结束
var gameover = false;
// 画出游戏区域
function drawGrid() {
for (var x = 0; x <= gridSizeX; x++) {
ctx.moveTo(x * gridSize, 0);
ctx.lineTo(x * gridSize, canvas.height);
}
for (var y = 0; y <= gridSizeY; y++) {
ctx.moveTo(0, y * gridSize);
ctx.lineTo(canvas.width, y * gridSize);
}
ctx.strokeStyle = "lightgray";
ctx.stroke();
}
// 画出蛇和食物
function drawSnakeAndFood() {
// 画出蛇
ctx.fillStyle = "green";
for (var i = 0; i < snake.length; i++) {
ctx.fillRect(snake[i].x * gridSize, snake[i].y * gridSize, gridSize, gridSize);
}
// 画出食物
ctx.fillStyle = "red";
ctx.fillRect(food.x * gridSize, food.y * gridSize, gridSize, gridSize);
}
// 更新食物的位置
function updateFood() {
food.x = Math.floor(Math.random() * gridSizeX);
food.y = Math.floor(Math.random() * gridSizeY);
}
// 检查蛇是否吃到了食物
function checkFood() {
if (snake[0].x == food.x && snake[0].y == food.y) {
snakeLength++;
updateFood();
}
}
// 检查游戏是否结束
function checkGameover() {
// 撞墙
if (snake[0].x < 0 || snake[0].x >= gridSizeX || snake[0].y < 0 || snake[0].y >= gridSizeY) {
gameover = true;
}
// 撞到自己
for (var i = 1; i < snake.length; i++) {
if (snake[0].x == snake[i].x && snake[0].y == snake[i].y) {
gameover = true;
}
}
}
// 更新蛇的位置
function updateSnake() {
// 移动蛇头
if (direction == "right") {
snake.unshift({ x: snake[0].x + 1, y: snake[0].y });
} else if (direction == "left") {
snake.unshift({ x: snake[0].x - 1, y: snake[0].y });
} else if (direction == "up") {
snake.unshift({ x: snake[0].x, y: snake[0].y - 1 });
} else if (direction == "down") {
snake.unshift({ x: snake[0].x, y: snake[0].y + 1 });
}
// 删掉多余的蛇尾
if (snake.length > snakeLength) {
snake.pop();
}
}
// 游戏循环
function gameLoop() {
if (!gameover) {
// 清除画布
ctx.clearRect(0, 0, canvas.width, canvas.height);
// 画出游戏区域和蛇、食物
drawGrid();
drawSnakeAndFood();
// 更新蛇的位置和食物的位置
updateSnake();
checkFood();
// 检查游戏是否结束
checkGameover();
} else {
// 游戏结束
alert("Game over!");
clearInterval(interval);
}
}
// 开始游戏
updateFood();
var interval = setInterval(gameLoop, 100);
// 监听方向键
document.addEventListener("keydown", function(event) {
if (event.keyCode == 37 && direction != "right") {
direction = "left";
} else if (event.keyCode == 38 && direction != "down") {
direction = "up";
} else if (event.keyCode == 39 && direction != "left") {
direction = "right";
} else if (event.keyCode == 40 && direction != "up") {
direction = "down";
}
});
```
你可以将这些代码复制到相应的文件中,再在浏览器中打开HTML文件,就能够玩贪吃蛇游戏了。