拼吾爱程序人生

首页 » .Net编程 » C# » 基于TCP的网络游戏黑白棋系列(三):游戏大厅
cobra - 2008-10-11 22:41:00
上一节我们讲到了客户端发送Login命令后,服务器返回欢迎信息,完成了一个简单的数据传输。这一节我们来完成游戏大厅的基本功能,我们首先思考一下游戏大厅的基本功能:

1 提供可供对弈的游戏桌,游戏大厅可供多桌玩家同时游戏,为了考虑游戏大厅服务器的负载能力,应该设置一个人数的上限和桌数的上限。实际上前面提到的功能抽象出来就是一些数据的状态集合。

2 当玩家登入大厅,应该直观的显示当前大厅的就座情况,方便玩家选择。此处应该考虑大厅的直观显示。

3 当玩家选择某一位置就坐,游戏大厅的相应状态数据应发生更改,任何玩家都能看到大厅的就座情况的变化,方便做出选择。比如a选择坐在第一桌的黑方位置,则b应该看到该位置不可落坐,只能选择其他位置就坐。

尽量从面向对象的角度考虑,我们应当把游戏大厅,游戏桌,玩家看做对象。建议大家使用面向对象的方法去思考,个人感觉服务器客户端通信的网络程序主要涉及通信协议(就是我们前面提到的命令,参数1,参数2等等)的分析,设计不好的话到最后你会发现逻辑复杂到难以控制的程度。

下面我们分别看一下这几个对象(有删减,具体请看源代码)

Code


当服务器程序启动的时候,需要初始化游戏大厅的数据;而当客户端登录到游戏大厅后,按照前面列出的逻辑,我们需要把游戏大厅的状态在客户端直观的显示出来。那怎么才能得到游戏大厅的状态数据呢?没错,也是利用的客户端服务器之间的通讯。

当客户端向服务器发送Login命令后,服务器处理完毕后,返回Tables命令返回状态数据

Code


客户端接受到Tables命令协议进行分析,直观显示游戏大厅的就座情况,这里为了简单,采用了动态生成若干组checkbox控件添加到Panel的方法,比较简单但能够说明问题。checkbox选中表明已有玩家就座,如果未选中表明可以在此处落座。

这部分代码就不列出来了,可以看一下原程序。

如果玩家选择在某一位置落座,将出发CheckBox的CheckedChanged事件,并向服务器发送SitDown命令

Code


服务器分析SitDown命令


Code




到这里,我们把游戏大厅的简单逻辑都处理了,下一节将介绍客户端棋盘的呈现。

源代码下载 :
 附件: 您所在的用户组无法下载或查看附件










(文/basilwang  出处/博客园

 您可能对 [C#] 的这些文章也感兴趣:

创建不规则窗体和控件(2)
C#代码关闭Windows XP
C#开发终端式短信的原理和方法
利用C#重启远程计算机(1)
GDI+中常见的几个问题(7)
VisualC#的剪切板编程
利用VisualC#打造一个平滑的进度条
利用C#重启远程计算机
Microsoft 消息队列(MSMQ)简介及实例程序
C#动态生成树型结构的Web程序设计
1
查看完整版本: 基于TCP的网络游戏黑白棋系列(三):游戏大厅
Modify by pin5i DZNT_ExpandPackage 2.1.3258 2007-2008 pin5i.com
  Total Unique Visitors: