javascript如何用表格写snake?
& 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;
我几天前做的。不懂请留言~!~!