基于htlm的网页小游戏贪吃蛇代码
时间: 2024-10-19 15:14:51 浏览: 13
基于HTML5的小游戏贪吃蛇通常会结合JavaScript来编写,因为HTML负责页面结构,而JavaScript则处理游戏逻辑和用户交互。下面是一个简单的示例,展示如何创建一个基础的贪吃蛇游戏的HTML和JavaScript部分:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>贪吃蛇</title>
<style>
#game-board {
position: relative;
width: 400px;
height: 400px;
border: 1px solid black;
}
.snake-body, .food {
position: absolute;
width: 10px;
height: 10px;
background-color: red;
}
</style>
</head>
<body>
<div id="game-board"></div>
<script>
// 初始化变量
let snake = [{x: 20, y: 20}, {x: 21, y: 20}]; // 蛇的身体
let food = {x: Math.floor(Math.random() * 39), y: Math.floor(Math.random() * 39)}; // 食物的位置
let direction = 'right'; // 走动方向
function moveSnake() {
// 根据方向更新蛇的位置
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[0].x > 39 || snake[0].x < 0 || snake[0].y > 39 || snake[0].y < 0) {
return 'Game Over';
}
// 检查是否吃到食物
if (snake[0].x === food.x && snake[0].y === food.y) {
food = {x: Math.floor(Math.random() * 39), y: Math.floor(Math.random() * 39)};
snake.push({x: snake[snake.length - 1].x, y: snake[snake.length - 1].y}); // 增加蛇身长度
} else {
snake.pop(); // 吃不到就移除尾巴
}
drawSnake();
}
function drawSnake() {
const board = document.getElementById('game-board');
board.innerHTML = '';
for (let i = 0; i < snake.length; i++) {
const square = document.createElement('div');
square.classList.add('snake-body');
square.style.left = `${snake[i].x * 10}px`;
square.style.top = `${snake[i].y * 10}px`;
board.appendChild(square);
}
const foodSquare = document.createElement('div');
foodSquare.classList.add('food');
foodSquare.style.left = `${food.x * 10}px`;
foodSquare.style.top = `${food.y * 10}px`;
board.appendChild(foodSquare);
}
// 添加键盘事件监听
document.addEventListener('keydown', (event) => {
switch (event.key) {
case 'ArrowUp':
direction = 'up';
break;
case 'ArrowDown':
direction = 'down';
break;
case 'ArrowRight':
direction = 'right';
break;
case 'ArrowLeft':
direction = 'left';
break;
}
});
// 开始游戏
setInterval(moveSnake, 100); // 每隔100毫秒更新一次
</script>
</body>
</html>
```
这个例子只是一个基本框架,实际游戏可能需要更复杂的逻辑来检测碰撞、保存和加载游戏状态等。如果你想要详细了解某个特定功能,或者有其他问题,请告诉我,我会给出更多帮助。
阅读全文