日期:2014-05-20  浏览次数:20733 次

js编写的贪吃蛇,无论怎么改变div的top、left,蛇和食物在map显式位置始终不变
这是小弟的代码
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>snake</title>
<script language="javascript" type="text/javascript">

var mapLength=500;
var snakeLength=10;
var foodLength=10;
var snakes=new Array();
var stepX=0;//大于零代表向正方向
var stepY=0;//大于零代表向正方向
var step=5;//每步的大小
var goStreate=true;

//创建地图
function createMap(){
var map = document.createElement("div");
map.id = "map";
map.position="absolute";
map.style.backgroundColor="#7d8894";
map.style.width=mapLength;
map.style.height=mapLength;
document.body.appendChild(map);
createSnake();
createFood();
}

//创建蛇
function createSnake(){
var map =document.getElementById("map");
var snake = document.createElement("div");
snake.id="snake";
snake.position="absolute";
snake.style.width=snakeLength;
snake.style.height=snakeLength;
snake.style.backgroundColor="red";
//snake.style.top=Math.random()*(mapLength-snakeLength);
//snake.style.left=Math.random()*(mapLength-snakeLength);
snake.style.top=1000;
snake.style.left=500;
alert("snake top"+snake.style.top);
alert("snake top"+snake.style.left);
map.appendChild(snake);
}

//创建食物
function createFood(){
var map = document.getElementById("map");
var food = document.createElement("div");
food.id = "food";
food.position = "absolute";
food.style.width=foodLength;
food.style.height=foodLength;
food.style.backgroundColor="blue";
//food.style.top=Math.random()*(mapLength-foodLength);
//food.style.left=Math.random()*(mapLength-foodLength);
food.style.top=500;
food.style.left=1000;
alert("food top"+food.style.top);
alert("food top"+food.style.left);
map.appendChild(food);
}
//键盘事件监听
function keyEvent(){
alert("键盘事件"+event.keyCode);
switch(event.keyCode){
case 37:
stepX = -step;
stepY =0;
break;
case 38:
stepX = 0;
stepY =step;
break;
case 39:
stepX = step;
stepY =0;
break;
case 40:
stepX = 0;
stepY =-step;
break;
}
}
//蛇移动
function snakeMove(){
var newX= parseInt(snake.style.left)+stepX;
var newY = parseInt(snake.style.top)+stepY;
for(var i=snake.length-1;i>0;i--){
snakes[i].style.left=snakes[i-1].style.left;
snakes[i].style.top=snakes[i-1].style.top;
}
snakes[0].style.left=newX;
snakes[0].style.top=newY;
window.setTimeout("snakeMove()",1000);
}
//键盘触发事件
document.onkeydown=keyEvent;
//检测是否遇到食物
function checkedFood(){
var snake=document.getElementById("snake").value;
var food=document.getElementById("food").value;
var sX=parseFloat(snake.style.left)+snakeLength/2;
var sY=parseFloat(snake.style.left)+snakeLength/2;
var fX=parseFloat(food.style.left)+foodLength/2;
var fY=parseFloat(food.style.left)+foodLength/2;
var lenth=2*Math.sqrt(Math.pow(sX-fX,2)+Math.pow(sY-fY,2));
if(lenth<snakeLength){
return true;
}
return false;
}
//吃食物
function snakeGrow(){
var snake=document.getElementById("snake").value;
var food=document.getElementById("food").value;

food.parentNode.removeChild(food);
var newSnake = snake.cloneNode(false);
snakes[snakes.length]=newSnake;