예제 #1
0
 private void panelPlayer2_Paint(object sender, PaintEventArgs e)
 {
     if (this.server != null)
     {
         DConsole.PaintClient(true);
     }
     if (this.client != null)
     {
         DConsole.PaintServer();
     }
 }
예제 #2
0
        private void btnStart_Click(object sender, EventArgs e)
        {
            DConsole.IsStart = true;
            if (this.server != null)
            {
                for (int i = 3; i < 18; i++)  //嵌套for循环初始化54张牌
                {
                    for (int j = 1; j < 5; j++)
                    {
                        if (i <= 15)
                        {
                            DConsole.allPoker.Add(new Poker((PokerNum)i, (PokerColor)j));
                        }
                    }
                    if (i >= 16)
                    {
                        DConsole.allPoker.Add(new Poker((PokerNum)i, PokerColor.黑桃));
                    }
                }                           //嵌套for循环初始化54张牌

#if DEBUG
                Console.WriteLine(DConsole.allPoker.Count);
                foreach (Poker onePoker in DConsole.allPoker)
                {
                    Console.WriteLine(onePoker.pokerColor.ToString() + onePoker.ToString());
                }
#endif
                if (!DConsole.IsRestart)
                {
                    server.SendDataForClient("YouAreClient1", 1);
                }
                DConsole.shuffle();                                  //洗牌
                DConsole.deal();                                     //发牌
                this.player1.sort();                                 //把牌从大到小排序
                this.player1.g = this.panelPlayer1.CreateGraphics(); //把panelPlayer1的Graphics传递给player1
                this.player1.Paint();                                //在panelPlayer1中画出player1的牌
                this.player2.sort();
                this.player3.sort();
                server.SendDataForClient("SPokerCount" + "17", 1);
                Thread.Sleep(200);
                server.SendDataForClient("SPokerCount" + "17", 2);
                Thread.Sleep(200);
                server.SendDataForClient("PokerCount" + "17", 1);
                Thread.Sleep(200);
                server.SendDataForClient("PokerCount" + "17", 2);
                Thread.Sleep(200);
                DConsole.PaintClient(17, 1);
                DConsole.PaintClient(17, 2);
                DConsole.PaintLandLord(false);
                //this.panelPlayer1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.panelPlayer1_MouseClick); //给panelPlayer1添加一个点击事件
                this.btnStart.Enabled = false;
                this.btnStart.Visible = false;
            }
        }
예제 #3
0
 public void SelectLandLordEnd()
 {
     DConsole.PaintLandLord(true);
     if (this.isLandLord)
     {
         foreach (Poker poker in DConsole.LandLordPokers)
         {
             this.pokers.Add(poker);
         }
         this.sort();
         this.Paint();
     }
 }
예제 #4
0
        /// <summary>
        /// 发牌
        /// </summary>
        public static void deal()
        {
            PokerGroup player2Pokers = new PokerGroup();
            PokerGroup player3Pokers = new PokerGroup();

            player1.pokers.Clear();
            for (int i = 0; i < 17; i++)
            {
                player1.pokers.Add(allPoker[i]);
            }
            for (int i = 17; i < 34; i++)
            {
                player2Pokers.Add(allPoker[i]);
            }
            for (int i = 34; i < 51; i++)
            {
                player3Pokers.Add(allPoker[i]);
            }
            LandLordNum = new Random().Next(1, 4);
            PokerGroup landLordPokers = new PokerGroup();

            for (int i = 51; i < 54; i++)
            {
                landLordPokers.Add(allPoker[i]);
            }
            LandLordPokers = landLordPokers;
            player1.sort();
            if (server.SendDataForClient("StartPokers", player2Pokers, 1) && server.SendDataForClient("StartPokers", player3Pokers, 2))
            {
                DConsole.Write("[系统消息]发牌成功!");
                server.SendOrder(LandLordNum);
            }
            //if (server.SendDataForClient(player2.pokers, 1) && server.SendDataForClient(player3.pokers, 2))
            //{
            //    DConsole.Write("[系统消息]发牌成功!");
            //    server.SendOrder(DConsole.LandLordNum);
            //}
            else
            {
                DConsole.Write("[系统消息]发牌失败!");
            }

#if DEBUG //调试时在Console上显示的信息
            Console.WriteLine("玩家一的牌");
            foreach (Poker onePoker in player1.pokers)
            {
                Console.WriteLine(onePoker.pokerColor.ToString() + onePoker.ToString());
            }
#endif
        }
