6603斗地主看牌制作原理

自助开通VIP,整站资源任意下载

一原理:

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

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

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

                                               

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

 

二实现:

 

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

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

#define ADMIN   //超级玩家标志

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

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

 

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

 

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

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

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

两种情况都在

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

#ifdef ADMIN

//扑克变量

6603斗地主看牌制作原理

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

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

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

#endif

6603斗地主看牌制作原理

 

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

 

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

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); //游戏显牌

进行处理。

本站源码仅做学术研究,自娱自乐使用,不得用于赌博性质的非法商业用途!转载请说明出处!
棋牌资源网 » 6603斗地主看牌制作原理

这里有你所需要的,找专业的人做专业的事!

游戏演示 联系客服