Exemplo n.º 1
0
        private void ProcessData(SocketData data)
        {
            switch (data.Command)
            {
            case (int)SocketCommand.NOTIFY:
            {
                MessageBox.Show(data.Message);
                break;
            }

            case (int)SocketCommand.CONNECTED:
            {
                pnlChat.Enabled            = true;
                socket.isConnected         = true;
                ChessBoard.Players[1].Name = data.Message;
                MessageBox.Show("Người Chơi Còn Lại Đã Kết Nối Thành Công");
                socket.Send(new SocketData((int)SocketCommand.RECEIVE_NAME, ChessBoard.Players[0].Name, new Point()));
                pnlChessBoard.Enabled = true;
                break;
            }

            case (int)SocketCommand.NEW_GAME:
            {
                this.Invoke((MethodInvoker)(() =>
                    {
                        if (MessageBox.Show("Đối Thủ Muốn Tạo Game Mới", "New Game", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                        {
                            socket.Send(new SocketData((int)SocketCommand.ACCEPT_NEWGAME, "", new Point()));
                            NewGame();
                            if (firstPlayer == 0 && socket.isSever == true)
                            {
                                pnlChessBoard.Enabled = true;
                            }
                            else
                            {
                                if (firstPlayer == 1 && socket.isSever == false)
                                {
                                    pnlChessBoard.Enabled = true;
                                }
                                else
                                {
                                    pnlChessBoard.Enabled = false;
                                }
                            }
                        }
                        else
                        {
                            if (socket.isConnected == true)
                            {
                                socket.Send(new SocketData((int)SocketCommand.DENY_NEWGAME, "", new Point()));
                            }
                        }
                    }));
                break;
            }

            case (int)SocketCommand.SEND_POINT:
            {
                this.Invoke((MethodInvoker)(() =>
                    {
                        progressBar.Value = 0;
                        pnlChessBoard.Enabled = true;
                        tmCoolDown.Start();
                        ChessBoard.OtherPlayerMark(data.Point);
                        undoToolStripMenuItem.Enabled = true;
                    }));
                break;
            }

            case (int)SocketCommand.UNDO:
            {
                if (MessageBox.Show("Đối Thủ Muốn Undo", "Undo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    socket.Send(new SocketData((int)SocketCommand.ACCEPT_UNDO, "", new Point()));
                    Undo();
                    pnlChessBoard.Enabled = pnlChessBoard.Enabled == true ? false : true;
                }
                else
                {
                    if (socket.isConnected == true)
                    {
                        socket.Send(new SocketData((int)SocketCommand.DENY_UNDO, "", new Point()));
                    }
                }
                break;
            }

            case (int)SocketCommand.TIME_OUT:
            {
                undoToolStripMenuItem.Enabled = false;
                pnlChessBoard.Enabled         = false;
                tmCoolDown.Stop();
                MessageBox.Show("Hết giờ");
                break;
            }

            case (int)SocketCommand.EXIT:
            {
                tmCoolDown.Stop();
                MessageBox.Show("Người chơi đã thoát");
                socket.isConnected = false;
                break;
            }

            case (int)SocketCommand.ACCEPT_NEWGAME:
            {
                this.Invoke((MethodInvoker)(() =>
                    {
                        NewGame();
                        if (firstPlayer == 0 && socket.isSever == true)
                        {
                            pnlChessBoard.Enabled = true;
                        }
                        else
                        {
                            if (firstPlayer == 1 && socket.isSever == false)
                            {
                                pnlChessBoard.Enabled = true;
                            }
                            else
                            {
                                pnlChessBoard.Enabled = false;
                            }
                        }
                    }));
                break;
            }

            case (int)SocketCommand.ACCEPT_UNDO:
            {
                Undo();
                pnlChessBoard.Enabled = pnlChessBoard.Enabled == true ? false : true;
                break;
            }

            case (int)SocketCommand.DENY_NEWGAME:
            {
                MessageBox.Show("Đối Thủ Không Đồng Ý Tạo Game Mới");
                break;
            }

            case (int)SocketCommand.MESSAGE:
            {
                int i;
                if (socket.isSever == false)
                {
                    i = 0;
                }
                else
                {
                    i = 1;
                }
                listView.Items.Add(ChessBoard.Players[i].Name + ": " + data.Message);
                break;
            }

            case (int)SocketCommand.DENY_UNDO:
            {
                MessageBox.Show("Đối Thủ Không Đồng Ý Cho Bạn Undo");
                break;
            }

            case (int)SocketCommand.RECEIVE_NAME:
            {
                ChessBoard.Players[0].Name = data.Message;
                break;
            }

            default:
                break;
            }
            Listen();
        }
Exemplo n.º 2
0
 private void Connect_Click(object sender, EventArgs e)
 {
     Process[] pname = Process.GetProcessesByName("Unikey");
     if (pname.Length == 0)
     {
         if (File.Exists(Application.StartupPath + "\\Unikey.exe"))
         {
             Process.Start(Application.StartupPath + "\\Unikey.exe");
         }
     }
     socket.IP = txtIP.Text;
     if (!socket.ConnectSever() && socket.isSever == false)
     {
         socket.isSever = true;
         socket.CreateSever();
         MessageBox.Show("Bạn Là Sever");
         Connect.Enabled            = false;
         label2.Text                = "Người Chơi Tiếp Theo";
         ChessBoard.Players[0].Name = txtPlayer.Text;
         txtPlayer.ReadOnly         = true;
         Thread Wait = new Thread(() =>
         {
             int i = 0;
             while (true)
             {
                 try
                 {
                     SocketData data = (SocketData)socket.Receive();
                     ProcessData(data);
                 }
                 catch
                 {
                 }
                 Thread.Sleep(500);
                 i++;
                 if (socket.isConnected == true || i >= 40)
                 {
                     break;
                 }
             }
             if (i >= 40)
             {
                 socket.isSever = false;
                 isClose        = true;
                 socket.CloseSever();
                 MessageBox.Show("Sever Đã Đóng Do Quá Thời Gian");
                 Connect.Enabled = true;
                 Exit();
             }
         });
         Wait.IsBackground = true;
         Wait.Start();
     }
     else
     {
         socket.isSever             = false;
         socket.isConnected         = true;
         Connect.Enabled            = false;
         pnlChessBoard.Enabled      = false;
         label2.Text                = "Người Chơi Tiếp Theo";
         ChessBoard.Players[1].Name = txtPlayer.Text;
         txtPlayer.ReadOnly         = true;
         Listen();
         MessageBox.Show("Kết Nối Với Sever Thành Công");
         pnlChat.Enabled = true;
         socket.Send(new SocketData((int)SocketCommand.CONNECTED, ChessBoard.Players[1].Name, new Point()));
     }
 }