예제 #5
0
 private void btnLead_Click(object sender, EventArgs e) //出牌按钮的事件处理程序
 {
     if (player1.lead())
     {
         this.btnLead.Visible = false;
         this.btnPass.Visible = false;
         if (this.server != null)
         {
             server.SendDataForClient("SPokerCount" + Convert.ToString(this.player1.pokers.Count), 1);
             Thread.Sleep(100);
             server.SendDataForClient("SPokerCount" + Convert.ToString(this.player1.pokers.Count), 2);
             Thread.Sleep(100);
             server.SendDataForClient("server", DConsole.leadPokers, 1);
             Thread.Sleep(100);
             server.SendDataForClient("server", DConsole.leadPokers, 2);
             Thread.Sleep(100);
             if (this.player1.pokers.Count == 0 && DConsole.IsStart)
             {
                 DConsole.Winer = 1;
                 DConsole.Restart();
             }
             else
             {
                 server.SendDataForClient("Order", 2); //当server端的牌出完了后,就不再传递出牌权限.
             }
             DConsole.player1.haveOrder = false;
         }
         if (this.client != null)
         {
             client.SendDataForServer("PokerCount" + Convert.ToString(this.player1.pokers.Count));
             Thread.Sleep(500);
             client.SendDataForServer("client", DConsole.leadPokers);
             Thread.Sleep(100);
             this.player1.haveOrder = false;
         }
         player1.g.Clear(this.BackColor);
         player1.Paint();
         DConsole.PaintPlayer1LeadPoker();
     }
     else
     {
         DConsole.Write("[系统消息]:您出的牌不符合规则!");
     }
 }
예제 #6
0
 public new void Add(PokerGroup PG)
 {
     if (DConsole.IsRules(PG))
     {
         if (PG.type == PokerGroupType.双王)
         {
             DConsole.multiple *= 3;
         }
         if (PG.type == PokerGroupType.炸弹)
         {
             DConsole.multiple *= 2;
         }
         base.Add(PG);
     }
     else
     {
         DConsole.Write("[系统消息]:有玩家作弊,重新启动游戏.");
     }
 }
예제 #7
0
 private void btnNotLandLord_Click(object sender, EventArgs e)
 {
     this.player1.areYouLandLord  = false;
     this.player1.isLandLord      = false;
     this.btnNeedLandLord.Visible = false;
     this.btnNotLandLord.Visible  = false;
     if (this.server != null)
     {
         if (DConsole.LandLordNum == 3)
         {
             DConsole.Restart();
             return;
         }
         this.server.SendDataForClient("AreYouLandLord", 2);
     }
     if (this.client != null)
     {
         this.client.SendDataForServer("AreYouLandLord");
     }
 }
예제 #8
0
        private void 创建游戏ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.server      = new Server(); //创建服务器
            DConsole.server  = this.server;
            DConsole.player1 = this.player1;
            this.server.listener.Start();  //开始监听
            this.player2    = new Player();
            this.player3    = new Player();
            this.acceptConn = new Thread(new ThreadStart(this.server.Connection)); //新建一个线程用于接受请求连接
            this.acceptConn.IsBackground = true;
            this.acceptConn.Name         = "检测客户端的连接并接受的线程";
            this.acceptConn.Start(); //开始线程
            DConsole.Write("[系统消息]:创建游戏成功,等待其他人链接");
            this.timerServer.Enabled = true;
            ToolStripMenuItem tsmi = (ToolStripMenuItem)(this.menuStrip1.Items["游戏ToolStripMenuItem"]);

            tsmi.DropDownItems["创建游戏ToolStripMenuItem"].Enabled  = false;
            tsmi.DropDownItems["自定义分数ToolStripMenuItem"].Enabled = false;
            tsmi.DropDownItems["加入游戏ToolStripMenuItem"].Enabled  = false; //禁用相关菜单
        }
