您的位置:首页 > 理论基础 > 计算机网络

网络五子棋的架构设计(二)--界面层

2010-04-15 18:50 357 查看

界面的处理

为了有一个测试的平台,我先开始写界面层

由于服务端和客户端的下棋业务逻辑处理是完全相同的,因此计划在一个窗体内实现,窗体内只维护一个INet接口的实例。另外再使用另一个窗体用于建立连接,并且把得到的INet实例传递给主要游戏窗体。
首先是服务端接收到连接后的处理:

void server_OnConnected(object sender, EventArgs e)
{
EventHandler handle = delegate(object s, EventArgs e1)
{
label1.Text = "连接ok";
this.Hide();
};
this.Invoke(handle);
INet obj=sender as INet;
CEventHandle c = new CEventHandle(CreateWindow);
this.Invoke(c, obj, PieceLibrary.PieceType.Black);
}


由于C#2.0后默认不允许跨线程操作,因此这里使用this.Invoke利用窗体主线程调用委托来实现跨线程操作,服务器一旦有人连接成功后,便创建一个游戏主窗体,并且把本身自己传递给主窗体,执黑棋。

客户端操作只需要直接连接成功后,创建游戏窗体即可
Client client = new Client(this.txtIP.Text, 12345);
try
{
this.btnCreate.Enabled = false;
this.btnJoin.Enabled = false;
label1.Text = "连接中,请稍候……";
client.Connect();
this.Hide();
INet obj = client as INet;
CreateWindow(obj, PieceLibrary.PieceType.White);


这样,在界面层中,服务端和客户端的不同的操作完全由开始窗体frmBegin来解决,而作为游戏的主窗体frmMain只需要面对两个完全一样的INet接口的实例即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: