`
xidajiancun
  • 浏览: 492288 次
文章分类
社区版块
存档分类
最新评论

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=false;
            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=true;//hidePoker为true,显示扑克背面
    GMain.PokerPanel1.hidePoker=false;//hidePoker为false,显示扑克正面
    GMain.PokerPanel2.hidePoker=true;
    GMain.PokerPanel3.hidePoker=true;
    GMain.PokerPanel4.hidePoker=false;
    GMain.PokerPanel1.toSelectPoker=false;
    GMain.PokerPanel0.density=1;//设置扑克牌显示密度
    GMain.ToPlay=false;
    GMain.LastHandPokerType=null;
    GMain.DealingNum=0;
    GMain.DealerNum=JFunction.Random(1,3);
    GMain.BeginNum=GMain.DealerNum;//初始化发牌起始标识
}


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();//抢地主
    }else{
        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();
    }
}


3、抢地主

DJDDZ.GrabTheLandlord=function(){//抢地主
    if(GMain.GrabTime==3&&GMain.MaxScore==0){//没有人抢地主
        DJDDZ.GameOver();
        return;
    }
    if(GMain.MaxScore==3||(GMain.MaxScore>0&&GMain.GrabTime==3)){//地主已产生
        GMain.DealerNum=GMain.LandlordNum;
        GMain.LastHandNum=0;
        GMain.PokerPanel0.hidePoker=false;
        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=true;
        DJDDZ.ToPlay();
        return;
    }
    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=true;
        JMain.JForm.show();
    }else{//电脑抢地主
        var r=JFunction.Random(0,3);
        if(r>GMain.MaxScore){
            GMain.MaxScore=r;
            GMain.LandlordNum=GMain.DealerNum;
        }
        GMain.DealerNum++;
        GMain.GrabTime++;
        JMain.JForm.show();
        DJDDZ.GrabTheLandlord();
    }
}


4、出牌

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=false;
                GMain.DealerNum++;
                GMain.BtnPanel.visible=false;
                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].pokerNumber;
                }
            }
            if(DJDDZ.CheckPlayPoker(_pokerNumbers)){//判断选中的牌是否符合规则
                DJDDZ.PlayPoker();//出选中的牌
                GMain.BtnPanel.visible=false;
                GMain.DealerNum++;
                DJDDZ.ToPlay();//下一位出牌
            }else{
                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=true;
        GMain.PokerPanel1.toSelectPoker=true;
        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)return false;//没有获取到牌型
    if(GMain.LastHandNum==0)return true;//如果是该轮首牌,任何牌型都可以
    else{
        //与该轮出的最后一手牌比较
        if(GMain.PokerTypes[pokerType.type].weight>GMain.PokerTypes[GMain.LastHandPokerType.type].weight)return true;//当前牌型可以压前一手牌型
        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)return true;//数值大的压数值小的
                else return false;
            }else return false;
        }else return false;
    }
};


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= null;
    }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="11112233";//4带2对
            else pokerType= null;
        }else pokerType= null;
    }else if(splitPoker["111"].length>0){
        var l=splitPoker["111"].length;
        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= null;
        }else pokerType= null;
    }else if(splitPoker["11"].length>0){
        var l=splitPoker["11"].length;
        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= null;
        }else pokerType= null;
    }else if(splitPoker["1"].length>0){
        var l=splitPoker["1"].length;
        if(l==1||(l>=5&&DJDDZ.IsStraight(splitPoker["1"]))){
            pokerType.num=splitPoker["1"][0];
            pokerType.type="1";
        }else pokerType= null;
    } else pokerType=null;
    if( pokerType==null&&chaiNum>0)pokerType=DJDDZ.GetPokerType(__pokerNumbers,chaiNum-1);
    return pokerType;
}


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].pokerNumber;
            GMain.Poker[4].splice(GMain.Poker[4].length,0,GMain.Poker[GMain.DealerNum][i]);
            GMain.Poker[GMain.DealerNum].splice(i,1);
        }
    }
    GMain.LastHandNum=GMain.DealerNum;//本轮最后一手牌标识
    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].pokerNumber;
    }
    var SPN=[];
    if(DJDDZ.CheckPlayPoker(_pokerNumbers)){//如果只有一手牌,直接出完
        SPN=_pokerNumbers;
    }else{
        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)break;
                        }
                    }
                    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)break;
                        }
                    }
                    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)break;
                        }
                    }
                }
            }
            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]=true;
                        }else{
                            if(GMain.LandlordNum==x)nn[GMain.Poker[x].length]=true;
                        }
                    }
                }
                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)break;
                    }
                    if(SPN.length==0) SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:"11",num:0,length:2});//出对子
                }else{

                  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});//出王炸
        }else{
            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.length;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=true;//选牌
                    break;
                }
            }
        }
        return true;
    }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.length;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.length;j++){//从小到大取数值
                while(j<_pokerNumbers.length&&_pokerNumbers[j]>type.num&&_pokerNumbers[j]==_pokerNumbers[j-c]){
                    if(SPN.length>0){
                        if(_pokerNumbers[j]==SPN[0])break;
                        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)break;//选取完成
                }
                if(SPN.length==type.length)break;
            }
        }else if(type.type=="1112"||type.type=="11122"||type.type=="111123"||type.type=="11112233"){//组合类型
            var zcy=GMain.PokerTypes[type.type].zcy;
            var fcy=GMain.PokerTypes[type.type].fcy;
            var fcyNum=GMain.PokerTypes[type.type].fcyNum;
            var l=type.length/GMain.PokerTypes[type.type].allNum;
            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.length;i++){
                    for(var j=0;j<_pokerNumbers.length;j++){
                        if(SPN[i]==_pokerNumbers[j]){
                            _pokerNumbers.splice(j,1);//删除已选数值
                            break;
                        }
                    }
                }
                while(fcyNum>0){
                    var spn1=DJDDZ.GetPokerByType(_pokerNumbers,{type:fcy,num:0,length:GMain.PokerTypes[fcy].allNum});
                    for(var i=0;i<spn1.length;i++) SPN[SPN.length]=spn1[i];
                    fcyNum--;
                }
            }
        }
    }
    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=false;
        DJDDZ.Dealing();
    }
    GMain.BtnPanel.addControlInLast([Button]);//加载重新开始按钮
    //翻开低牌和左右电脑的牌
    GMain.PokerPanel0.hidePoker=false;
    GMain.PokerPanel2.hidePoker=false;
    GMain.PokerPanel3.hidePoker=false;
    GMain.BtnPanel.visible=true;
    JMain.JForm.show();
}


演示地址源码地址


分享到:
评论

相关推荐

    H5 JS 单机斗地主

    【H5 JS 单机斗地主】是一个基于HTML5和JavaScript技术开发的在线斗地主游戏。在本文中,我们将深入探讨这个项目所涉及的关键技术和实现细节。 首先,HTML5是现代网页开发的核心标准,它引入了许多新的元素、API和...

    斗地主网页版(单机)

    【斗地主网页版(单机)】是一个基于HTML5和CSS技术开发的在线游戏,专为玩家提供单机模式的娱乐体验。这个项目对于学习Web前端开发的人员来说,是一个很好的实例研究对象,可以深入理解如何利用这些技术构建动态、...

    h5斗地主源码(简易单机版)

    “h5斗地主源码(简易单机版)”是指一个基于HTML5技术开发的斗地主游戏的源代码,适用于单人模式,即玩家可以独立进行游戏,无需联网与他人对战。这个源码可能是用JavaScript、CSS3以及HTML等前端技术构建的,用于...

    HTML5单机版斗地主

    HTML5单机版斗地主是一款基于Web技术开发的在线休闲游戏,利用了HTML5的最新特性,使得用户无需下载安装即可在浏览器上畅玩。这款游戏的实现涉及到多个技术层面,包括HTML、CSS、JavaScript以及一些特定的库和框架。...

    html5简易单机版斗地主棋牌类游戏代码-haiyong.site.zip

    HTML5简易单机版斗地主棋牌类游戏代码是一个基于HTML5技术开发的单机版斗地主游戏。该游戏使用了HTML5的新特性,如Canvas绘图、触摸事件等,实现了一个简洁、易用的斗地主游戏界面。游戏中包含了丰富的功能,如下: ...

    斗地主(单机pc单人版)

    《斗地主(单机PC单人版):HTML5, CSS3与jQuery的桌面游戏实践》 在当今数字化时代,各种在线游戏层出不穷,而基于Web技术开发的单机PC版游戏更是受到广大用户的喜爱。"斗地主(单机PC单人版)"就是这样一个例子,...

    JS 单机版 斗地主 AI 2.0版本

    《JS 单机版 斗地主 AI 2.0版本》 JavaScript(JS)作为浏览器端的主要脚本语言,其在游戏开发领域也有广泛的应用。在这个项目中,我们聚焦于一个JS实现的单机版斗地主游戏,特别关注其AI 2.0版本的改进。斗地主是...

    html5 canvas手机斗地主游戏源码下载.zip

    HTML5 Canvas技术是Web开发中的一个关键特性,它允许开发者在网页上绘制图形,实现动态交互的视觉效果。...通过深入理解并分析这些文件,开发者可以了解到如何利用HTML5和Canvas技术构建一款移动设备上的单机游戏。

    单机版斗地主小游戏源码 (2)

    在本项目中,"单机版斗地主小游戏源码 (2)" 是一个基于Web技术实现的简单网页游戏,特别适合初学者进行学习和参考。它利用HTML作为基础结构语言,jQuery作为JavaScript库来增强页面交互性,实现斗地主游戏的逻辑。接...

    HTML5 斗地主源码.rar

    HTML5 斗地主源码,HTML5 CSS3 Prototype.js JavaScript联合打造的网页单机版斗地主游戏,在支持HTML5的浏览器中可直接打开运行,效果如截图所示。代码中的注释比较多,因此想学习HTML5网页游戏编写的,不妨下载这个...

    HTML5 canvas移动端斗地主小游戏.zip

    在这个"HTML5 canvas移动端斗地主小游戏"中,我们看到的是利用canvas技术构建的一款适合手机端游玩的游戏。斗地主是一种广受欢迎的扑克牌游戏,通常需要三名玩家参与,分为地主和农民两方,目标是尽快将手中的牌全部...

    斗地主单机版

    【斗地主单机版】是一款专为初学者设计的游戏,它基于ActionScript3.0技术,让玩家可以在没有网络连接的情况下也能享受斗地主的乐趣。ActionScript3.0是Adobe Flash平台的核心语言,用于创建交互式内容、游戏以及...

    jquery-单机版斗地主小游戏源码--HTML-代码

    《jQuery实现的单机版斗地主小游戏源码解析与前端技术探讨》 在Web开发领域,HTML、CSS和JavaScript是构建动态交互式网页的三大基础。本项目以"jQuery-单机版斗地主小游戏源码"为例,深入探讨如何运用这三种技术...

    PHP斗地主源码

    5. **在线Web网页版斗地主游戏**:这可能是游戏的入口文件或者一个目录,包含游戏的前端资源和PHP脚本。 总的来说,获取并理解这个【PHP斗地主源码】,你需要具备一定的PHP编程知识、Web开发经验,以及对数据库管理...

    单机斗地主-小游戏-NAS-WebStation-HTML5

    单机斗地主-小游戏,部署于NAS的WebStation等服务器上,分配端口即可使用,Index文件内已去除广告

    HTML5 canvas移动端斗地主小游戏特效代码

    在这个特定的场景中,我们讨论的是一个使用HTML5 Canvas技术开发的移动端斗地主小游戏。斗地主游戏在中国极其流行,通常需要三名玩家参与,用一副扑克牌进行对战。游戏的目标是尽快出完手中的牌,先出完牌的一方获胜...

    基于JavaScript的单机版斗地主(AI专家难度)

    【基于JavaScript的单机版斗地主(AI专家难度)】是一个使用JavaScript编程语言实现的桌面游戏项目,专为喜爱斗地主游戏的玩家提供一个单人挑战的平台,其中包含了一个具有专家级别智能的AI对手。这个项目的核心是...

    实用html5与JS写的小游戏_源码

    HTML5和JavaScript是现代网页开发的核心技术,它们的结合为创建互动性和娱乐性的小游戏提供了强大的平台。本资源包包含近百个使用HTML5和JavaScript编写的小游戏源码,非常适合学习、研究或者用于微信等社交媒体的...

    javascript+css+html开发的斗地主游戏

    刚开发完一个javascript+css+html开发的单机牌斗地主游戏半成品,,嘻嘻。。电脑自动出牌还不完整。。。过段时间开发网络对战版的。。本程序用于商用,请先通知我经我同意后再使用。否则本人保留相关法律权力。

Global site tag (gtag.js) - Google Analytics