예제 #9
0
 /// <summary>
 /// 检测是否符合游戏规则,如果符合则出牌,否则返回flase
 /// </summary>
 public bool lead()
 {
     DConsole.leadPokers = leadPokers;
     this.leadPokers.Clear();
     foreach (int selectPoker in this.selectPokers)  //迭代循环把已选中的牌添加到leadPokers
     {
         this.leadPokers.Add(this.pokers[selectPoker]);
     }
     if (DConsole.IsRules(this.leadPokers))
     {
         if (DConsole.player1.isBiggest || DConsole.leadPokers > DConsole.leadedPokerGroups[DConsole.leadedPokerGroups.Count - 1])
         {
             if (DConsole.leadPokers.type == PokerGroupType.炸弹)
             {
                 DConsole.multiple *= 2;
             }
             if (DConsole.leadPokers.type == PokerGroupType.双王)
             {
                 DConsole.multiple *= 3;
             }
             DConsole.player1.isBiggest = true;
             this.BakPoker();                               //备份现有pokers,下次出牌时需要用到
             foreach (int selectPoker in this.selectPokers) //在pokers里移除已经出过的牌
             {
                 this.pokers.Remove(this.bakPokers[selectPoker]);
             }
             this.selectPokers.Clear();  //清空已选牌
             return(true);
         }
         else
         {
             this.leadPokers.Clear();
             return(false);
         }
     }
     else
     {
         this.leadPokers.Clear();
         return(false);
     }
 }
예제 #10
0
 private void btnOK_Click(object sender, EventArgs e)
 {
     if (this.client.SendOk())
     {
         btnOK.Enabled            = false;
         btnOK.Visible            = false;
         this.timerClient.Enabled = true;
         if (this.AcceptServerData == null)
         {
             this.AcceptServerData = new Thread(new ThreadStart(client.AcceptServerData));
             this.AcceptServerData.IsBackground = true;
             this.AcceptServerData.Name         = "接收服务器数据";
         }
         if (this.AcceptServerData.ThreadState == (ThreadState.Background | ThreadState.Unstarted))
         {
             this.AcceptServerData.Start();
         }
         DConsole.Write("[系统消息]:已向服务器发送准备消息,正在等待响应...");
     }
     else
     {
         MessageBox.Show("准备失败,请检查网络连接", "火拼斗地主");
     }
 }
예제 #11
0
 private void panelLandLordPokers_Paint(object sender, PaintEventArgs e)
 {
     DConsole.PaintLandLord();
 }
예제 #12
0
 private void panelPlayer1LeadPoker_Paint(object sender, PaintEventArgs e)
 {
     DConsole.PaintPlayer1LeadPoker();
 }
