用html,css,javascript写一个贪食蛇游戏的代码
时间: 2024-01-25 08:04:04 浏览: 143
好的,下面是一个基本的贪食蛇游戏的HTML、CSS和JavaScript代码:
HTML代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>贪食蛇游戏</title>
<style>
body {
margin: 0;
padding: 0;
}
canvas {
display: block;
margin: auto;
background-color: #EEE;
border: 1px solid #999;
}
</style>
</head>
<body>
<canvas id="canvas" width="400" height="400"></canvas>
<script src="snake.js"></script>
</body>
</html>
```
CSS代码:
```css
body {
margin: 0;
padding: 0;
}
canvas {
display: block;
margin: auto;
background-color: #EEE;
border: 1px solid #999;
}
```
JavaScript代码:
```javascript
// 获取canvas元素
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
// 定义贪食蛇的初始位置和方向
var snake = [{x: 200, y: 200}, {x: 190, y: 200}, {x: 180, y: 200}];
var direction = "right";
// 定义食物的位置
var food = {x: 0, y: 0};
// 定义游戏的状态
var gameover = false;
// 绘制贪食蛇和食物
function draw() {
// 清空canvas
ctx.clearRect(0, 0, canvas.width, canvas.height);
// 绘制贪食蛇
ctx.fillStyle = "green";
for (var i = 0; i < snake.length; i++) {
ctx.fillRect(snake[i].x, snake[i].y, 10, 10);
}
// 绘制食物
ctx.fillStyle = "red";
ctx.fillRect(food.x, food.y, 10, 10);
}
// 生成食物的位置
function generateFood() {
food.x = Math.floor(Math.random() * (canvas.width / 10)) * 10;
food.y = Math.floor(Math.random() * (canvas.height / 10)) * 10;
}
// 更新贪食蛇的位置
function update() {
// 计算贪食蛇的头部位置
var head = {x: snake[0].x, y: snake[0].y};
switch (direction) {
case "up":
head.y -= 10;
break;
case "down":
head.y += 10;
break;
case "left":
head.x -= 10;
break;
case "right":
head.x += 10;
break;
}
// 判断是否撞墙
if (head.x < 0 || head.x >= canvas.width || head.y < 0 || head.y >= canvas.height) {
gameover = true;
return;
}
// 判断是否吃到食物
if (head.x == food.x && head.y == food.y) {
// 生成新的食物
generateFood();
} else {
// 移除贪食蛇的尾部
snake.pop();
}
// 添加贪食蛇的头部
snake.unshift(head);
}
// 处理按键事件
document.addEventListener("keydown", function(event) {
switch (event.keyCode) {
case 37:
if (direction != "right") {
direction = "left";
}
break;
case 38:
if (direction != "down") {
direction = "up";
}
break;
case 39:
if (direction != "left") {
direction = "right";
}
break;
case 40:
if (direction != "up") {
direction = "down";
}
break;
}
});
// 游戏循环
function gameLoop() {
if (!gameover) {
update();
draw();
setTimeout(gameLoop, 100);
} else {
alert("游戏结束!");
}
}
// 初始化游戏
generateFood();
gameLoop();
```
这个代码实现了基本的贪食蛇游戏功能,包括贪食蛇的移动、食物的生成、游戏结束等。你可以根据自己的需求进行修改和扩展,添加更多的游戏功能和美化界面。
阅读全文