javascript如何用表格写snake?

& lthtml & gt

& lthead & gt

& lt脚本& gt

//创建地图

功能?map(){

this.width = 800//不用单位,方便计算。

this.height = 400

this.color = " # cccccc

this.position = " absolute

这个。_ map = null

this.display=function(){

如果(这个。_map==null){

这个。_ map = document . createelement(' div ');

这个。_ map . style . width = this . width+' px ';

这个。_ map . style . height = this . height+' px ';

这个。_ map . style . position = this . position;

这个。_ map . style . background color = this . color;

document . getelementsbytagname(' body ')[0]。appendChild(这个。_ map);

}

}

}

//创建食物

功能?食物(){

this.width = 20//食物的宽度

this.height = 20

this.color = " # 299BDF

this.position = " absolute

this . x = 0;

this . y = 0;

这个。_ food = null

this.display=function(){

如果(这个。_food==null){

这个。_ food = document . createelement(' div ');

这个。_ food . style . width = this . width+' px ';

这个。_ food . style . height = this . height+' px ';

这个。_ food . style . background color = this . color;

这个。_ food . style . position = this . position;

地图。_map.appendChild(this。_ food);//在地图上添加食物

}

this . x = math . floor(math . random()* 39);

this . y = math . floor(math . random()* 19);

这个。_ food . style . left =(this . x * this . width)+' px ';

这个。_ food . style . top =(this . y * this . height)+' px ';

}

}

//创建一条蛇

功能?slike(){//由几个方块组成,

this.width = 20

this.height = 20

this.direc = ' right

this.position = " absolute

this . count = 0;

//初始化蛇,舌头是红色的,蛇身是绿色的,第四个参数代表创建的蛇节点对象。

this.body=[[3,2,' red ',null],[2,2,' green ',null],[1,2,' green ',null],[0,2,' green ',null];

this.display=function(){

var?body _ len = this . body . length;

for(var?I = 0;我& ltbody _ leni++){

If(this.body[i][3]==null){//如果第三个元素为null,则创建一个snake。

this . body[I][3]= document . createelement(' div ');

this . body[I][3]. style . width = this . width+' px ';

this . body[I][3]. style . height = this . height+' px ';

this . body[I][3]. style . background color = this . body[I][2];

地图。_ map . appendchild(this . body[I][3]);

}

this . body[I][3]. style . position = this . position;

this . body[I][3]. style . left = this . body[I][0]* this . width;

this . body[I][3]. style . top = this . body[I][1]* this . height;

}

}

//让蛇动起来。

this.move=function(){

//把第四个位置让给第三个,以此类推。

for(var?I = this . body . length-1;我& gt0;我- ){

this . body[I][0]= this . body[I-1][0];

this . body[I][1]= this . body[I-1][1];

}

switch(this.direc){?

案子?左侧':

this . body[0][0]= this . body[0][0]-1;

打破;

案子?顶部':

this . body[0][1]= this . body[0][1]-1;

打破;

案子?“右”:

this . body[0][0]= this . body[0][0]+1;

打破;

案子?底部':

this . body[0][1]= this . body[0][1]+1;

打破;

}

//吃食物

if(this . body[0][0]= = food . x & amp;& ampthis . body[0][1]= = food . y){

food.display()。//让食物坐标再变一次。

var?x = this . body[this . body . length-1][0];

var?y = this . body[this . body . length-1][1];

this.body.push([x,y,' green ',null]);

this . count++;

}

//撞墙

if(this . body[0][0]= = 40 | | this . body[0][0]= =-1 | | this . body[0][1]=-1 | | this . body[0][1]= = 20){

alert(‘游戏?结束了?-_-?'+' get '+this . count+' integral ');

clearTimeout(定时器);

回归?假的;

}

//我自己吃了

var?len = this . body . length;

for(var?I = 1;我& ltleni++){

if(this . body[0][0]= = this . body[I][0]& amp;& ampthis . body[0][1]= = this . body[I][1]){

alert(‘游戏?结束了?-_-?'+' get '+this . count+' integral ');

clearTimeout(定时器);

回归?假的;

}

}

this . display();

}

this.setKey=function(code){

开关(代码){

案子?37:

this.direc = ' left

打破;

案子?38:

this.direc = ' top

打破;

案子?39:

this.direc = ' right

打破;

案子?40:

this.direc = ' bottom

打破;

}

}

}

var?地图;

var?食物;

var?偷偷摸摸;

var?计时器;

window.onload=function(){

地图=新?map();

map.display()。

食物=新?食物();

food.display()。

潜行=新?偷偷摸摸;

slike . display();

文档。onkeyup = function(event){//当键被抬起时设置箭头键。

var?代码;

if(window.event){

code = window . event . key code;

}否则{

code = event.keyCode

}?

slike . setkey(代码);

}

timer = setInterval(' slike . move()',100);

}

& lt/script & gt;

& lt/head & gt;

& ltbody & gt

& lt/body & gt;

& lt/html & gt;

我几天前做的。不懂请留言~!~!