예제 #13
0
 private void timerServer_Tick(object sender, EventArgs e)
 {
     if (this.server.client1 != null && this.server.client2 != null)
     {
         if (this.tbState.Text.IndexOf("连接建立成功,等待其他人准备", 0, this.tbState.Text.Length) < 0) //防止向用户重复发送此消息
         {
             DConsole.Write("[系统消息]:连接建立成功,等待其他人准备");
         }
         if (this.lblClient1Name.Text == "" && this.lblClient2Name.Text == "")
         {
             this.lblClient1Name.Text = server.client1Name;
             this.lblClient2Name.Text = server.client2Name;
         }
         if (this.AcceptClient1Data == null)  //如果线程没有初始化则先初始化
         {
             this.AcceptClient1Data = new Thread(new ThreadStart(server.AccpetClient1Data));
             this.AcceptClient1Data.IsBackground = true;
             this.AcceptClient1Data.Name         = "服务器检测客户端1是否发送准备消息";
         }
         if (this.AcceptClient1Data.ThreadState == (ThreadState.Background | ThreadState.Unstarted))  //如果线程没有启动则先启动,由于之前把线程的IsBackGround设置为true,所以这里要这样写
         {
             this.AcceptClient1Data.Start();
         }
         if (this.AcceptClient2Data == null)  //如果线程没有初始化则先初始化
         {
             this.AcceptClient2Data = new Thread(new ThreadStart(server.AccpetClient2Data));
             this.AcceptClient2Data.IsBackground = true;
             this.AcceptClient2Data.Name         = "服务器检测客户端2是否发送准备消息";
         }
         if (this.AcceptClient2Data.ThreadState == (ThreadState.Background | ThreadState.Unstarted))  //如果线程没有启动则先启动,由于之前把线程的IsBackGround设置为true,所以这里要这样写
         {
             this.AcceptClient2Data.Start();
         }
         if (this.server.client1IsOk && this.server.client2IsOk)
         {
             this.server.client1IsOk = false;
             this.server.client2IsOk = false;
             this.server.SendDataForClient("EveryOneIsOk", 1);
             this.server.SendDataForClient("EveryOneIsOk", 2);
             this.server.everyOneIsOk = true;
         }
         if (this.server.everyOneIsOk)         //启动线程后,服务器循环获取客户端的NetworkStream,然后判断客户端是否发送"OK"信息,如果发送,则把everyOneIsOk设置为True.
         {
             this.server.everyOneIsOk = false; //为下一局做准备
             DConsole.Write("[系统消息]:所有人已准备,可以开始游戏");
             this.btnStart.Enabled = true;
             this.btnStart.Visible = true;
         }
         if (DConsole.player1.haveOrder)
         {
             this.btnLead.Enabled = true;
             this.btnLead.Visible = true;
             if (!DConsole.player1.isBiggest)
             {
                 this.btnPass.Visible = true;
             }
         }
         else
         {
             this.btnLead.Visible = false;
             this.btnPass.Visible = false;
         }
         if (DConsole.player1.isBiggest)
         {
             this.btnPass.Visible = false;
         }
         if (DConsole.player1.areYouLandLord)
         {
             btnNeedLandLord.Visible = true;
             btnNotLandLord.Visible  = true;
         }
         lblScore1.Text = "分数:" + DConsole.serverScore.ToString();
         lblScore2.Text = "分数:" + DConsole.client1Score.ToString();
         lblScore3.Text = "分数:" + DConsole.client2Score.ToString();
     }
 }
