以下是一个简单的联机贪吃蛇游戏的 JavaScript 代码示例(使用 HTML5 的 Canvas 绘制):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>联机贪吃蛇</title>
<style>
canvas {
border: 1px solid black;
}
</style>
</head>
<body>
<canvas id="gameCanvas" width="400" height="400"></canvas>
<script>
// 定义蛇的结构
function Snake() {
this.body = [{ x: 200, y: 200 }];
this.direction = 'right';
}
Snake.prototype.move = function () {
let head = { ...this.body[0] };
switch (this.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;
}
this.body.unshift(head);
this.body.pop();
}
// 定义食物
function Food() {
this.x = Math.floor(Math.random() * 40) * 10;
this.y = Math.floor(Math.random() * 40) * 10;
}
// 游戏逻辑
let snake = new Snake();
let food = new Food();
function draw() {
let canvas = document.getElementById('gameCanvas');
let ctx = canvas.getContext('2d');
ctx.clearRect(0, 0, canvas.width, canvas.height);
// 绘制蛇
ctx.fillStyle = 'green';
snake.body.forEach(segment => {
ctx.fillRect(segment.x, segment.y, 10, 10);
});
// 绘制食物
ctx.fillStyle = 'red';
ctx.fillRect(food.x, food.y, 10, 10);
}
function update() {
snake.move();
if (snake.body[0].x === food.x && snake.body[0].y === food.y) {
snake.body.push({ ...snake.body[snake.body.length - 1] });
food = new Food();
}
}
function gameLoop() {
update();
draw();
setTimeout(gameLoop, 100);
}
document.addEventListener('keydown', (event) => {
switch (event.key) {
case 'ArrowUp':
snake.direction = 'up';
break;
case 'ArrowDown':
snake.direction = 'down';
break;
case 'ArrowLeft':
snake.direction = 'left';
break;
case 'ArrowRight':
snake.direction = 'right';
break;
}
});
gameLoop();
</script>
</body>
</html>
这个示例实现了一个简单的贪吃蛇游戏的基本逻辑,包括蛇的移动、食物的生成和碰撞检测。但要注意,这只是一个基础的示例,要实现真正的联机功能,还需要涉及到网络通信部分,例如使用 WebSockets 来让多个玩家实时交互。
优势:
应用场景:
可能遇到的问题及解决方法:
setTimeout
的时间间隔设置不合理,可以调整时间间隔来优化。领取专属 10元无门槛券
手把手带您无忧上云