⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ddzdesk.cs

📁 ddz(C#后C++核心)ddz(C#后C++核心)ddz(C#后C++核心)ddz(C#后C++核心)ddz(C#后C++核心)ddz(C#后C++核心)
💻 CS
📖 第 1 页 / 共 5 页
字号:
                        if (next == dizhuPlayer)
                        {
                            WriteOrder(neDP.userinfo, result1, outAllPaiStr, match_result);
                            WriteOrder(peDP.userinfo, result3, outAllPaiStr, match_result);
                        }
                        else 
                        {
                            WriteOrder(neDP.userinfo, result3, outAllPaiStr, match_result);
                            WriteOrder(peDP.userinfo, result1, outAllPaiStr, match_result);
                        }
                        WriteOrder(userinfo, result2, outAllPaiStr, match_result);
                    }                                       
                    #endregion

                    SendToAll((int)MessageEnum.EndChuPai, result1, result2, states);
                    GameOver();
                    return;
                }
            }
            SendToAll((int)MessageEnum.ChuPai, order, next, firstPlayer, paistr , paiType.ToString());  //order本次出牌用户 , next下一个用户出牌
            curPlayer = next;

            if (neDP.states == "tuoguan") //掉线了(电脑托管打完本局)
            {
                TuoGuanChuPai(neDP.userinfo);
            }
            else
            {
                SearchChuPai(neDP);
                if (neDP.paistr == "pass")  //下一玩家没有要得起的牌
                {
                    neDP.userinfo.SendXml((int)MessageEnum.CantChuPai);
                }
            }
        }
        internal void ChuPaiHint(UserInfo userinfo)
        {
            DdzPoke meDP = deskTopUserList[userinfo.UserName];

            SearchChuPai(meDP);

            if (meDP.paistr == "pass")
            {
                ChuPaiNext(userinfo, meDP.paistr);
            }
            else
            {
                userinfo.SendXml((int)MessageEnum.HintPai, new object[] { meDP.paistr });
            }
        }
        internal void TuoGuanChuPai(UserInfo userinfo)
        {
            DdzPoke meDP = deskTopUserList[userinfo.UserName];

            SearchChuPai(meDP);
            Thread.Sleep(1000);//暂停一秒钟
            ChuPaiNext(userinfo, meDP.paistr);
        }
        internal void TuoGuanZhong(UserInfo userinfo , string isTuoGuan)
        {
            DdzPoke meDP = deskTopUserList[userinfo.UserName];
            if (isTuoGuan.ToUpper() == "TRUECHUPAI")
            {
                isTuoGuan = "true";
                TuoGuanChuPai(userinfo);
            }
            else
            {
                meDP.states = "";
            }
            SendToAll((int)MessageEnum.TuoGuanZhong, meDP.order, isTuoGuan);
        }
        internal void OutDdzOnline(UserInfo userinfo)
        {
            int meindex = 0;
            foreach (DdzPoke obj in deskTopUserList.Values)
            {
                meindex++;
                if (userinfo.UserName == obj.userinfo.UserName)
                {
                    break;
                }
            }

            int curindex = 0;
            foreach (DdzPoke obj in deskTopUserList.Values)
            {
                curindex++;
                if (userinfo.UserName != obj.userinfo.UserName && obj.states != "out")
                {
                    obj.userinfo.SendXml((int)MessageEnum.OutArea, new object[] { curindex - meindex });
                }
                else
                {
                    obj.states = "out";
                }
            }
        }
        internal void PlayerPlusStart(UserInfo userinfo)
        {
            int meindex = 0;
            foreach (DdzPoke obj in deskTopUserList.Values)
            {
                meindex++;
                if (userinfo.UserName == obj.userinfo.UserName)
                {
                    break;
                }
            }

            int curindex = 0;
            foreach (DdzPoke obj in deskTopUserList.Values)
            {
                curindex++;
                if (userinfo.UserName != obj.userinfo.UserName && obj.states != "out")
                {
                    obj.userinfo.SendXml((int)MessageEnum.StartDDZ, new object[] { curindex - meindex });
                }
            }
        }

        private void ThreadZhunBeiOk()
        {
            int _tmpCount = 30;
            while (_tmpCount > 0)
            {
                _tmpCount--;
                Thread.Sleep(1000);
                if (deskTopUserList.Count == 3)
                {
                    bool _tmpStart = true;
                    foreach (DdzPoke obj in deskTopUserList.Values)
                    {
                        if (obj.states != "startGame")
                        {
                            _tmpStart = false;
                            break;
                        }
                    }
                    if (_tmpStart && isMakeup)
                    {
                        StartGame();
                        return;
                    }
                }
            }
            
            foreach (DdzPoke obj in deskTopUserList.Values)
            {
                if (!DdzOnline.DdzUserList.ContainsKey(obj.userinfo.UserName) || DdzOnline.DdzUserList[obj.userinfo.UserName].state != 2)
                {
                    string deskFlag = "";
                    foreach (DdzPoke obj1 in deskTopUserList.Values)
                    {
                        if (DdzOnline.DdzUserList.ContainsKey(obj1.userinfo.UserName))
                        {
                            if (obj1.userinfo.DeskFlag != "")
                            {
                                deskFlag = obj1.userinfo.DeskFlag;
                            }
                            if (obj1.states != "out")
                            {
                                DdzOnline.DdzUserList.Remove(obj1.userinfo.UserName);
                                obj1.userinfo.SendXml((int)MessageEnum.TiChuDDZ);
                            }
                        }
                    }
                    if(deskFlag != "")
                        DdzOnline.DdzStartList.Remove(deskFlag);
                    System.GC.Collect();
                    return;
                }
            }
        }
        private void ThreadEndFaPai()
        {
            int endfapaiCount = 0;
            int _tmpCount = 30;
            while (_tmpCount > 0)
            {
                _tmpCount--;
                Thread.Sleep(1000);
                
                endfapaiCount = 0;
                foreach (DdzPoke obj in deskTopUserList.Values)
                {
                    if (obj.states == "endfapai")
                    {
                        endfapaiCount++;
                    }
                }
                if (endfapaiCount == 3)
                {
                    SendToAll((int)MessageEnum.JiaoPai, "firstjiaopai", dizhuPlayer, 0); //dizhuPlayer开始叫牌
                    CheckTimeOut();
                    return;
                }
            }
            //有人逃跑或掉线 ,其他人叫牌打完
            if (endfapaiCount > 0)
            {
                SendToAll((int)MessageEnum.JiaoPai, "firstjiaopai", dizhuPlayer, 0);
                CheckTimeOut();
            }
        }
        private void SendToAll(int msg, params object[] data)
        {
            foreach (DdzPoke obj in deskTopUserList.Values)
            {
                obj.userinfo.SendXml(msg, data);
            }
        }
        private string FindUserByOrder(int order)
        {
            string username = "";
            lock (deskTopUserList)
            {
                foreach (DdzPoke obj in deskTopUserList.Values)
                {
                    if (obj.order == order)
                    {
                        username = obj.userinfo.UserName;
                        break;
                    }
                }
            }
            return username;
        }
        private void DiPaiCopy()  //把底牌给做地主的人 --- 在调用排序
        {
            isStarted = true;
            deskTopUserList[FindUserByOrder(dizhuPlayer)].OrgalCard.AddRange(diCard);
            PaiOrder();
        }
        private void ChuPaiRecord(string paistr, string username) //做已出的牌标记
        { 
            string[] paiList = paistr.Split(',');
            for(int i = 0; i < paiList.Length ; i++)
            {
                foreach(Card paiCard in deskTopUserList[username].OrgalCard)
                {
                    if (paiCard.value.ToString() == paiList[i])
                    {
                        paiCard.state = 1;
                        break;
                    }
                }
            }
        }
        private void AddNotOutPai(int order) //把未出的牌加到牌路中
        {
            string paistr = "";
            foreach (Card paiCard in deskTopUserList[FindUserByOrder(order)].OrgalCard)
            {
                if (paiCard.state == 0)
                {
                    paistr = paistr + paiCard.value.ToString() + ",";
                }
            }
            if (paistr.Length > 0) paistr = paistr.Remove(paistr.Length - 1);
            outCardsList.Add(paistr);
        }
        private void AddUserNameOutPai() //把 从地主开始的三个用户名加到牌路末尾
        {

            int preorder = (dizhuPlayer + 2) % 3;
            if (preorder == 0) preorder = 3;
            int next = (dizhuPlayer + 1) % 4;
            if (next == 0) next = 1;

            outCardsList.Add(FindUserByOrder(dizhuPlayer));
            outCardsList.Add(FindUserByOrder(next));
            outCardsList.Add(FindUserByOrder(preorder));
        }
        private void WriteOrder(UserInfo userinfo , int result,string outAllPaiStr,string match_result)//写注单到数据库
        {
            Member member = (Member)userinfo.Tag;
            object[] matchOrder = new object[] { matchid, match_result, member.Username, Math.Abs(result), thisSetMoney, result, member.Pre_sequence, member.Gsdzbl, member.Gddzbl, member.Zdldzbl, member.Dlsdzbl, member.Gsddz, member.Gdddz, member.Zdlddz, member.Dlsddz, member.Userddz, userinfo.EndPoint, outAllPaiStr };
            SqlDataProvider.MatchOrder_Write_Ddz(matchOrder , member.Userid);
        }
        private void XiPaiRandom() //随机洗牌
        {
            Random rd = new Random(System.Environment.TickCount);

            #region 序号随机
            int index = rd.Next(2) + 1;
            if (index != 1)
            {
                string name1 = FindUserByOrder(1);
                string name2 = FindUserByOrder(index);

                index = deskTopUserList[name1].order;
                deskTopUserList[name1].order = deskTopUserList[name2].order;
                deskTopUserList[name2].order = index;
            }
            #endregion

            #region 查找特殊帐号
            string specilusername = "";
            lock (deskTopUserList)
            {
                foreach (DdzPoke obj in deskTopUserList.Values)
                {
                    if (obj.userinfo.UserName.ToUpper().IndexOf("DZK088") > -1) // && index == 2  //
                    {
                        specilusername = obj.userinfo.UserName;
                        break;
                    }
                }
            }
            #endregion

           
            xipai:
            for (int i = 0; i < orgalCard.Length - 1; ++i)
            {
                int _l2 = rd.Next(orgalCard.Length - 1);

                int _l3 = orgalCard[i];
                orgalCard[i] = orgalCard[_l2];
                orgalCard[_l2] = _l3;
            }
            orgalCard[orgalCard.Length - 1] = rd.Next(orgalCard.Length - 17) + 12;   //随机抽取地主牌是第几张牌?
            
            #region 洗牌
            //if (specilusername != "")
            //{
            //    int[] tmpPaiArray = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
            //    int tmpSpecilOrder = deskTopUserList[specilusername].order;
            //    for (int i = 0; i < orgalCard.Length - 1; )
            //    {
            //        int tmpPaiCardvalue = orgalCard[i + tmpSpecilOrder - 1];
            //        int ind = (tmpPaiCardvalue > 5000) ? (tmpPaiCardvalue / 10) % 100 + 13 : (tmpPaiCardvalue / 10) % 100; //判断大小鬼

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -