麻将听牌分析的疑问

Ryan_Curt 2008-07-10 11:37:50

//听牌分析
BYTE CGameLogic::AnalyseTingCard(BYTE cbCardIndex[MAX_INDEX], tagWeaveItem WeaveItem[], BYTE cbItemCount, DWORD dwChiHuRight)
{
//变量定义
tagChiHuResult ChiHuResult;//胡牌结果定义
ZeroMemory(&ChiHuResult,sizeof(ChiHuResult));//结构清零

//构造麻将
BYTE cbCardIndexTemp[MAX_INDEX];
CopyMemory(cbCardIndexTemp,cbCardIndex,sizeof(cbCardIndexTemp));//拷贝cbCardIndex[MAX_INDEX]

//听牌分析
for (BYTE i=0;i<MAX_INDEX;i++)
{
//空牌过滤
if (cbCardIndexTemp[i]==0)//某张牌的计数为零
continue;

//听牌处理
cbCardIndexTemp[i]--;//为什么要减1?

//听牌判断
for (BYTE j=0;j<MAX_INDEX;j++)
{
//胡牌分析
BYTE cbCurrentCard=SwitchToCardData(j);
BYTE cbHuCardKind=AnalyseChiHuCard(cbCardIndexTemp,WeaveItem,cbItemCount,cbCurrentCard,dwChiHuRight,ChiHuResult);

//结果判断
if (cbHuCardKind!=CHK_NULL)
return WIK_LISTEN;
}

//还原处理
cbCardIndexTemp[i]++;//为什么又加1?
}

return WIK_NULL;
}


在听牌分析的for循环中cbCardIndexTemp[i]为什么要减1,循环结束前又将其加1,为什么要这样做?
...全文
153 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hai040 2008-07-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 henry3695 的回复:]
任意取一张手里牌作为财神,进行分析
[/Quote]
麻将规则真是多啊

其实拿牌后打牌前也符合
就是在摸牌后,这时牌数就是胡牌的那个牌数
再判断任打一张后能不能听牌

具体是不是这样要看函数调用时上下文
我看你有戏 2008-07-10
  • 打赏
  • 举报
回复
任意取一张手里牌作为财神,进行分析
Ryan_Curt 2008-07-10
  • 打赏
  • 举报
回复
不是很明白
hai040 2008-07-10
  • 打赏
  • 举报
回复
原来的牌组合应该是拿牌后打牌前
hai040 2008-07-10
  • 打赏
  • 举报
回复
换一张牌
先--拿掉一张牌,再循环加牌看能不能胡
Ryan_Curt 2008-07-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 henry3695 的回复:]

前提是你这个版本的麻将需要支持财神的
[/Quote]

晕了!~~

我看你有戏 2008-07-10
  • 打赏
  • 举报
回复

前提是你这个版本的麻将需要支持财神的
Ryan_Curt 2008-07-10
  • 打赏
  • 举报
回复
能解释清楚一点吗?

64,662

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