游戏客户端编码
来源:互联网 发布:理财软件哪个最好 编辑:程序博客网 时间:2024/04/30 00:48
游戏前台客户端包含游戏大厅,游戏两部分。
游戏大厅部分包含以下功能:
1、与游戏大厅服务器的网络通信
2、根据服务器的版本更新本地文件
3、界面的显示,换肤功能
=================================================================================
网络通信部分封装成了一个类
class CHallSocket
...{
public:
void requestLogon(); //请求登录
void requestGameList(); //请求游戏列表
void requestRoomList(); //请求某个游戏的房间列表
void requestLoginGame(); //请求登录某个游戏的房间
void onrepLogon(); //大厅服务器 回复 请求登录
void onrepGameList(); //大厅服务器 回复 游戏列表
void onrepRoomList(); //大厅服务器 回复 某个游戏的房间列表
void onLoginGame(); //大厅服务器 回复 登录某个游戏的房间
protected:
void onRecv(); //socket 网络低层回调函数, 当接收数据时触发, 再调用 onrepXXX 函数
};
...{
public:
void requestLogon(); //请求登录
void requestGameList(); //请求游戏列表
void requestRoomList(); //请求某个游戏的房间列表
void requestLoginGame(); //请求登录某个游戏的房间
void onrepLogon(); //大厅服务器 回复 请求登录
void onrepGameList(); //大厅服务器 回复 游戏列表
void onrepRoomList(); //大厅服务器 回复 某个游戏的房间列表
void onLoginGame(); //大厅服务器 回复 登录某个游戏的房间
protected:
void onRecv(); //socket 网络低层回调函数, 当接收数据时触发, 再调用 onrepXXX 函数
};
游戏大厅的界面显示窗口类
class CHallDialog
...{
// ....
};
...{
// ....
};
为了使 CHallDialog 与 CHallSocket 之间能够通信,在 CHallSocket 中加了一个方法。
class CHallSocket
...{
public:
void requestLogon(); //请求登录
void requestGameList(); //请求游戏列表
void requestRoomList(); //请求某个游戏的房间列表
void requestLoginGame(); //请求登录某个游戏的房间
void onrepLogon(); //大厅服务器 回复 请求登录
void onrepGameList(); //大厅服务器 回复 游戏列表
void onrepRoomList(); //大厅服务器 回复 某个游戏的房间列表
void onLoginGame(); //大厅服务器 回复 登录某个游戏的房间
void setHallDialog(CHallDialog* pDlg); // 通过调用 pDlg 的方法,与 CHallDialog 通信
protected:
void onRecv(); //socket 网络低层回调函数, 当接收数据时触发, 再调用 onrepXXX 函数
};
...{
public:
void requestLogon(); //请求登录
void requestGameList(); //请求游戏列表
void requestRoomList(); //请求某个游戏的房间列表
void requestLoginGame(); //请求登录某个游戏的房间
void onrepLogon(); //大厅服务器 回复 请求登录
void onrepGameList(); //大厅服务器 回复 游戏列表
void onrepRoomList(); //大厅服务器 回复 某个游戏的房间列表
void onLoginGame(); //大厅服务器 回复 登录某个游戏的房间
void setHallDialog(CHallDialog* pDlg); // 通过调用 pDlg 的方法,与 CHallDialog 通信
protected:
void onRecv(); //socket 网络低层回调函数, 当接收数据时触发, 再调用 onrepXXX 函数
};
在 CHallDialog 中是这样调用的
CHallSocket m_Hallsock;
......
m_Hallsock.setHallDialog(this);
m_Hallsock.requestLogin();
......
......
m_Hallsock.setHallDialog(this);
m_Hallsock.requestLogin();
......
这样做终于解决了网络与界面通信的问题.
但客户要求“用户登录”为一个窗口,“游戏列表”在另外一个窗口显示······
于是又是代码做了修改。
class CHallSocket
...{
public:
void requestLogon(); //请求登录
void requestGameList(); //请求游戏列表
void requestRoomList(); //请求某个游戏的房间列表
void requestLoginGame(); //请求登录某个游戏的房间
void onrepLogon(); //大厅服务器 回复 请求登录
void onrepGameList(); //大厅服务器 回复 游戏列表
void onrepRoomList(); //大厅服务器 回复 某个游戏的房间列表
void onLoginGame(); //大厅服务器 回复 登录某个游戏的房间
void setLogonDialog(CLogonDialog* pDlg); // 新增这个方法,与CLogonDialog通信
void setHallDialog(CHallDialog* pDlg); // 通过调用 pDlg 的方法,与 CHallDialog 通信
protected:
void onRecv(); //socket 网络低层回调函数, 当接收数据时触发, 再调用 onrepXXX 函数
};
...{
public:
void requestLogon(); //请求登录
void requestGameList(); //请求游戏列表
void requestRoomList(); //请求某个游戏的房间列表
void requestLoginGame(); //请求登录某个游戏的房间
void onrepLogon(); //大厅服务器 回复 请求登录
void onrepGameList(); //大厅服务器 回复 游戏列表
void onrepRoomList(); //大厅服务器 回复 某个游戏的房间列表
void onLoginGame(); //大厅服务器 回复 登录某个游戏的房间
void setLogonDialog(CLogonDialog* pDlg); // 新增这个方法,与CLogonDialog通信
void setHallDialog(CHallDialog* pDlg); // 通过调用 pDlg 的方法,与 CHallDialog 通信
protected:
void onRecv(); //socket 网络低层回调函数, 当接收数据时触发, 再调用 onrepXXX 函数
};
接着客户又要求要变成三个窗口来显示。照上面的改变,又要增加接口。无辜的是 CHallSocket 类,即使变成三个窗口来显示是不关它的事,但它也需要修改来适合界面。
于是,能不能想个办法,在网络通信流程不改变的情况下,界面显示的方法改变(如果改成一个窗口显示,三个窗口显示等等),都不改变 CHallSocket 类?
(未完,待续)
- 游戏客户端编码
- 游戏客户端编码-2
- Http Client 客户端编码
- 休闲游戏客户端框架
- 拉起游戏客户端carsh
- u3d游戏客户端架构
- u3d游戏客户端架构
- 王哲:游戏客户端趋势
- 游戏客户端是什么?
- 游戏客户端_登陆
- u3d游戏客户端架构
- 游戏客户端开发杂记
- akoj-1138-游戏编码
- 游戏编码问题
- 游戏编码及过程
- 游戏客户端之cocos2dx客户端应用思路
- CmppSpClient 客户端编码 (cmpp2.0)
- oracle客户端字符编码设置
- Linux里的字体设置问题
- 在vs.net2003中实现迭代器(Iterator)
- NoClassDefFoundError异常排除步骤
- typedef struct 用法详解
- 读书笔记《Mastering Regular Expressions》(四)
- 游戏客户端编码
- 字符串的使用
- VS2005快捷键
- Thinking in C++ (1-11) 小结
- Windowsx.h使用之ListBox control message APIs
- 筷子 、森林
- continue的作用
- DotNet解决方案下分层和子项目的划分
- struts+spring+hibernate整合