貌似效率还可以提高写,
求优化指导~
这个是在线地址:http://bbs.hrbnu.edu.cn/game/zzzp/index.html<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script src="jquery.min.js" type="text/javascript"></script>
<title>无标题文档</title>
</head><body>
<div id="mianban"></div>
</body>
<script>var yx=new youxi();function youxi()
{
var fu=new Fu();
var total=0;
fu.zao();
fu.hun();
fu.xian(); var lists=new Array(10);
var func=new Array(); for(var i=0;i<10;i++)
{
lists[i]=new List();
lists[i].num=i;
}

for(var i=0;i<54;i++)
{
s=0;
func[i]=function(){
var ss=fu.fastart();
ss.h=s%10;
var l=lists[s%10].jie(ss);
var h=s%10;
ss.id.animate({top:17*l+"px",left:100*h+"px"},100,_ss);
ss.id.attr("h",h);
ss.id.attr("l",l);
s++;
};   
}
total=54;
$("#mianban").queue("aaa",func);
var _ss=function()
{
$("#mianban").dequeue("aaa");
}
_ss(); var dragging=false;
var templist;
var dx,dy,beginx,beginy,beginhnum;
$(document).mousedown(
function(event)
{
if(event && event.preventDefault)
{
event.preventDefault();
}else
{
window.event.returnValue = false; 
}
//var num=event.target.getAttributeNode("num").nodeValue;
var _id=event.target;
if(_id.tagName.toLowerCase()=="div")
{
if(typeof _id.getAttribute("h")!="object")
{
var h=_id.getAttributeNode("h").nodeValue;
var l=_id.getAttributeNode("l").nodeValue;
if(lists[h].nydm(l))
{
templist=new Templist();
beginhnum=h;
beginx=event.clientX;
beginy=event.clientY;
dx=h*100;
dy=l*17;
dragging=true;
var _card=new Array();
_card=lists[h].getlist(l);
templist.intolist(_card);
}


}else
{
func=new Array();
for(var i=0;i<10;i++)
{
s=0;
func[i]=function(){
var ss=fu.fanext();
ss.h=s%10;
var l=lists[s%10].jie(ss);
var h=s%10;
ss.id.animate({top:17*l+"px",left:100*h+"px"},100,_ss);
ss.id.attr("h",h);
ss.id.attr("l",l);
ss.id.css("z-index",l);
s++;
};   
}
$("#mianban").queue("aaa",func);
var _ss=function()
{
$("#mianban").dequeue("aaa");
}
_ss();
total=total+10;
}

}
}
)
$(document).mousemove(
function(event)
{
if(event && event.preventDefault)
{
event.preventDefault();
}else
{
window.event.returnValue = false; 
}
if(dragging)
{
templist.move(dx+event.clientX-beginx,dy+event.clientY-beginy);
}
}
)
$(document).mouseup(
function(event)
{
if(event && event.preventDefault)
{
event.preventDefault();
}else
{
window.event.returnValue = false; 
}
if(dragging)
{
var hnum=parseInt(event.clientX/100);
if(hnum<10)
{
if(templist.nfm(lists[hnum]))
{
lists[hnum].jiearray(templist.getlist());
lists[beginhnum].fanmz();
lists[hnum].xp(); }else
{
lists[beginhnum].jiearray(templist.getlist());

}
}else
{
lists[beginhnum].jiearray(templist.getlist());
}
templist=null;
dragging=false;
}


}

)
}
function Templist()
{
var tempcard=new Array(); this.intolist=function(_card)
{
tempcard=_card;
for(var i=0;i<tempcard.length;i++)
{
tempcard[i].id.css("z-index",i+104);
}
}
this.move=function(x,y)
{
for(var i=0;i<tempcard.length;i++)
{
tempcard[i].xians(x,i*17+y,false);
}
}
this.nfm=function(list)
{
if(list.pai.length!==0)
{
l=list.pai.length

if(list.pai[l-1].huase==tempcard[0].huase && list.pai[l-1].dian-1==tempcard[0].dian)
{
return true;
}else
{
return false;
}
}else{
return true;
}

}
this.getlist=function()
{
return tempcard;
}}function Card(huase,dian)
{
this.huase=huase;
this.dian=dian;
this.mian=0;
this.h=0;
this.l=0;
this.num=0;
this.fa=false;
this.id=null;

if(typeof this.fan!="function")
{
Card.prototype.fan=function(s)
{
this.id.css("background-image","url(card/"+this.dian+"-"+this.huase+".gif)");
}
Card.prototype.ndm=function(a,b)
{
if(this.mian===0)
{
return false;
}
}
Card.prototype.anxia=function(){

if(this.mian==1)
{
var zuobiao=new Array(2);
zuobiao[0]=this.h;
zuobiao[1]=this.l;
return zuobiao;
//return false;
}

}
Card.prototype.xian=function(){
var img =$('<div></div>');
if(this.mian==1 && this.fa==true)
{
img.css("background-image","url(card/"+this.dian+"-"+this.huase+".gif)");
}else
{
img.css("background-image","url(card/背面.gif)");
}
img.css("width","71px");
img.css("height","96px");
img.css("position","absolute");
img.css("top",this.y+"px");
img.css("left",this.x+"px");
$("#mianban").append(img);
this.id=img;
}
Card.prototype.xians=function(x,y,kind){
this.id.css("top",y);
this.id.css("left",x);
if(kind==true)
{
this.id.css("z-index",this.l);
}
this.id.attr("h",this.h);
this.id.attr("l",this.l);

}
Card.prototype.fan=function(x,y){
this.id.css("background-image","url(card/"+this.dian+"-"+this.huase+".gif)");
}
}
}
function List()
{
this.pai=new Array();
this.num=0;
var list;
if(typeof this.jie!="function")
{
List.prototype.jie=function(onecard)
{
onecard.l=this.pai.length;
this.pai.push(onecard);
return this.pai.length-1;
}

List.prototype.jiearray=function(somecard)
{
var h=this.pai.length;
for(var i=0;i<somecard.length;i++)
{
this.pai[h+i]=somecard[i];
this.pai[h+i].h=this.num;
this.pai[h+i].l=h+i;
this.xian();
}
}
List.prototype.xian=function()
{
this.pai[this.pai.length-1].xians(this.num*100,(this.pai.length-1)*17,true);
}
List.prototype.nydm=function(l)
{
if(typeof list!="object")
{
if(this.pai[l].mian===0)
{
return false;
}
list=this;
}
if(list.pai.length!==0)
{
l=parseInt(l);
if(l==list.pai.length-1)
{
list=false;
return true;
}else if(list.pai[l].huase==list.pai[l+1].huase && list.pai[l].dian==parseInt(list.pai[l+1].dian)+1)
{
return arguments.callee(l+1);
}else{
return false;
}
}else
{
return true;
}

}
List.prototype.getlist=function(a)
{
var _list=new Array();
_list=this.pai.slice(a,this.pai.length);
_end=this.pai.length-a;
for(var i=0;i<_end;i++)
{
this.pai.pop();
}
return _list;
}
List.prototype.fanmz=function()
{   
if(this.pai.length!==0)
{
this.pai[this.pai.length-1].mian=1;
this.pai[this.pai.length-1].fan();
}
}
List.prototype.kyxm=function()
{   
if(this.pai.length>=13)
{
if(this.pai[this.pai.length-1].dian==1)
{
for(var i=0;i<this.pai.length;i++)
{
if(this.pai[i].dian==13 && this.pai.length-i>=13)
{
var _begin=this.pai[i].l;
if(this.nydm(_begin))
{
return _begin;
}
}
}
}
}

return false;


}
List.prototype.xp=function()
{   var xpbegin=this.kyxm();
if(xpbegin!=false)
{
var longs=this.pai.length;
for(var i=xpbegin;i<longs;i++)
{
var _card=this.pai.pop();
_card.id.css("display","none");
}
}

}
}
}function Fu()
{
var num=0;
this.pai=new Array()
this.zao=function()
{
a=0;
for(s=0;s<4;s++)
{
for(i=1;i<=2;i++)
{
for(d=1;d<=13;d++)
{
this.pai[a]=new Card(i,d)
this.pai[a].mian=0;
this.pai[a].x=1000;
this.pai[a].y=500;
//this.pai[a].fa=true;
a++;
}
}
} }
this.hun=function()
{
this.pai.sort(randomsort);
for(i=0;i<54;i++)
{
this.pai[i].fa=true;
}

for(i=44;i<54;i++)
{
this.pai[i].mian=1;
}

function randomsort(a, b) {
return Math.random()>.5 ? -1:1;
}

}
this.fastart=function()
{
this.pai[0].fa=true;
num++;
return this.pai.shift();

//$.fxqueue("global").start();
}

this.fanext=function()
{
this.pai[0].mian=1;
this.pai[0].fa=true;
this.pai[0].fan(num);
num++;
return this.pai.shift();

//$.fxqueue("global").start();
}
this.xian=function()
{
for(var a=0;a<104;a++)
{
this.pai[a].num=a;
this.pai[a].xian(a);
}
}
}
</script>
</html>