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(); }
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())); } }