JS蜘蛛纸牌

用到了jquery框架,是第一版
<!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>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值