예제 #14
0
        /// <summary>
        /// 接收服务器发送的数据
        /// </summary>
        public void AcceptServerData()
        {
            NetworkStream Ns  = client.GetStream();
            string        str = "";

            while (true)
            {
                byte[] bytes = new byte[108];
                Ns.Read(bytes, 0, 108);
                str = Encoding.Default.GetString(bytes);
                if (str.StartsWith("StartPokers"))
                {
                    DConsole.IsStart = true;
                    str = str.Replace("StartPokers", "");
                    str.Trim();
                    byte[]     bytePokers = Encoding.Default.GetBytes(str);
                    PokerGroup pokers     = new PokerGroup(bytePokers);
                    if (pokers.Count == 17)
                    {
                        DConsole.player1.pokers.Clear();
                        DConsole.player1.pokers = pokers;
                        DConsole.player1.sort();
                        DConsole.player1.Paint();
                    }
                    DConsole.PaintLandLord();
                    continue;
                }
                if (str.StartsWith("CName"))
                {
                    str = str.Replace("CName", "");
                    DConsole.OtherClientName = str;
                    continue;
                }
                if (str.StartsWith("SPokerCount"))
                {
                    str = str.Replace("SPokerCount", "");
                    int pokerCount = Convert.ToInt32(str);
                    DConsole.PaintServer(pokerCount);
                    continue;
                }
                if (str.StartsWith("PokerCount"))
                {
                    str = str.Replace("PokerCount", "");
                    int pokerCount = Convert.ToInt32(str);
                    DConsole.PaintClient(pokerCount);
                    continue;
                }
                if (str.StartsWith("YouAreClient1"))
                {
                    DConsole.ChangePlace();
                    continue;
                }
                if (str.StartsWith("EveryOneIsOk"))
                {
                    this.everyIsOk = true;
                    continue;
                }
                if (str.StartsWith("server"))
                {
                    PokerGroup pokers = new PokerGroup();
                    str = str.Replace("server", "");
                    byte[] bytePg = Encoding.Default.GetBytes(str);
                    pokers.GetPokerGroup(bytePg);
                    DConsole.leadedPokerGroups.Add(pokers);
                    DConsole.WriteLeadedPokers();
                    DConsole.PaintPlayer2LeadPoker(pokers);
                    continue;
                }
                if (str.StartsWith("client"))
                {
                    PokerGroup pokers = new PokerGroup();
                    str = str.Replace("client", "");
                    byte[] bytePg = Encoding.Default.GetBytes(str);
                    pokers.GetPokerGroup(bytePg);
                    DConsole.leadedPokerGroups.Add(pokers);
                    DConsole.WriteLeadedPokers();
                    DConsole.PaintPlayer3LeadPoker(pokers);
                    continue;
                }
                if (str.StartsWith("Order"))
                {
                    DConsole.player1.haveOrder = true;
                    continue;
                }
                if (str.StartsWith("ClientPass"))
                {
                    DConsole.gPlayer3LeadPoker.Clear(DConsole.backColor);
                    DConsole.gPlayer3LeadPoker.DrawString("不要", new System.Drawing.Font("宋体", 20), System.Drawing.Brushes.Red, 5, 5);
                    continue;
                }
                if (str.StartsWith("ServerPass"))
                {
                    DConsole.gPlayer2LeadPoker.Clear(DConsole.backColor);
                    DConsole.gPlayer2LeadPoker.DrawString("不要", new System.Drawing.Font("宋体", 20), System.Drawing.Brushes.Red, 5, 5);
                    continue;
                }
                if (str.StartsWith("IsBiggest"))
                {
                    DConsole.player1.isBiggest = true;
                    continue;
                }
                if (str.StartsWith("NoBiggest"))
                {
                    DConsole.player1.isBiggest = false;
                    continue;
                }
                if (str.StartsWith("AreYouLandLord"))
                {
                    DConsole.player1.areYouLandLord = true;
                    continue;
                }
                if (str.StartsWith("LandLordPokers"))
                {
                    PokerGroup pokers = new PokerGroup();
                    str = str.Replace("LandLordPokers", "");
                    byte[] bytePg = Encoding.Default.GetBytes(str);
                    pokers.GetPokerGroup(bytePg);
                    DConsole.LandLordPokers = pokers;
                    DConsole.player1.SelectLandLordEnd();
                    continue;
                }
                if (str.StartsWith("ClientIsLandLord"))
                {
                    DConsole.lblClient2Name.Text     += "(地主)";
                    DConsole.lblClient2Name.ForeColor = System.Drawing.Color.Red;
                    DConsole.PaintClient(20);
                    continue;
                }
                if (str.StartsWith("ServerIsLandLord"))
                {
                    DConsole.lblClient1Name.Text     += "(地主)";
                    DConsole.lblClient1Name.ForeColor = System.Drawing.Color.Red;
                    DConsole.PaintServer(20);
                    continue;
                }
                if (str.StartsWith("ReStart"))
                {
                    DConsole.leadedPokerGroups.Clear();
                    DConsole.leadPokers.Clear();
                    DConsole.player1.pokers.Clear();
                    DConsole.player1.areYouLandLord   = false;
                    DConsole.player1.isBiggest        = false;
                    DConsole.player1.isLandLord       = false;
                    DConsole.player1.haveOrder        = false;
                    DConsole.lblClient1Name.Text      = DConsole.lblClient1Name.Text.Replace("(地主)", "");
                    DConsole.lblClient2Name.Text      = DConsole.lblClient2Name.Text.Replace("(地主)", "");
                    DConsole.lblClient1Name.ForeColor = System.Drawing.Color.Black;
                    DConsole.lblClient2Name.ForeColor = System.Drawing.Color.Black;
                    DConsole.PaintLandLord(false);
                    DConsole.IsRestart = true;
                    continue;
                }
                if (str.StartsWith("YouScore"))
                {
                    str = str.Replace("YouScore", "");
                    DConsole.serverScore = Convert.ToInt32(str);
                    continue;
                }
                if (str.StartsWith("ClientScore"))
                {
                    str = str.Replace("ClientScore", "");
                    DConsole.client2Score = Convert.ToInt32(str);
                    continue;
                }
                if (str.StartsWith("ServerScore"))
                {
                    str = str.Replace("ServerScore", "");
                    DConsole.client1Score = Convert.ToInt32(str);
                    continue;
                }
            }
        }
