6603斗地主看牌制作原理

一原理:

基本原理同其他游戏的看牌实现原理。但由于没有控制端与控制类的支持,结构略有不同。

通过客户端实现“看牌请求”消息触发,将“看牌请求”消息发送给服务端。

服务端响应后,判断权限,如果权限为超级玩家,则将“底牌与3家手牌”,发送回请求的客户端端。

                                               

      客户端     ---------  (发送与接收看牌数据) ------------    服务端

二实现:

1.利用预编译指令区别超级玩家与普通玩家。

在分项目的头文件stdafx.h 中增加

#define ADMIN   //超级玩家标志

在具体实现文件中通过判断是否有该标志,在编译时过滤代码,

时超级玩家客户端编译时其特定代码编译进文件;普通玩家不带该标志,从而在编译时仍然是原理的代码。从而达到使一套生产两套客户端的目的。便于管理与维护,也便于增加页面等通用功能时该两套代码。

2.客户端发送看牌请求:

客户端按具体使用分两种情况,

1)超级玩家参加游戏方式看本卓其他玩家牌。

2)超级玩家旁观游戏方式看本桌所有玩家牌。

两种情况都在

CGameClientEngine.h 文件中声明了如下变量与函数,并在CGameClientEngine.cpp具体声明与具体实现。功能请看项目代码吧。

#ifdef ADMIN

//扑克变量

BYTE m_cbAdminHandCardData[GAME_PLAYER][MAX_COUNT]; //手上扑克

bool OnAdminSendLookon();//看牌请求函数

bool OnSubLookon(const void * pBuffer, WORD wDataSize);//游戏显牌

#endif

第一种情况,超级玩家参加游戏方式。

在发牌完成消息函数中,(牌发完了,就该看牌啦,要不游戏开始你还不知道牌呢)

OnMessageDispatchFinish(WPARAM wParam, LPARAM lParam)//发牌完成

增加了“看牌请求”函数

OnAdminSendLookon();  //发送看牌请求

该函数,将看牌消息传给服务端。

SendSocketData(SUB_C_LOOKON_RQ); //发送看牌请求

第二种情况,超级玩家旁观游戏方式。

主要功能与超级玩家参加游戏方式一致,但多一种如何看正在游戏中的玩家牌的状况。就是点击正在游戏中的桌子,进入的一刹那就看到他们的牌,得到他们的牌值数据。

这个功能是通过定时器事件触发完成。

在函数

bool CGameClientEngine::OnInitGameEngine() //创建引擎

中设置一个定时器,时间100毫秒,

SetTimer(IDI_CHECK_GAME_START,TIME_CHECK,NULL); //加载定时器

该函数作用是初始游戏,游戏初始后设置定时触发。

函数

CGameClientEngine::OnTimer(UINT nIDEvent)//时间消息处理函数

处理IDI_CHECK_GAME_START定时器,调用函数

OnAdminSendLookon();  //发送看牌请求

该函数,将看牌消息传给服务端。

SendSocketData(SUB_C_LOOKON_RQ); //发送看牌请求

3.服务端

函数

CTableFrameSink::OnGameMessage() //游戏消息处理函数

接收到SUB_C_LOOKON_RQ看牌请求消息,调用函数

OnSendLookOnData(pIServerUserItem); //发送看牌数据函数

将数据封装为

CMD_S_SendCardAdmin格式(内部含玩家底牌与3个玩家的手牌),以SUB_S_LOOKON看牌数据消息,发送给客户端。

4.客户端接收看牌数据:

函数

CGameClientEngine::OnEventGameMessage() //游戏消息处理函数

接收到SUB_S_LOOKON看牌数据消息,调用函数

OnSubLookon(pData,wDataSize); //游戏显牌

进行处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值