HTML用JavaScript写一个把图片组织架构一般怎么填写成类似斗地主扑克牌的一张压一张的网页

用Javascript往一个Div中插入一张图片 - CSDN博客
用Javascript往一个Div中插入一张图片
HTML5火了,JS也得炼一炼
用Javascript往一个Div中插入一张图片
&meta http-equiv=&content-type& content=&text/ charset=utf-8&&
&script type=&text/javascript&&
window.onload = function (){
var bigImg = document.createElement(&img&);
//创建一个img元素
bigImg.src=&/img/baidu_sylogo1.gif&;
//给img元素的src属性赋值
//bigImg.width=&320&;
//320个像素 不用加px
var myDiv = document.getElementById('myDiv'); //获得dom对象
myDiv.appendChild(bigImg);
//为dom添加子元素img
&div id=&myDiv& style=&border:1px solid #width:320height:160&&&/div&
本文已收录于以下专栏:
相关文章推荐
    {
        width:100
        height:100
        }
  &#1...
注意,切换方法overridePendingTransition只能在startActivity和finish方法之后调用。
第一个参数为第一个Activity离开时的动画,第二参数为所进入的Act...
HTML代码:
产品图组:
图推荐尺寸:376*376
自学前端,没有后台发送数据,自己找了个将图片对象存放在数组中。
之前也有了解过网页爬虫,但是只是按照网上教程练习过,今天想自己写一个爬图片的爬虫,一边写一边查资料,但是只是做了单页的爬虫,后续会继续学习做广度或深度的全网页的爬虫。
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)HTML5版单机斗地主 - CSDN博客
HTML5版单机斗地主
本文中所使用的JControls、JFunction和ResourceData在前面的《学习HTML5开发RPG游戏》中都有提到,这里不再重述,详细情况,大家可以查看本文最后的源码。
1、初始化界面及游戏
var DJDDZ={};
DJDDZ.Init=function(canvasID){
JFunction.PreLoadData(GMain.URL).done(function () {
JMain.JForm=new JControls.Form(GMain.Size,canvasID).setBGImage(ResourceData.Images.bg1);
JMain.JForm.clearControls();
GMain.BtnPanel=new JControls.Object({x:100,y:280},{width:600,height:50});//用于显示游戏控制按钮
GMain.PokerPanel0=new GControls.PokerPanel({x:100,y:5},{width:600,height:120},0,0);//用于显示底牌,显示对象存储在GMain.Poker[0]
GMain.PokerPanel1=new GControls.PokerPanel({x:200,y:355},{width:400,height:120},1,20);//用于显示自己的牌,显示对象存储在GMain.Poker[1]
GMain.PokerPanel2=new GControls.PokerPanel({x:695,y:60},{width:100,height:440},2,25);//用于显示右边电脑的牌,显示对象存储在GMain.Poker[2]
GMain.PokerPanel3=new GControls.PokerPanel({x:5,y:60},{width:100,height:440},3,25);//用于显示左边电脑的牌,显示对象存储在GMain.Poker[3]
GMain.PokerPanel4=new GControls.PokerPanel({x:200,y:150},{width:400,height:120},4,20);//用于显示出的最后一手牌,显示对象存储在GMain.Poker[4]
var BeginButton=new JControls.Button({x:235,y:0},{width:130,height:50}).setText(&开始&).setBGImage(ResourceData.Images.btn);
BeginButton.onClick=function(){
GMain.BtnPanel.visible=
DJDDZ.Dealing();
GMain.BtnPanel.addControlInLast([BeginButton]);
JMain.JForm.addControlInLast([GMain.PokerPanel0,GMain.PokerPanel1
,GMain.PokerPanel2,GMain.PokerPanel3,GMain.PokerPanel4,GMain.BtnPanel]);
DJDDZ.InitGame();
JMain.JForm.show();
DJDDZ.InitGame=function(){
GMain.Poker=[];
for(var i=0;i&5;i++)GMain.Poker[i]=[];//初始化扑克对象存储空间
for(var j=0;j&54;j++)GMain.Poker[0][j]=new GControls.Poker(j+1);//生成扑克对象
GMain.PokerPanel0.hidePoker=//hidePoker为true,显示扑克背面
GMain.PokerPanel1.hidePoker=//hidePoker为false,显示扑克正面
GMain.PokerPanel2.hidePoker=
GMain.PokerPanel3.hidePoker=
GMain.PokerPanel4.hidePoker=
GMain.PokerPanel1.toSelectPoker=
GMain.PokerPanel0.density=1;//设置扑克牌显示密度
GMain.ToPlay=
GMain.LastHandPokerType=
GMain.DealingNum=0;
GMain.DealerNum=JFunction.Random(1,3);
GMain.BeginNum=GMain.DealerN//初始化发牌起始标识
2、点击开始按钮后开始发牌
DJDDZ.Dealing=function(){//发牌
if(GMain.DealingHandle)clearTimeout(GMain.DealingHandle);
if(GMain.DealingNum&=51) {//已发完牌
GMain.MaxScore=0;
GMain.GrabTime=0;
GMain.PokerPanel0.density=105;
DJDDZ.GrabTheLandlord();//抢地主
if(GMain.DealerNum&3) GMain.DealerNum=1;
var r=JFunction.Random(0,GMain.Poker[0].length-1);
GMain.Poker[GMain.DealerNum].splice(GMain.Poker[ GMain.DealerNum].length,0,GMain.Poker[0][r]);
GMain.Poker[0].splice(r,1);
GMain.DealingNum++;
GMain.DealerNum++;
GMain.DealingHandle=setTimeout(DJDDZ.Dealing, 40);//40毫秒发一张牌
JMain.JForm.show();
DJDDZ.GrabTheLandlord=function(){//抢地主
if(GMain.GrabTime==3&&GMain.MaxScore==0){//没有人抢地主
DJDDZ.GameOver();
if(GMain.MaxScore==3||(GMain.MaxScore&0&&GMain.GrabTime==3)){//地主已产生
GMain.DealerNum=GMain.LandlordN
GMain.LastHandNum=0;
GMain.PokerPanel0.hidePoker=
GMain.Poker[GMain.LandlordNum].splice(GMain.Poker[GMain.LandlordNum].length,0,GMain.Poker[0][2]);
GMain.Poker[GMain.LandlordNum].splice(GMain.Poker[GMain.LandlordNum].length,0,GMain.Poker[0][1]);
GMain.Poker[GMain.LandlordNum].splice(GMain.Poker[GMain.LandlordNum].length,0,GMain.Poker[0][0]);
GMain.ToPlay=
DJDDZ.ToPlay();
if(GMain.DealerNum&3) GMain.DealerNum=1;
if(GMain.DealerNum==1){//自己抢地主
GMain.BtnPanel.clearControls();
var Button1=new GControls.GrabButton({x:10,y:0},{width:130,height:50},1).setText(&1分&).setBGImage(ResourceData.Images.btn);
var Button2=new GControls.GrabButton({x:160,y:0},{width:130,height:50},2).setText(&2分&).setBGImage(ResourceData.Images.btn);
var Button3=new GControls.GrabButton({x:310,y:0},{width:130,height:50},3).setText(&3分&).setBGImage(ResourceData.Images.btn);
var Button4=new GControls.GrabButton({x:460,y:0},{width:130,height:50}).setText(&不抢&).setBGImage(ResourceData.Images.btn);
GMain.BtnPanel.addControlInLast([Button1,Button2,Button3,Button4]);
GMain.BtnPanel.visible=
JMain.JForm.show();
}else{//电脑抢地主
var r=JFunction.Random(0,3);
if(r&GMain.MaxScore){
GMain.MaxScore=r;
GMain.LandlordNum=GMain.DealerN
GMain.DealerNum++;
GMain.GrabTime++;
JMain.JForm.show();
DJDDZ.GrabTheLandlord();
DJDDZ.ToPlay=function(){//出牌
JMain.JForm.show();
if(GMain.DealerNum&3) GMain.DealerNum=1;
if(GMain.LastHandNum==GMain.DealerNum){
GMain.LastHandNum=0;
if(GMain.DealerNum==1){//轮到自己出牌
GMain.BtnPanel.clearControls();
if(GMain.LastHandNum==2||GMain.LastHandNum==3){//不是该轮第一个出牌,可以选择不出牌
var Button1=new JControls.Button({x:50,y:0},{width:100,height:50},1).setText(&不出&).setBGImage(ResourceData.Images.btn);
Button1.onClick=function(){
for(var i=GMain.Poker[GMain.DealerNum].length-1;i&=0;i--)
GMain.Poker[GMain.DealerNum][i].isSelected=
GMain.DealerNum++;
GMain.BtnPanel.visible=
DJDDZ.ToPlay();
var Button2=new JControls.Button({x:250,y:0},{width:100,height:50}).setText(&出牌&).setBGImage(ResourceData.Images.btn);
Button2.onClick=function(){
var _pokerNumbers=[];
for(var i=GMain.Poker[GMain.DealerNum].length-1;i&=0;i--){
if(GMain.Poker[GMain.DealerNum][i].isSelected){
_pokerNumbers[_pokerNumbers.length]=GMain.Poker[GMain.DealerNum][i].pokerN
if(DJDDZ.CheckPlayPoker(_pokerNumbers)){//判断选中的牌是否符合规则
DJDDZ.PlayPoker();//出选中的牌
GMain.BtnPanel.visible=
GMain.DealerNum++;
DJDDZ.ToPlay();//下一位出牌
alert(&出牌不符合规则,请重新选择!&);
var Button3=new JControls.Button({x:450,y:0},{width:100,height:50}).setText(&提示&).setBGImage(ResourceData.Images.btn);
Button3.onClick=function(){
DJDDZ.AISelectPoker();
JMain.JForm.show();
GMain.BtnPanel.addControlInLast([Button1,Button2,Button3]);
GMain.BtnPanel.visible=
GMain.PokerPanel1.toSelectPoker=
JMain.JForm.show();
}else{ //电脑出牌
if(DJDDZ.AISelectPoker()){//电脑AI选牌
DJDDZ.PlayPoker();//出选中的牌
GMain.DealerNum++;
setTimeout(DJDDZ.ToPlay, 1500);//暂停1500毫秒,下一位出牌
4.1、检查出牌是否符合规则
DJDDZ.CheckPlayPoker=function(_pokerNumbers){//检查出牌是否符合规则,pokerNumbers从小到大排序
var pokerType=DJDDZ.GetPokerType(_pokerNumbers);
if(pokerType==null)//没有获取到牌型
if(GMain.LastHandNum==0)//如果是该轮首牌,任何牌型都可以
//与该轮出的最后一手牌比较
if(GMain.PokerTypes[pokerType.type].weight&GMain.PokerTypes[GMain.LastHandPokerType.type].weight)//当前牌型可以压前一手牌型
else if (GMain.PokerTypes[pokerType.type].weight==GMain.PokerTypes[GMain.LastHandPokerType.type].weight){//当前牌型不可以压前一手牌型
if(pokerType.type==GMain.LastHandPokerType.type&&pokerType.length==GMain.LastHandPokerType.length){//牌型与出牌数都相同
if(pokerType.num&GMain.LastHandPokerType.num)//数值大的压数值小的
4.2、获取牌型
DJDDZ.GetPokerType=function(__pokerNumbers,chaiNum){//获取__pokerNumbers的牌型,__pokerNumbers已排序,从小到大
if(chaiNum==null)chaiNum=3;
var splitPoker=DJDDZ.SplitPoker(__pokerNumbers,chaiNum);//把牌拆成非组合类型
var pokerType={type:&&,num:0,length:__pokerNumbers.length};
if(splitPoker[&12&].length&0){
if(pokerType.length==2)pokerType.type=&12&;//王弹
else pokerType=
}else if(splitPoker[&1111&].length&0){
if(splitPoker[&1111&].length==1){
pokerType.num=splitPoker[&1111&][0];
if(pokerType.length==4) pokerType.type=&1111&;//炸弹
else if(pokerType.length==6&&(splitPoker[&1&].length==1||splitPoker[&1&].length==2))pokerType.type=&111123&;//4带2
else if(pokerType.length==8&&splitPoker[&11&].length==2)pokerType.type=&&;//4带2对
else pokerType=
}else pokerType=
}else if(splitPoker[&111&].length&0){
var l=splitPoker[&111&].
if(l==1||DJDDZ.IsStraight(splitPoker[&111&])){//l=1或GMain.SplitPoker[&111&]的值连续
pokerType.num=splitPoker[&111&][0];
if(pokerType.length==3*l)pokerType.type=&111&;//3条,l&=2时为飞机
else if(pokerType.length==4*l&&splitPoker[&1&].length==l) pokerType.type=&1112&;//3条带1,l&=2时为飞机
else if(pokerType.length==5*l&&splitPoker[&11&].length==l)pokerType.type=&11122&;//3条带1对,l&=2时为飞机
else pokerType=
}else pokerType=
}else if(splitPoker[&11&].length&0){
var l=splitPoker[&11&].
if(l==1|| (l&=3&&DJDDZ.IsStraight(splitPoker[&11&]))){
pokerType.num=splitPoker[&11&][0];
if(pokerType.length==2*l)pokerType.type=&11&;//l=1时为对子,l&=3时为连对
else pokerType=
}else pokerType=
}else if(splitPoker[&1&].length&0){
var l=splitPoker[&1&].
if(l==1||(l&=5&&DJDDZ.IsStraight(splitPoker[&1&]))){
pokerType.num=splitPoker[&1&][0];
pokerType.type=&1&;
}else pokerType=
} else pokerType=
if( pokerType==null&&chaiNum&0)pokerType=DJDDZ.GetPokerType(__pokerNumbers,chaiNum-1);
return pokerT
4.3、出选中的牌
DJDDZ.PlayPoker=function(){//出选中的牌
GMain.Poker[4]=[];//清空出牌存储空间
var _pokerNumbers=[];
for(var i=GMain.Poker[GMain.DealerNum].length-1;i&=0;i--){
if(GMain.Poker[GMain.DealerNum][i].isSelected){
_pokerNumbers[_pokerNumbers.length]=GMain.Poker[GMain.DealerNum][i].pokerN
GMain.Poker[4].splice(GMain.Poker[4].length,0,GMain.Poker[GMain.DealerNum][i]);
GMain.Poker[GMain.DealerNum].splice(i,1);
GMain.LastHandNum=GMain.DealerN//本轮最后一手牌标识
GMain.LastHandPokerType=DJDDZ.GetPokerType(_pokerNumbers);//设置最后一手牌牌型
if(GMain.Poker[GMain.DealerNum].length==0)DJDDZ.GameOver();//牌出完,游戏结束
4.4、电脑AI选牌
DJDDZ.AISelectPoker=function(){//AI选牌
var _pokerNumbers=[];
for(var i=GMain.Poker[GMain.DealerNum].length-1;i&=0;i--){
_pokerNumbers[_pokerNumbers.length]=GMain.Poker[GMain.DealerNum][i].pokerN
var SPN=[];
if(DJDDZ.CheckPlayPoker(_pokerNumbers)){//如果只有一手牌,直接出完
SPN=_pokerN
if(GMain.LastHandNum==0){//本轮第一手牌
var splitPoker=DJDDZ.SplitPoker(_pokerNumbers);
if(splitPoker[&111&].length&0){
//出3条或飞机,优先飞机
if(splitPoker[&111&][0]&7||(splitPoker[&1&].length==0&&splitPoker[&11&].length==0)){
if(splitPoker[&11&].length&0&&(splitPoker[&11&][0]&7||splitPoker[&1&].length==0)){
for(var i=GMain.PokerTypes[&11122&].maxL;i&0;i--){
SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:&11122&,num:0,length:5*i});
if(SPN.length&0)
if(SPN.length==0&&splitPoker[&1&].length&0&&splitPoker[&1&][0]&15){
for(var i=GMain.PokerTypes[&1112&].maxL;i&0;i--){
SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:&1112&,num:0,length:4*i});
if(SPN.length&0)
if(SPN.length==0){
for(var i=GMain.PokerTypes[&111&].maxL;i&0;i--){
SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:&111&,num:0,length:3*i});
if(SPN.length&0)
if(SPN.length==0){
var nn=[];
for(var x=1;x&=3;x++){
if(GMain.Poker[x].length==1||GMain.Poker[x].length==2){
if(GMain.DealerNum==GMain.LandlordNum){
if(GMain.DealerNum!=x)nn[GMain.Poker[x].length]=
if(GMain.LandlordNum==x)nn[GMain.Poker[x].length]=
if((splitPoker[&11&].length&0&&splitPoker[&1&].length&0&&(splitPoker[&11&][0]&splitPoker[&1&][0]||nn[1]))
||(splitPoker[&11&].length&0&&splitPoker[&1&].length==0)){
for(var i=GMain.PokerTypes[&11&].maxL;i&2;i--){
SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:&11&,num:0,length:2*i});
if(SPN.length&0)
if(SPN.length==0) SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:&11&,num:0,length:2});//出对子
if(splitPoker[&1&].length&0) SPN[SPN.length]=splitPoker[&1&][0];//出单牌
if(SPN.length==0)SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:&1111&,num:0,length:4});//出炸弹
if(SPN.length==0)SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:&12&,num:0,length:2});//出王炸
if(GMain.LastHandPokerType.type!=&12&){
if(GMain.LandlordNum==GMain.DealerNum||GMain.LastHandNum==GMain.LandlordNum){//如果AI是地主或接地主的牌
SPN=DJDDZ.GetPokerByType(_pokerNumbers,GMain.LastHandPokerType);
if(SPN.length==0&&GMain.LastHandPokerType.type!=&1111&)SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:&1111&,num:0,length:4});
if(SPN.length==0)SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:&12&,num:0,length:2});
}else{//接同伴的牌
if(GMain.Poker[GMain.LastHandNum].length&5){
if((GMain.LastHandPokerType.type==&1&&&GMain.LastHandPokerType.length==1)
||(GMain.LastHandPokerType.type==&11&&&GMain.LastHandPokerType.length==2)){
SPN=DJDDZ.GetPokerByType(_pokerNumbers,GMain.LastHandPokerType);
if(SPN.length&0&&SPN[0]&10)SPN=[];
if(SPN.length&0){
for(var i=0;i&SPN.i++){
for(var j=GMain.Poker[GMain.DealerNum].length-1;j&=0;j--){
if(!GMain.Poker[GMain.DealerNum][j].isSelected&&GMain.Poker[GMain.DealerNum][j].pokerNumber==SPN[i]){
GMain.Poker[GMain.DealerNum][j].isSelected=//选牌
}else return false
4.5、获取指定牌型的牌
DJDDZ.GetPokerByType=function(__pokerNumbers,type){//从__pokerNumbers中获取type类型的牌
var _pokerNumbers=[];
var SPN=[];
if(__pokerNumbers.length&=type.length){
for(var i=0;i&__pokerNumbers.i++) _pokerNumbers[i]=__pokerNumbers[i];//_pokerNumbers从小到大
if(type.type==&12&){//王炸
if(_pokerNumbers[_pokerNumbers.length-1]==18&&_pokerNumbers[_pokerNumbers.length-2]==17){
SPN.splice(0,0,18);
SPN.splice(0,0,17);
}else if(type.type==&1&||type.type==&11&||type.type==&111&||type.type==&1111&){//非组合类型
var c=GMain.PokerTypes[type.type].allNum-1;
for(var j=c;j&_pokerNumbers.j++){//从小到大取数值
while(j&_pokerNumbers.length&&_pokerNumbers[j]&type.num&&_pokerNumbers[j]==_pokerNumbers[j-c]){
if(SPN.length&0){
if(_pokerNumbers[j]==SPN[0])
else if(_pokerNumbers[j]&SPN[0]+1)SPN=[];//如果不能连续则清空已选数
for(var k=j;k&=j-c;k--) {
SPN.splice(0,0,_pokerNumbers[k]);//选取数值
_pokerNumbers.splice(j,1);//删除数值
if(SPN.length==type.length)//选取完成
if(SPN.length==type.length)
}else if(type.type==&1112&||type.type==&11122&||type.type==&111123&||type.type==&&){//组合类型
var zcy=GMain.PokerTypes[type.type].
var fcy=GMain.PokerTypes[type.type].
var fcyNum=GMain.PokerTypes[type.type].fcyN
var l=type.length/GMain.PokerTypes[type.type].allN
SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:zcy,num:type.num,length:l*GMain.PokerTypes[zcy].allNum});//先选主类型
if(SPN.length&0){
for(var i=0;i&SPN.i++){
for(var j=0;j&_pokerNumbers.j++){
if(SPN[i]==_pokerNumbers[j]){
_pokerNumbers.splice(j,1);//删除已选数值
while(fcyNum&0){
var spn1=DJDDZ.GetPokerByType(_pokerNumbers,{type:fcy,num:0,length:GMain.PokerTypes[fcy].allNum});
for(var i=0;i&spn1.i++) SPN[SPN.length]=spn1[i];
if(SPN.length!=type.length)SPN=[];//如果选取不成功,则清空选取数据
return SPN;
5、游戏结束
&当某个人出完牌或没有人抢地主时游戏结束。
DJDDZ.GameOver=function(){
GMain.BtnPanel.clearControls();
var Button=new JControls.Button({x:235,y:0},{width:130,height:50}).setText(&重新开始&).setBGImage(ResourceData.Images.btn);
Button.onClick=function(){
DJDDZ.InitGame();
GMain.BtnPanel.visible=
DJDDZ.Dealing();
GMain.BtnPanel.addControlInLast([Button]);//加载重新开始按钮
//翻开低牌和左右电脑的牌
GMain.PokerPanel0.hidePoker=
GMain.PokerPanel2.hidePoker=
GMain.PokerPanel3.hidePoker=
GMain.BtnPanel.visible=
JMain.JForm.show();
本文已收录于以下专栏:
相关文章推荐
【编者前言】以前在MFC或者WIN32工程中写稍长算法的时候就会感觉比较乱,这次尝试将AI算法和UI图像绘制分成两个工程来分别进行,最后再整合到一个工程,这样效率貌似更高了。这个是从准备考研中期开始的...
1.吵架不当着父母,亲戚,邻居的面吵,在公共场所给对方面子。   2.不管谁对谁错,只要一吵架,男方必须先轻声轻气哄女方一次,女方才能马上冷静下来,否则女方一看到男方哇啦哇啦女方也忍不住哇啦哇啦,一旦...
有消息称,腾讯手机QQ游戏大厅将携欢乐斗地主推出Html5版,即将对iPad用户限量发行体验,后续手机QQ游戏大厅的其他游戏也将陆续推出Html5版本。分析认为,手机QQ游戏大厅此举是为了迎合当前移动...
去除了其中的下载服务及通知信息,请点击这里下载
【北方网通】    【电信网通】
【下载说明】
1 点击上面的地址,打开下载页面
2 点击&普通下载&--等待30秒--点击&下...
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)简陋的斗地主,js实现
来源:博客园
最近闲了两天没事做,用js写了个斗地主,练习练习。代码和功能都很简陋,还有bug,咋只是聊聊自己的思路。
这里说说斗地主主要包含的功能:洗牌,发牌,玩家出牌、电脑出牌,出牌规则的验证,输赢啥的没有判断,只是实现了这几个主要功能,下面依次说说几个功能的实现:
  1.洗牌:
    

1 var pukes=this.manage.//存放扑克牌的数组
2 //洗牌
3 for(var i=0;i&pukes.i++){
4
var tmp=pukes[i];
5
var index=util.random(i,pukes.length);//随机交换两张牌
6
pukes[i]=pukes[index];
7
pukes[index]=
8 }


  2.发牌(简版默认是玩家自己为地主,电脑为农民),由于前面洗牌时已经将牌的顺序打乱,所以发牌只是简单的循环把pukes中的元素添加到每个玩家实例中的pukes字段中。

 1 //发牌
 2
var start=0;
 3
for(var i=0;i&this.manage.pukes.length-3;i++) {
 4
if(start==this.manage.players.length){
 5
start=0;
 6
this.manage.pukes[i].status=true;
 8
this.manage.players[start].pukesLen++;
 9
this.manage.players[start++].pukes.push(this.manage.pukes[i]);
10
for(var i=this.manage.pukes.length-3;i&this.manage.pukes.i++){
12
//地主多三张
13
this.manage.pukes[i].status=true;
14
this.manage.players[this.manage.curPlayerIndex].pukesLen++;
15
this.manage.players[this.manage.curPlayerIndex].pukes.push(this.manage.pukes[i]);
16
}

  3.玩家出牌,玩家出牌分为电脑和玩家自己两个步骤,电脑出牌是非常傻瓜的出牌方式(有牌就出):
  

 1 //出牌
 2
if(this.options.playerIndex==this.manage.curPlayerIndex) {
 3
var spks = [],gz=false;
 4 
 5
if (this.manage.curMaxPlayerIndex == this.options.playerIndex) {
 6
this.manage.deskPukes = [];
 7
if (this.isCompute) {
 9
//电脑自动出牌
10
var start = 0;
11
var len=this.manage.deskPukes.length||1;
12
while (start & this.pukes.length) {
13
spks = [];
14
for (var i = 0,j= i &len&&j&this.pukes. i++) {
15
//随便选一张 可以出就行
16
if(this.pukes[j].status) {
17
spks.push(this.pukes[j++]);
18
if(spks.length) {
21
if (rules.valids(spks, this.manage.deskPukes)) {
22
gz = true;
23
break;
24
start++;
27
else {
30
//玩家选择出牌
31
for (var i = 0; i & this.pukes. i++) {
32
if (this.pukes[i].selected && this.pukes[i].status) {
33
spks.push(this.pukes[i]);
34
if (rules.valids(spks, this.manage.deskPukes)) {
37
gz=true;
38
else{
40
alert("出牌不符合规则!");
41
if(gz){
44
this.manage.curMaxPlayerIndex=this.options.playerI
45
this.manage.deskPukes = [];
46
for (var i = 0; i & spks. i++) {
47
this.pukesLen--;
48
this.manage.deskPukes.push(spks[i]);
49
spks[i].status = false;
50
this.manage.renderPukes();
53
this.manage.renderCurDiscard();
54
if(this.isCompute||gz) {
55
this.manage.nextPlayer();
56
else{
59
alert("没轮到你出牌!");
60
}

View Code
  4.出牌规则的验证,是很多函数组合起来,然后循环调用,如果遇到返回ture的即为出牌符合规则:
  

1 //以下为出牌规则
2 var rules={
_rules:[
new danzRule(),
new duiRule(),
new sandRule(),
new zandRule(),
new shunzRule(),
new liandRule()
 10
],
 11
valids:function(_pukes,_curPukes){
 12
for(var i=0;i&this._rules.i++){
 13
if(this._rules[i].valid(_pukes,_curPukes)){
 14
return true;
 15
return false;
 18
}
 19 };
 20 
 21 function danzRule(){
 22
//单张规则
 23 }
 24 danzRule.prototype.valid=function(_pukes,_curPukes){
 25
//校验
 26
var pukes=_//玩家的牌
 27
var curPukes=_curP//左面的牌
 28
if(pukes&&pukes.length==1){
 29
//比较牌面值
 30
if(!curPukes||!curPukes.length){
 31
return true;
 32
if(curPukes[0].dians==2&&pukes[0].dians&15){
 34
//2特殊处理
 35
return false;
 36
if(pukes[0].dians==2&&curPukes[0].dians&15){
 38
//2特殊处理
 39
return true;
 40
return pukes[0].dians&curPukes[0].
 42
return false;
 44 }
 45 
 46 function duiRule(_pukes,_curPukes){
 47
//两张规则
 48 
 49 }
 50 duiRule.prototype.valid=function(_pukes,_curPukes){
 51
//校验
 52
var pukes=_//玩家的牌
 53
var curPukes=_curP//左面的牌
 54
if(pukes&&pukes.length==2){
 55
//比较牌面值
 56
if(pukes[0].dians&14&&pukes[1].dians&14){
 57
return true;
 58
if(pukes[0].dians!=pukes[1].dians){
 60
return false;
 61
if(!curPukes||!curPukes.length){
 63
return true;
 64
}else {
 65
if(curPukes.length!=2){
 66
return false;
 67
if (curPukes[0].dians & 14 && curPukes[1].dians & 14) {
 69
return false;
 70
if (curPukes[0].dians != curPukes[1].dians) {
 72
return false;
 73
if (curPukes[0].dians == 2) {
 75
return false;
 76
if(pukes[0].dians==2){
 79
return true;
 80
return pukes[0].dians&curPukes[0].
 82
return false;
 84 }
 85 
 86 function sandRule(){
 87
//三带
 88 }
 89 sandRule.prototype.valid=function(_pukes,_curPukes){
 90
//校验
 91 
 92 
 93
var pukes=_//玩家的牌
 94
var curPukes=_curP//左面的牌
 95
if(pukes&&(pukes.length&=3)){
 96
//比较牌面值
 97
var books=getBooks(pukes);
 98
if(!valid(books))return false;
 99
if(!curPukes||!curPukes.length)return true;
100
if(curPukes.length!=books.length)return false;
101
var books2=getBooks(curPukes);
102
if(!valid(books2))return false;
103
return getSum(books)&getSum(books2);
104
return false;
106 
107
function getSum(books){
108
var sum=0;
109
for(var i=0;i&books.i++) {
110
if(books[i]==3){
111
if(i==2)return 9999;
112
sum+=i;
113
return
116
function valid(books){
118
//验证三带是否有效
119
var counts3= 0,countsd= 0,d2=true,start=false,startIndex=-1;
120 
121
for(var i=0;i&books.i++) {
122
if(start&&books[i]==3&&startIndex!=(i-1)){
123
return false;
124
}else{
125
startIndex=i;
126
if(books[i]==3){
128
if(!start) {
129
start = true;
130
startIndex =
131
counts3++;
133
if(books[i]==1){
135
d2=false;
136
}
138 
139
for(var i=0;i&books.i++) {
140
if(d2&&books[i]==2){
141
countsd++;
142
else if(!d2&&books[i]==1){
144
countsd++;
145
return counts3&0&&counts3==
148
}
149 
150
function getBooks(pukes){
151
//返回三带的每个点数的个数
152
var books=[];
153
for(var i=0;i&pukes.i++){
154
if(!books[pukes[i].dians]){
155
books[pukes[i].dians]=1;
156
}else{
157
books[pukes[i].dians]++;
158
return
161
}
162 }
163 
164 
165 function zandRule(){
166
//炸弹
167 }
168 zandRule.prototype.valid=function(_pukes,_curPukes){
169
var pukes=_//玩家的牌
170
var curPukes=_curP//左面的牌
171
if(pukes&&pukes.length==4) {
172
if(!allEqual(pukes)){
173
return false;
174
if(!curPukes||(curPukes.length&0&&curPukes.length!=4)||!allEqual(curPukes)){
176
return true;
177
else{
179
if(pukes[0].dians==2){
180
return true;
181
if(curPukes[0].dians==2){
183
return false;
184
return pukes[0].dians&curPukes[0].
186
}
187 
188
return false;
190 
191
function allEqual(pukes){
192
if(!pukes||!pukes.length)return false;
193
var base=pukes[0].
194
for(var i=1;i&pukes.i++){
195
if(base!=pukes[i].dians){
196
return false;
197
return true;
200
}
201 
202 }
203 
204 function liandRule(){
205
//连对
206 }
207 liandRule.prototype.valid=function(_pukes,_curPukes) {
208
var pukes=_//玩家的牌
209
var curPukes=_curP//左面的牌
210
if(pukes&&pukes.length&=6) {
211
if(!verificationCoherence(pukes)){
212
return false;
213
if(!curPukes||curPukes.length&=0){
215
return true;
216
if(!verificationCoherence(curPukes)){
218
return false;
219
if(pukes.length!=curPukes.length){
221
return false;
222
return getSumDians(pukes)&getSumDians(curPukes);
224
return false;
226
function getSumDians(pukes){
227
var sum=0;
228
for(var i=0;i&pukes.i++) {
229
sum+=pukes[i].
230
return
232
}
233 
234
function verificationCoherence(pukes){
235
//验证连贯性
236
if(!pukes||!pukes.length)return false;
237
var books=[];
238
for(var i=0;i&pukes.i++){
239
if(pukes[i].dians==2||pukes[i].dians&14){
240
return false;
241
if(!books[pukes[i].dians]){
243
books[pukes[i].dians]=1;
244
}else{
245
books[pukes[i].dians]++;
246
if(books[pukes[i].dians]&2){
248
return false;
249
var start=false;
252 
253
for(var i=0;i&books.i++) {
254
if(books[i]&&books[i]!=2){
255
return false;
256
if(books[i]==2&&!start){
258
start=true;
259
if(start&&books[i]!=2){
261
return false;
262
}
264 
265
return true;
266
}
267 }
268 function shunzRule(){
269
//顺子
270 }
271 shunzRule.prototype.valid=function(_pukes,_curPukes){
272
var pukes=_//玩家的牌
273
var curPukes=_curP//左面的牌
274
if(pukes&&pukes.length&=5) {
275
if(!verificationCoherence(pukes)){
276
return false;
277
if(!curPukes||curPukes.length&=0){
279
return true;
280
if(!verificationCoherence(curPukes)){
282
return false;
283
if(pukes.length!=curPukes.length){
285
return false;
286
return getSumDians(pukes)&getSumDians(curPukes);
288
return false;
290 
291
function getSumDians(pukes){
292
var sum=0;
293
for(var i=0;i&pukes.i++) {
294
sum+=pukes[i].
295
return
297
}
298 
299
function verificationCoherence(pukes){
300
//验证连贯性
301
if(!pukes||!pukes.length)return false;
302
var books=[];
303
for(var i=0;i&pukes.i++){
304
if(pukes[i].dians==2||pukes[i].dians&14){
305
return false;
306
if(!books[pukes[i].dians]){
308
books[pukes[i].dians]=1;
309
}else{
310
return false;
311
var start=false;
314
for(var i=0;i&books.i++) {
315
if(books[i]==1&&!start){
316
start=true;
317
if(start&&!books[i]){
319
return false;
320
return true;
323
}
324 
325 }

View Code
  以上4步,是我认为的主要的4个函数,其他的函数,如初始化,事件注册等,在源码已有注释,写的不好勿喷。
附上源码:
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动}

我要回帖

更多关于 党组织介绍信抬头写错 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信