예제 #15
0
        /// <summary>
        /// 循环接收客户端1的请求数据
        /// </summary>
        public void AccpetClient1Data()
        {
            NetworkStream Ns1  = client1.GetStream();
            string        str1 = "";

            while (true)
            {
                PokerGroup pg     = new PokerGroup();
                byte[]     bytes1 = new byte[108];
                Ns1.Read(bytes1, 0, 108);
                str1 = Encoding.Default.GetString(bytes1);
                if (str1.StartsWith("Name"))
                {
                    str1             = str1.Replace("Name", "");
                    this.client1Name = str1;
                    this.SendDataForClient("CName" + str1, 2);
                    continue;
                }
                if (str1.StartsWith("OK"))
                {
                    this.client1IsOk = true;
                    continue;
                }
                if (str1.StartsWith("PokerCount"))
                {
                    Thread.Sleep(sleep);
                    SendDataForClient(str1, 2);
                    str1 = str1.Replace("PokerCount", "");
                    int PokerCount = Convert.ToInt32(str1);
                    if (PokerCount == 0 && DConsole.IsStart)
                    {
                        DConsole.Winer = 2;
                        DConsole.Restart();
                    }
                    DConsole.PaintClient(PokerCount, 1);
                    continue;
                }
                if (str1.StartsWith("client"))
                {
                    SendDataForClient(str1, 2);
                    Thread.Sleep(sleep);
                    str1 = str1.Replace("client", "");
                    pg.GetPokerGroup(Encoding.Default.GetBytes(str1));
                    DConsole.leadedPokerGroups.Add(pg);
                    DConsole.PaintPlayer2LeadPoker(pg);
                    DConsole.WriteLeadedPokers();
                    if (!DConsole.IsRestart)
                    {
                        DConsole.player1.haveOrder = true;  //client1出牌后归server出牌,前提是没有Restart,Restart后出牌权限消失
                    }
                    else
                    {
                        DConsole.IsRestart = false;
                    }
                    continue;
                }
                //Client放弃出牌,权限交给服务器
                if (str1.StartsWith("Pass"))
                {
                    DConsole.gPlayer2LeadPoker.Clear(DConsole.backColor);
                    DConsole.gPlayer2LeadPoker.DrawString("不要", new System.Drawing.Font("宋体", 20), System.Drawing.Brushes.Red, 5, 5);
                    DConsole.player1.haveOrder = true;
                    SendDataForClient("ClientPass", 2);
                    continue;
                }
                if (str1.StartsWith("IamIsBiggest"))
                {
                    DConsole.player1.isBiggest = false;
                    this.SendDataForClient("NoBiggest", 2);
                    continue;
                }
                if (str1.StartsWith("AreYouLandLord"))
                {
                    if (DConsole.LandLordNum == 1)
                    {
                        DConsole.Restart();
                        continue;
                    }
                    DConsole.player1.areYouLandLord = true;
                    continue;
                }
                if (str1.StartsWith("IamLandLord"))
                {
                    DConsole.lblClient1Name.Text     += "(地主)";
                    DConsole.lblClient1Name.ForeColor = System.Drawing.Color.Red;
                    SendDataForClient("ClientIsLandLord", 2);
                    Thread.Sleep(sleep);
                    DConsole.PaintClient(20, 1);
                    SendDataForClient("LandLordPokers", DConsole.LandLordPokers, 1);
                    Thread.Sleep(sleep);
                    SendDataForClient("LandLordPokers", DConsole.LandLordPokers, 2);
                    DConsole.player1.SelectLandLordEnd();
                    continue;
                }
            }
        }
