如何用jquery写贪吃蛇
时间: 2023-12-31 08:07:10 浏览: 24
由于贪吃蛇是一个比较复杂的游戏,需要涉及到许多细节的处理,因此写贪吃蛇需要一定的前端开发经验。下面是一个简单的贪吃蛇示例,使用jQuery实现:
HTML代码:
```html
<!DOCTYPE html>
<html>
<head>
<title>贪吃蛇</title>
<meta charset="utf-8">
<style>
#game {
width: 500px;
height: 500px;
border: 1px solid #000;
position: relative;
}
.snake {
width: 20px;
height: 20px;
background-color: green;
position: absolute;
}
.food {
width: 20px;
height: 20px;
background-color: red;
position: absolute;
}
</style>
</head>
<body>
<div id="game"></div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="snake.js"></script>
</body>
</html>
```
JavaScript代码:
```javascript
$(function() {
// 创建游戏区域
var $game = $('#game');
var gameWidth = $game.width();
var gameHeight = $game.height();
// 创建蛇
var snake = [
{x: 3, y: 1},
{x: 2, y: 1},
{x: 1, y: 1}
];
// 创建食物
var food;
// 初始化游戏
function init() {
// 清空游戏区域
$game.empty();
// 创建蛇
$.each(snake, function(index, value) {
var $snake = $('<div>').addClass('snake').css({
left: value.x * 20 + 'px',
top: value.y * 20 + 'px'
});
$game.append($snake);
});
// 创建食物
createFood();
}
// 创建食物
function createFood() {
var x = Math.floor(Math.random() * (gameWidth / 20));
var y = Math.floor(Math.random() * (gameHeight / 20));
food = {x: x, y: y};
var $food = $('<div>').addClass('food').css({
left: x * 20 + 'px',
top: y * 20 + 'px'
});
$game.append($food);
}
// 移动蛇
function move() {
var head = snake[0];
var tail = snake.pop();
var newHead;
switch(direction) {
case 'up':
newHead = {x: head.x, y: head.y - 1};
break;
case 'down':
newHead = {x: head.x, y: head.y + 1};
break;
case 'left':
newHead = {x: head.x - 1, y: head.y};
break;
case 'right':
newHead = {x: head.x + 1, y: head.y};
break;
}
// 判断是否撞墙
if(newHead.x < 0 || newHead.x >= gameWidth / 20 || newHead.y < 0 || newHead.y >= gameHeight / 20) {
clearInterval(timer);
alert('游戏结束!');
return;
}
// 判断是否吃到食物
if(newHead.x == food.x && newHead.y == food.y) {
snake.unshift(tail);
createFood();
}
// 判断是否撞到自己
for(var i = 1; i < snake.length; i++) {
if(newHead.x == snake[i].x && newHead.y == snake[i].y) {
clearInterval(timer);
alert('游戏结束!');
return;
}
}
// 添加新头
snake.unshift(newHead);
// 更新蛇的位置
$.each(snake, function(index, value) {
$('.snake').eq(index).css({
left: value.x * 20 + 'px',
top: value.y * 20 + 'px'
});
});
}
// 监听键盘事件
var direction = 'right';
$(document).on('keydown', function(e) {
switch(e.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;
}
});
// 开始游戏
init();
var timer = setInterval(move, 200);
});
```
以上代码仅供参考,如果需要实现更完整、更复杂的贪吃蛇游戏,还需要根据实际需求进行调整和优化。