天地会 qq斗地主源码分析

来源:互联网 发布:ubuntu 删除mongodb 编辑:程序博客网 时间:2024/04/30 04:10
package ass{
    import flash.display.MovieClip;
    import flash.display.SimpleButton;
    import flash.text.TextField;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.events.DataEvent;
    import flash.net.XMLSocket;
    import flash.events.IOErrorEvent;
    import flash.media.*;
    import flash.media.SoundChannel;
    import flash.media.SoundMixer;
    import ass.poker;
    import flash.net.URLRequest;
    import flash.utils.Timer;
    import flash.events.TimerEvent;
    public class huanle extends MovieClip {//欢乐斗地主
        var username:String="nihao";
        var fuwuqi:String="localhost";
        var duankou:int=5000;
        var pingtai:String="";     //平台
        var pwd:String="";
        var xmlSocket:XMLSocket;
        var user0:User=new User(); //玩家0
        var user1:User=new User();
        var user2:User=new User();
        var usera:Array=new Array();
        var turns:int=0;    //轮数
        var pukea:Array=new Array();
        var firstx:int=200;
        var isdown:Boolean=false; 是否断线
        var minuteTimer:Timer
        public function huanle() {
            //初始化隐藏按钮
            yincanh();
            //init("self","nihao","nihaoa","localhost",8090) ;
        }
        public function init(pingtai:String,userid:String,pwd:String,fuwuqi:String,duankou:int) {
            this.username=userid;
            this.fuwuqi=fuwuqi;
            this.duankou=duankou;
            this.pingtai=pingtai;
            this.pwd=pwd;
            xmlSocket = new XMLSocket();
            xmlSocket.addEventListener(DataEvent.DATA, onIncomingData);
            xmlSocket.addEventListener(Event.CONNECT, onConnected);
            xmlSocket.connect(fuwuqi, duankou);
            kaishi_btn.addEventListener(MouseEvent.CLICK,zhunbeih); 开始,每局后是准备
            huanzhuo_btn.addEventListener(MouseEvent.CLICK,huanzhuoh);  换桌
            jiaodizhu_mc.jiao_mc.addEventListener(MouseEvent.CLICK,jiaoh); 叫地主影片剪辑有两个按钮,叫地主与不叫
            jiaodizhu_mc.bujiao_mc.addEventListener(MouseEvent.CLICK,bujiaoh);
            pai_mc.addEventListener(MouseEvent.MOUSE_DOWN,downh); 各玩家的牌
            pai_mc.addEventListener(MouseEvent.MOUSE_UP,uph);
            chupai_btn.addEventListener(MouseEvent.CLICK,chupaih); 出牌是调用removeh函数
            soundh();
        }
        function onConnected(evt:Event) {
            xmlSocket.send("11&&"+pingtai+"&&"+username + "&&"+pwd); 连接后发送的数据,参数间用&&来连接
            trace("connect");
        }
        function onIncomingData(event:DataEvent):void { 通讯主函数,对进来数据的处理
            //incomingChat_txt.htmlText += event.data;
            var str:String=event.data;
            var shujua:Array=str.split("&&");参数数据用一个数组来保存,第一个数字是命令代码
            if (shujua[0]=="11") {
                shuchu_txt.text="登陆成功";
            } else if (shujua[0]=="31") { 31为玩家数据
                var u0:Array=shujua[1].split("&");
                user0.username=u0[0];
                user0.jinbi=Number(u0[1]);
                user0.zhunbei=u0[4];

                var u1:Array=shujua[2].split("&"); 第二个玩家
                if (u1.length>1) {
                    user1.username=u1[0];
                    user1.jinbi=Number(u1[1]);
                    user1.zhunbei=u1[4];
                } else {                  如果没有的话就空
                    user1.username="";
                    user1.jinbi=0;
                    user1.zhunbei="";
                }

                var u2:Array=shujua[3].split("&"); 第三个玩家
                if (u2.length>1) {
                    user2.username=u2[0];
                    user2.jinbi=Number(u2[1]);
                    user2.zhunbei=u2[4];
                } else {
                    user2.username="";
                    user2.jinbi=0;
                    user2.zhunbei="";
                }
                var l:uint=usera.length;
                for (var i:uint=0; i<l; i++) {
                    usera.shift(); 玩家数据初始化,清空。
                }
                if (user0.username==username) {玩家数据决定了出牌的顺序
                    usera.push(user0);
                    usera.push(user1);
                    usera.push(user2);
                }
                if (user1.username==username) {
                    usera.push(user1);
                    usera.push(user2);
                    usera.push(user0);
                }
                if (user2.username==username) {
                    usera.push(user2);
                    usera.push(user0);
                    usera.push(user1);
                }
                setUser();
            } else if (shujua[0]=="41") { 41为发完牌
                zhunbei0_mc.visible=false; 准备按钮都不可视
                zhunbei2_mc.visible=false;
                zhunbei1_mc.visible=false;
                if (usera[0].username==shujua[1]) {玩家数组的第一个是自己,叫地主可视
                    jiaodizhu_mc.visible=true;
                    clock0_mc.visible=true;

                } else if (usera[1].username==shujua[1]) {
                    clock2_mc.visible=true;
                } else if (usera[2].username==shujua[1]) {
                    clock1_mc.visible=true;
                }
            } else if (shujua[0]=="42") {    决定位置,
                var weizhi:int=0;
                for (var ia:int=0; ia<usera.length; ia++) {
                    if (usera[ia].username==shujua[1]) {
                        weizhi=ia;
                        break;
                    }
                }
                if (shujua.length>2) { 数据长度大于2,轮流叫地主,按位置显示时钟和叫地主按钮
                    //xuyao chongxie
                    if(usera[0].username==shujua[1]) {
                        clock0_mc.visible=true;
                        clock1_mc.visible=false;
                        clock2_mc.visible=false;
                        xinxi0_mc.visible=false;
                        xinxi1_mc.visible=false;
                        xinxi2_mc.visible=false;
                        jiaodizhu_mc.visible=false;
                        tishi_btn.visible=true;
                        chupai_btn.visible=true;
                        buchu_btn.visible=true;
                    }else if (usera[1].username==shujua[1]) {
                        clock1_mc.visible=true;
                        clock0_mc.visible=false;
                        clock2_mc.visible=false;
                        xinxi0_mc.visible=false;
                        xinxi1_mc.visible=false;
                        xinxi2_mc.visible=false;
                    }else if (usera[2].username==shujua[1]) {
                        clock2_mc.visible=true;
                        clock1_mc.visible=false;
                        clock0_mc.visible=false;
                        xinxi0_mc.visible=false;
                        xinxi1_mc.visible=false;
                        xinxi2_mc.visible=false;
                    }
                    
                } else { 
                    if (weizhi==0) {
                        if (turns==3) {
                            xinxi0_mc.visible=false;
                        }
                        jiaodizhu_mc.visible=true;
                        clock0_mc.visible=true;
                        clock1_mc.visible=false;
                        xinxi1_mc.visible=true;
                        xinxi1_mc.gotoAndStop(1);
                    } else if (weizhi==1) {
                        jiaodizhu_mc.visible=false;
                        clock2_mc.visible=true;
                        clock0_mc.visible=false;
                        xinxi0_mc.visible=true;
                        xinxi0_mc.gotoAndStop(1);
                    } else if (weizhi==2) {
                        clock1_mc.visible=true;
                        clock2_mc.visible=false;
                        xinxi2_mc.visible=true;
                        xinxi2_mc.gotoAndStop(1);
                    }
                }
                turns++;
            } else if (shujua[0]=="43") {

                turns++;
            } else if (shujua[0]=="49") {
                shuchu_txt.text+="发牌"+str;
                initPoker(shujua);

            } else {
                shuchu_txt.text+="未知"+str;
            }
            tishixinxi_mc.visible=false;
        }
        function jiaoh(e:MouseEvent) {
            xmlSocket.send("42&&");
        }
        function bujiaoh(e:MouseEvent) {
            xmlSocket.send("43&&");
        }
        function setUser() { 设置各用户,用户按逆时针排列0,1,2
            if (usera[0].username!="" && usera[0].jinbi!=0) {
                userPanel0_mc.visible=true;
                jinbi0_txt.visible=true;
                if (usera[0].zhunbei=="true") {
                    zhunbei0_mc.visible=true;
                } else {
                    zhunbei0_mc.visible=false;
                }
                userPanel0_mc.name_txt.text=usera[0].username;
                jinbi0_txt.text=usera[0].jinbi;
            } else {
                userPanel0_mc.visible=false;
                jinbi0_txt.visible=false;
                zhunbei0_mc.visible=false;
            }
            if (usera[0].zhunbei=="true") {
                huanzhuo_btn.visible=false;
                kaishi_btn.visible=false;

            } else {
                huanzhuo_btn.visible=true;
                kaishi_btn.visible=true;

            }
            if (usera[1].username!="" && usera[1].jinbi!=0) {
                userPanel2_mc.visible=true;
                jinbi2_txt.visible=true;
                dou2_mc.visible=true;
                if (usera[1].zhunbei=="true") {
                    zhunbei2_mc.visible=true;
                } else {
                    zhunbei2_mc.visible=false;
                }
                userPanel2_mc.name_txt.text=usera[1].username;
                jinbi2_txt.text=usera[1].jinbi;
            } else {
                userPanel2_mc.visible=false;
                jinbi2_txt.visible=false;
                zhunbei2_mc.visible=false;
                dou2_mc.visible=false;
            }
            if (usera[2].username!="" && usera[2].jinbi!=0) {
                userPanel1_mc.visible=true;
                jinbi1_txt.visible=true;
                dou1_mc.visible=true;
                if (usera[2].zhunbei=="true") {
                    zhunbei1_mc.visible=true;
                } else {
                    zhunbei1_mc.visible=false;
                }
                userPanel1_mc.name_txt.text=usera[2].username;
                jinbi1_txt.text=usera[2].jinbi;
            } else {
                userPanel1_mc.visible=false;
                jinbi1_txt.visible=false;
                zhunbei1_mc.visible=false;
                dou1_mc.visible=false;
            }
        }
        function zhunbeih(e:MouseEvent) {
            xmlSocket.send("41&&zhunbei");
        }
        function huanzhuoh() {
            xmlSocket.send("44&&huanzhuo");
        }
        function yincanh() {
            //ctrlInfo_mc.visible=false;
            //doubleEff_MC.visible=false;
            mingpaikaishi_btn.visible=false;
            mingpaikaishi_btn.gotoAndStop(1);
            kaishi_btn.visible=false;
            kaishi_btn.gotoAndStop(1);
            huanzhuo_btn.visible=false;
            chupai_btn.visible=false;
            buchu_btn.visible=false;
            tishi_btn.visible=false;
            popo0_mc.visible=false;
            popo1_mc.visible=false;
            popo2_mc.visible=false;

            zhunbei0_mc.visible=false;
            zhunbei1_mc.visible=false;
            zhunbei2_mc.visible=false;
            clock0_mc.visible=false;
            clock1_mc.visible=false;
            clock2_mc.visible=false;
            jiabei0_mc.visible=false;加倍
            jiabei1_mc.visible=false;
            jiabei2_mc.visible=false;
            duanxian0_mc.visible=false;断线
            duanxian1_mc.visible=false;
            duanxian2_mc.visible=false;
            tuoguan0_mc.visible=false;托管
            tuoguan1_mc.visible=false;
            tuoguan2_mc.visible=false;

            alertMC2.visible=false;
            alertMC1.visible=false;
            dizhu0_mc.stop();
            dizhu1_mc.stop();
            dizhu2_mc.stop();
            mingpaibeishu_mc.stop();
            tuoguan_btn.stop();
            fanbei_mc.visible=false;
            fanbei_mc.stop();
            tishi_mc.visible=false;
            tishi_mc.stop();

            anniu_mc.shengyin_btn.stop();
            xinxi0_mc.stop();
            xinxi0_mc.visible=false;
            teshu0_mc.visible=false;
            teshu0_mc.stop();
            xinxi1_mc.stop();
            xinxi1_mc.visible=false;
            teshu1_mc.visible=false;
            teshu1_mc.stop();
            xinxi2_mc.stop();
            xinxi2_mc.visible=false;
            teshu2_mc.visible=false;
            teshu2_mc.stop();
            mingpai_mc.visible=false;
            dipai_mc.pai1_mc.huase_mc.stop();
            dipai_mc.pai1_mc.shuzi_mc.stop();
            dipai_mc.pai2_mc.huase_mc.stop();
            dipai_mc.pai2_mc.shuzi_mc.stop();
            dipai_mc.pai0_mc.huase_mc.stop();
            dipai_mc.pai0_mc.shuzi_mc.stop();

            jiaodizhu_mc.visible=false;
            jiaodizhu_mc.jiao_mc.stop();
            jiaodizhu_mc.bujiao_mc.stop();
        }
        function soundh() {
            var s:Sound = new Sound();
            //s.addEventListener(ProgressEvent.PROGRESS, onLoadProgress);
            s.addEventListener(Event.COMPLETE, onLoadComplete);
            s.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
            var req:URLRequest = new URLRequest("bigSound.mp3");
            s.load(req);
        }
        function onLoadComplete(event:Event):void {
            var localSound:Sound = event.target as Sound;
            var channel:SoundChannel =  localSound.play(0,9999999);
            var panCounter:Number = 0;

            var trans:SoundTransform;
            trans = new SoundTransform(0, 0);
            trans.pan = Math.sin(panCounter);
            channel.soundTransform = trans;// or SoundMixer.soundTransform = trans;
            // panCounter += 0.05;

        }
        function onIOError(event:IOErrorEvent) {
            var s:Sound = new Sound();
            //s.addEventListener(ProgressEvent.PROGRESS, onLoadProgress);
            s.addEventListener(Event.COMPLETE, onLoadComplete);
            s.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
            var req:URLRequest = new URLRequest("bigSound.mp3");
            s.load(req);
        }
        function downh(e:MouseEvent) {
            isdown=true;
        }
        function uph(e:MouseEvent) {
            isdown=false;
        }
        function removeh() {
            for (var i:int=0; i<pukea.length; i++) { 遍历所有未出的牌
                if (pukea[i].y<0) {把y<0的牌从牌数组中删除
                    pai_mc.contains(pukea[i]) && pai_mc.removeChild(pukea[i]);显示中也移除
                    pukea.splice(i,1);
                    i--;
                }
            }
            if (pukea.length==0) {

            } else if (pukea.length==1) {
                pukea[0].x=firstx;
            } else {
                pukea[0].x=firstx-pukea.length*10;出牌时是右对齐的

            }
            for (var j:int=0; j<pukea.length; j++) {
                if (j!=0) {
                    pukea[j].x=pukea[j-1].x+20;
                }
            }
        }
        function addmc(p:poker) {
            pai_mc.addChild(p);
            pukea.push(p);
            p.addEventListener(MouseEvent.CLICK,ch);
            p.addEventListener(MouseEvent.MOUSE_OVER,overh);
            function overh(e:MouseEvent) {
                if (isdown) {
                    if (p.y<0) {
                        p.y+=20;
                    } else {
                        p.y-=20;
                    }
                }
            }
            function ch(e:MouseEvent) {
                if (p.y<0) {
                    p.y+=20;
                } else {
                    p.y-=20;
                }
            }
            if (pukea.length==1) {
                pukea[0].x=firstx;
            } else {
                pukea[0].x=firstx-pukea.length*10;
            }
            for (var i:int=0; i<pukea.length; i++) {
                if (i!=0) {
                    pukea[i].x=pukea[i-1].x+20;
                }
            }
        }
        function initPoker(saa:Array) {
            var shujua:Array=saa;
            minuteTimer= new Timer(300,17);
            minuteTimer.start();
            minuteTimer.addEventListener(TimerEvent.TIMER, timeOverh);
            function  timeOverh(event:TimerEvent){
                var p:poker=new poker();
                p.init(shujua[pukea.length*2+1],shujua[pukea.length*2+2]);
                addmc(p)
                adddonghua();
            }
        }
        function adddonghua() {
            //var
//            if (pukea.length==1) {
//                pukea[0].x=firstx;
//            } else {
//                pukea[0].x=firstx-pukea.length*10;
//            }
//            for (var i:int=0; i<pukea.length; i++) {
//                if (i!=0) {
//                    pukea[i].x=pukea[i-1].x+20;
//                }
//            }
//            //cardsInHandCtnRef2
            
            
        }
        function removedong1() {
            
        }
        function removedong2() {
            
        }
        function chupaih(e:MouseEvent) {
            removeh();
        }
    }

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

package ass {
    import flash.display.MovieClip;
    public class poker extends MovieClip{
        var hei:int=3; 黑桃为3
        var huase:String="";花色
        var shu:String="";数字
        public function poker() {
            this.gotoAndStop(1);
        }
        public function init(huase:String,shu:String) {
            this.huase=huase;
            this.shu=shu;
            if(huase=="1") {
                if(shu=="A") {
                    this.gotoAndStop(hei+1);
                }else if(shu=="2") {
                    this.gotoAndStop(hei+2);
                }else if(shu=="3") {
                    this.gotoAndStop(hei+3);
                }else if(shu=="4") {
                    this.gotoAndStop(hei+4);
                }else if(shu=="5") {
                    this.gotoAndStop(hei+5);
                }else if(shu=="6") {
                    this.gotoAndStop(hei+6);
                }else if(shu=="7") {
                    this.gotoAndStop(hei+7);
                }else if(shu=="8") {
                    this.gotoAndStop(hei+8);
                }else if(shu=="9") {
                    this.gotoAndStop(hei+9);
                }else if(shu=="10") {
                    this.gotoAndStop(hei+10);
                }else if(shu=="J") {
                    this.gotoAndStop(hei+11);
                }else if(shu=="Q") {
                    this.gotoAndStop(hei+12);
                }else if(shu=="K") {
                    this.gotoAndStop(hei+13);
                }
            }else if(huase=="2") {
                if(shu=="A") {
                    this.gotoAndStop(hei+1+13);
                }else if(shu=="2") {
                    this.gotoAndStop(hei+2+13);
                }else if(shu=="3") {
                    this.gotoAndStop(hei+3+13);
                }else if(shu=="4") {
                    this.gotoAndStop(hei+4+13);
                }else if(shu=="5") {
                    this.gotoAndStop(hei+5+13);
                }else if(shu=="6") {
                    this.gotoAndStop(hei+6+13);
                }else if(shu=="7") {
                    this.gotoAndStop(hei+7+13);
                }else if(shu=="8") {
                    this.gotoAndStop(hei+8+13);
                }else if(shu=="9") {
                    this.gotoAndStop(hei+9+13);
                }else if(shu=="10") {
                    this.gotoAndStop(hei+10+13);
                }else if(shu=="J") {
                    this.gotoAndStop(hei+11+13);
                }else if(shu=="Q") {
                    this.gotoAndStop(hei+12+13);
                }else if(shu=="K") {
                    this.gotoAndStop(hei+13+13);
                }
            }else if(huase=="3") {
                if(shu=="A") {
                    this.gotoAndStop(hei+1+13+13);
                }else if(shu=="2") {
                    this.gotoAndStop(hei+2+13+13);
                }else if(shu=="3") {
                    this.gotoAndStop(hei+3+13+13);
                }else if(shu=="4") {
                    this.gotoAndStop(hei+4+13+13);
                }else if(shu=="5") {
                    this.gotoAndStop(hei+5+13+13);
                }else if(shu=="6") {
                    this.gotoAndStop(hei+6+13+13);
                }else if(shu=="7") {
                    this.gotoAndStop(hei+7+13+13);
                }else if(shu=="8") {
                    this.gotoAndStop(hei+8+13+13);
                }else if(shu=="9") {
                    this.gotoAndStop(hei+9+13+13);
                }else if(shu=="10") {
                    this.gotoAndStop(hei+10+13+13);
                }else if(shu=="J") {
                    this.gotoAndStop(hei+11+13+13);
                }else if(shu=="Q") {
                    this.gotoAndStop(hei+12+13+13);
                }else if(shu=="K") {
                    this.gotoAndStop(hei+13+13+13);
                }
            }else if(huase=="4") {
                if(shu=="A") {
                    this.gotoAndStop(hei+1+13+13+13);
                }else if(shu=="2") {
                    this.gotoAndStop(hei+2+13+13+13);
                }else if(shu=="3") {
                    this.gotoAndStop(hei+3+13+13+13);
                }else if(shu=="4") {
                    this.gotoAndStop(hei+4+13+13+13);
                }else if(shu=="5") {
                    this.gotoAndStop(hei+5+13+13+13);
                }else if(shu=="6") {
                    this.gotoAndStop(hei+6+13+13+13);
                }else if(shu=="7") {
                    this.gotoAndStop(hei+7+13+13+13);
                }else if(shu=="8") {
                    this.gotoAndStop(hei+8+13+13+13);
                }else if(shu=="9") {
                    this.gotoAndStop(hei+9+13+13+13);
                }else if(shu=="10") {
                    this.gotoAndStop(hei+10+13+13+13);
                }else if(shu=="J") {
                    this.gotoAndStop(hei+11+13+13+13);
                }else if(shu=="Q") {
                    this.gotoAndStop(hei+12+13+13+13);
                }else if(shu=="K") {
                    this.gotoAndStop(hei+13+13+13+13);
                }
            }else if(huase=="5"){
                if(shu=="d") {
                    this.gotoAndStop(56);
                }else {
                    this.gotoAndStop(57);
                }
            }
        }
    }
}

原创粉丝点击