예제 #16
0
        /// <summary>
        /// 循环接收客户端2的请求数据
        /// </summary>
        public void AccpetClient2Data()
        {
            NetworkStream Ns2  = client2.GetStream();
            string        str1 = "";

            while (true)
            {
                PokerGroup pg     = new PokerGroup();
                byte[]     bytes2 = new byte[108];
                Ns2.Read(bytes2, 0, 108);
                str1 = Encoding.Default.GetString(bytes2);
                if (str1.StartsWith("Name"))
                {
                    str1             = str1.Replace("Name", "");
                    this.client2Name = str1;
                    this.SendDataForClient("CName" + str1, 1);
                    continue;
                }
                if (str1.StartsWith("OK"))
                {
                    this.client2IsOk = true;
                    continue;
                }
                if (str1.StartsWith("PokerCount"))
                {
                    Thread.Sleep(sleep);
                    SendDataForClient(str1, 1);
                    str1 = str1.Replace("PokerCount", "");
                    int PokerCount = Convert.ToInt32(str1);
                    if (PokerCount == 0 && DConsole.IsStart)
                    {
                        DConsole.Winer = 3;
                        DConsole.Restart();
                    }
                    DConsole.PaintClient(PokerCount, 2);
                    continue;
                }
                if (str1.StartsWith("client"))
                {
                    SendDataForClient(str1, 1);
                    Thread.Sleep(sleep);
                    str1 = str1.Replace("client", "");
                    pg.GetPokerGroup(Encoding.Default.GetBytes(str1));
                    DConsole.leadedPokerGroups.Add(pg);
                    DConsole.PaintPlayer3LeadPoker(pg);
                    DConsole.WriteLeadedPokers();
                    if (!DConsole.IsRestart)
                    {
                        SendDataForClient("Order", 1);  //权限交给client1 前提是没有Restart
                    }
                    else
                    {
                        DConsole.IsRestart = false; //当检测到已经Restart时,复位Restart使它还原为false供下次使用
                    }
                    System.Threading.Thread.Sleep(sleep);
                    continue;
                }
                //Client2放弃出牌,权限交给Client1
                if (str1.StartsWith("Pass"))
                {
                    DConsole.gPlayer3LeadPoker.Clear(DConsole.backColor);
                    DConsole.gPlayer3LeadPoker.DrawString("不要", new System.Drawing.Font("宋体", 20), System.Drawing.Brushes.Red, 5, 5);
                    SendDataForClient("ClientPass", 1);
                    Thread.Sleep(500);
                    SendDataForClient("Order", 1);
                    continue;
                }
                if (str1.StartsWith("IamIsBiggest"))
                {
                    DConsole.player1.isBiggest = false;
                    this.SendDataForClient("NoBiggest", 1);
                    continue;
                }
                if (str1.StartsWith("AreYouLandLord"))
                {
                    if (DConsole.LandLordNum == 2)
                    {
                        DConsole.Restart();
                        continue;
                    }
                    SendDataForClient("AreYouLandLord", 1);
                    continue;
                }
                if (str1.StartsWith("IamLandLord"))
                {
                    DConsole.lblClient2Name.Text     += "(地主)";
                    DConsole.lblClient2Name.ForeColor = System.Drawing.Color.Red;
                    SendDataForClient("LandLordPokers", DConsole.LandLordPokers, 1);
                    SendDataForClient("LandLordPokers", DConsole.LandLordPokers, 2);
                    SendDataForClient("ClientIsLandLord", 1);
                    DConsole.PaintClient(20, 2);
                    DConsole.player1.SelectLandLordEnd();
                    continue;
                }
            }
        }