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

📄 ddzdesk.cs

📁 ddz(C#后C++核心)ddz(C#后C++核心)ddz(C#后C++核心)ddz(C#后C++核心)ddz(C#后C++核心)ddz(C#后C++核心)
💻 CS
📖 第 1 页 / 共 5 页
字号:
            //        tmpPaiArray[ind]++;
            //        i += 3;
            //        if (i < 12)
            //            i++;
            //    }
            //    int tmpcount = 0;
            //    for (int i = 1; i < tmpPaiArray.Length - 2; i++)
            //    {
            //        if (tmpPaiArray[i] == 4)
            //            tmpcount++;
            //    }
            //    if(tmpcount < 3) //小于三炸继续洗牌
            //        goto xipai;
            //    else
            //        orgalCard[orgalCard.Length - 1] = 11 + tmpSpecilOrder;
            //}
            #endregion

            #region 洗牌2
            if (specilusername != "" && DdzOnline.IsThreeBomb) 
            {
                int tmpSpecilOrder = deskTopUserList[specilusername].order;
                int tmpzhadan = 3;// rd.Next(2, 4);
                int[] tmpzhadanArray = new int[] { 0, 0, 0, 0 };

                for (int i = 0; i < tmpzhadan; i++)
                {
                    tmpzhadanArray[i] = rd.Next(13) + 1;
                    for (int j = i; j > 0; j--)
                    {
                        if (tmpzhadanArray[i] == tmpzhadanArray[j - 1])
                        {
                            tmpzhadanArray[i] = rd.Next(13) + 1;
                            j = i;
                        }
                    }

                    for(int j = 0; j < 4;j++)
                    {
                        int tmpposition = 11 + i * 12 + j * 3 + tmpSpecilOrder;
                        int tmpcurpai = 1000 + tmpzhadanArray[i] * 10 + j + 1;
                        int search_p = 0;
                        for (int p = 0; p < orgalCard.Length - 1; ++p)
                        {
                            if (orgalCard[p] == tmpcurpai)
                            {
                                search_p = p;
                                break;
                            }
                        }
                        if (search_p != 0 && tmpposition != search_p)
                        {
                            int _l3 = orgalCard[search_p];
                            orgalCard[search_p] = orgalCard[tmpposition];
                            orgalCard[tmpposition] = _l3;
                        }
                    }
                }

                for (int i = 0; i < 3; i++)
                {
                    int tmpposition = i * 4 + tmpSpecilOrder - 1;
                    int tmpcurpai = 1000 + 13 * 10 + i + 1;
                    if (i == 0) {
                        tmpcurpai = 5025;
                    }
                    int search_p = 0;
                    for (int p = 0; p < orgalCard.Length - 1; ++p)
                    {
                        if (orgalCard[p] == tmpcurpai)
                        {
                            search_p = p;
                            break;
                        }
                    }
                    if (search_p != 0 && tmpposition != search_p)
                    {
                        int _l3 = orgalCard[search_p];
                        orgalCard[search_p] = orgalCard[tmpposition];
                        orgalCard[tmpposition] = _l3;
                    }
                }

                orgalCard[orgalCard.Length - 1] = 11 + tmpSpecilOrder;
            }
            #endregion
        }        
        private void PaiOrder()    //给每家的牌排序(由小到大)
        {
            foreach (DdzPoke obj in deskTopUserList.Values)
            {
                ArrayListCompare compare = new ArrayListCompare();
                obj.OrgalCard.Sort(compare);
            }
        }        
        private void GameOver()
        {
            isEnded = true;
            string deskFlag = deskTopUserList[FindUserByOrder(dizhuPlayer)].userinfo.DeskFlag;
            Thread.Sleep(1000);
            string[] arrDeskFlag = deskFlag.Split('_');
            for (int i = 0; i < arrDeskFlag.Length; i++)
            {
                deskTopUserList[arrDeskFlag[i]].userinfo.DeskFlag = "";
                DdzOnline.DdzUserList.Remove(arrDeskFlag[i]);
            }
            DdzOnline.DdzStartList.Remove(deskFlag);
            System.GC.Collect();
        }

        private void CheckTimeOut() 
        {
            if (isEnded) return;

            thread1Count = 40;
            if (thread1 == null)
            {
                thread1 = new Thread(new ThreadStart(CheckTimeOutDeal));
                thread1.Start();
            }
        }
        private void CheckTimeOutDeal()
        {
            while (thread1Count > 0 && !isEnded) 
            {
                if (thread1Count == 9 || thread1Count == 4)
                {
                    SendToAll((int)MessageEnum.TimeLag, curPlayer);
                }
                thread1Count--;
                Thread.Sleep(1000);
            }
            thread1 = null;
            if (isEnded) return;

            if (!isStarted)
            {
                DdzPoke curDP = deskTopUserList[FindUserByOrder(curPlayer)];
                JiaoPaiNext(curDP.userinfo, 0);
            }
            else
            {
                DdzPoke curDP = deskTopUserList[FindUserByOrder(curPlayer)];
                curDP.states = "tuoguan";
                TuoGuanChuPai(curDP.userinfo);
            }
        }

        //测试用
        private void WritePaiToText(string content)
        {
            using(FileStream paiFile = new FileStream("D:/paitext.dat", FileMode.Append, FileAccess.Write, FileShare.Write))
            {
                byte[] data = new UTF8Encoding(true).GetBytes(content);
                paiFile.Write(data , 0 , data.Length);
                paiFile.Close();
                paiFile.Dispose();
            }            
        }
        private string ReadPaiToText()
        {
            using (FileStream paiFile = new FileStream("D:/paitext.dat", FileMode.Open))
            {
                byte[] buf = new byte[120];                
                paiFile.Read(buf, 0, 120);
               
                paiFile.Close();
                paiFile.Dispose();
                
                return new UTF8Encoding(true).GetString(buf);
                //return Encoding.UTF8.GetString(buf);
            }
        }

        #region 牌型判断
        // = 2 判断是否是一对牌;
        private int IsTwo(string paistrlist)
        {
            ArrayList paiArrayList = new ArrayList(paistrlist.Split(','));           

            int counter = 0;
            counter = paiArrayList.Count;
            if (counter != 2 || int.Parse(paiArrayList[0].ToString()) / 10 != int.Parse(paiArrayList[1].ToString()) / 10)
                return 0;

            return int.Parse(paiArrayList[0].ToString());
        } 
        // = 2 判断是否是火箭;
        private int IsRocket(string paistrlist)
        {
            ArrayList paiArrayList = new ArrayList(paistrlist.Split(','));

            int counter = 0;
            counter = paiArrayList.Count;
            if (counter != 2 || int.Parse(paiArrayList[0].ToString()) / 10 + int.Parse(paiArrayList[1].ToString()) / 10 != 1003)
                return 0;

            return 5015;
        }

        // = 3 判断是否是三张;
        private int Is3(string paistrlist)
        {
            ArrayList paiArrayList = new ArrayList(paistrlist.Split(','));

            int counter = 0;
            counter = paiArrayList.Count;
            if (counter != 3 || int.Parse(paiArrayList[0].ToString()) / 10 != int.Parse(paiArrayList[1].ToString()) / 10 || int.Parse(paiArrayList[0].ToString()) / 10 != int.Parse(paiArrayList[2].ToString()) / 10)
                return 0;

            return int.Parse(paiArrayList[0].ToString());
        }

        // = 4 判断是否是三带一单;
        private int Is3_1(string paistrlist)
        {
            ArrayList paiArrayList = new ArrayList(paistrlist.Split(','));
            paiArrayList.Sort();

            int counter = 0;                        //总牌张数;
            counter = paiArrayList.Count;
            if (counter != 4)
                return 0;

            int[] tmpPaiArray = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };  //保存对应大小牌的张数
            for (int i = 0; i < paiArrayList.Count; i++)
            {
                int pai = int.Parse(paiArrayList[i].ToString());
                int index = (pai > 5000) ? (pai / 10) % 100 + 13 : (pai / 10) % 100;            //判断大小鬼
                tmpPaiArray[index]++;
            }

            for (int i = 1; i < tmpPaiArray.Length; i++)
            {
                if (tmpPaiArray[i] == 3)
                {
                    for (int k = 0; k < paiArrayList.Count; k++)
                    {
                        int pai = int.Parse(paiArrayList[k].ToString());
                        if (i == (pai / 10) % 100)
                        {
                            return pai;
                        }
                    }
                }
            }
            return 0;
        }

        // = 5 判断是否是三带一对;
        private int Is3_2(string paistrlist)
        {
            ArrayList paiArrayList = new ArrayList(paistrlist.Split(','));
            paiArrayList.Sort();

            int counter = 0;                        //总牌张数;
            counter = paiArrayList.Count;
            if (counter != 5)
                return 0;

            int[] tmpPaiArray = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };  //保存对应大小牌的张数
            for (int i = 0; i < paiArrayList.Count; i++)
            {
                int pai = int.Parse(paiArrayList[i].ToString());
                int index = (pai > 5000) ? (pai / 10) % 100 + 13 : (pai / 10) % 100;            //判断大小鬼
                tmpPaiArray[index]++;
            }

            int m3 = 0, m2 = 0;
            for (int i = 1; i < tmpPaiArray.Length; i++)
            {
                if (tmpPaiArray[i] == 3)
                {
                    m3 = i;
                }
                if (tmpPaiArray[i] == 2)
                {
                    m2++;
                }
            }
            if (m2 > 0 && m3 > 0)
            {
                for (int k = 0; k < paiArrayList.Count; k++)
                {
                    int pai = int.Parse(paiArrayList[k].ToString());
                    if (m3 == (pai / 10) % 100)
                    {
                        return pai;
                    }
                }
            }

            return 0;
        }

        // = 4 判断是否是四张(炸弹); 
        private int IsBomb(string paistrlist)
        {
            ArrayList paiArrayList = new ArrayList(paistrlist.Split(','));

            int counter = 0;
            counter = paiArrayList.Count;
            if (counter != 4 ||
                int.Parse(paiArrayList[0].ToString()) / 10 != int.Parse(paiArrayList[1].ToString()) / 10 ||
                int.Parse(paiArrayList[0].ToString()) / 10 != int.Parse(paiArrayList[2].ToString()) / 10 ||
                int.Parse(paiArrayList[0].ToString()) / 10 != int.Parse(paiArrayList[3].ToString()) / 10)
                return 0;

            return int.Parse(paiArrayList[0].ToString());
        }

        // = 6 判断是否是四带两单(或单独一对);
        private int Is4_11(string paistrlist)
        {
            ArrayList paiArrayList = new ArrayList(paistrlist.Split(','));
            paiArrayList.Sort();

            int counter = 0;                        //总牌张数;
            counter = paiArrayList.Count;
            if (counter != 6)
                return 0;

            int[] tmpPaiArray = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };  //保存对应大小牌的张数
            for (int i = 0; i < paiArrayList.Count; i++)
            {
                int pai = int.Parse(paiArrayList[i].ToString());
                int index = (pai > 5000) ? (pai / 10) % 100 + 13 : (pai / 10) % 100;            //判断大小鬼
                tmpPaiArray[index]++;
            }

            int m4 = 0, m2 = 0, m1 = 0;
            for (int i = 1; i < tmpPaiArray.Length; i++)
            {

⌨️ 快捷键说明

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