上篇:两人斗地主客户端源码(一)

下面继续……

//int CCardParserDDZ::CPtrListN::GetMaxPaiCount()
{int maxdd=0;for(POSITION pos=mList.GetHeadPosition ();pos != NULL;){PSTypeNode * ps = (PSTypeNode *) mList.GetNext(pos);if (!ps) continue;if(ps->mcount > maxdd)maxdd = ps->mcount;}return maxdd;
}bool CCardParserDDZ::CPtrListN::bSucceed()
{bool bAll=true;for(POSITION pos=mList.GetHeadPosition ();pos != NULL;){PSTypeNode * ps = (PSTypeNode *) mList.GetNext(pos);if (!ps) continue;if (ps->mps > 0) return -1;/未完if (ps->mcount > 0) return false;;/未完}return true;
}bool CCardParserDDZ::CPtrListN::bFailed()
{三个状态:-1:有ps->mps > 0说明还有三张可以检测,未完/0:没三张可以检测,但还有ps->mcount > 0,说明该LIST不满足三顺条件/1:没三张可以检测,无ps->mcount > 0,说明该LIST满足三顺条件(但还要lzcnt == 0)bool bAll=true;for(POSITION pos=mList.GetHeadPosition ();pos != NULL;){PSTypeNode * ps = (PSTypeNode *) mList.GetNext(pos);if (!ps) continue;if (ps->mps > 0) return false;/未完if (ps->mcount > 0) return false;;/未完}return true;
}CCardParserDDZ::CPtrListN::CPtrListN(CPtrList& lst)
{Clear();for(POSITION pos=lst.GetHeadPosition ();pos != NULL;){PSTypeNode * ps = (PSTypeNode *) lst.GetNext(pos);if (!ps) continue;if (ps->mcount < 1) continue;PSTypeNode * pss = new PSTypeNode ;pss->mcount = ps->mcount;pss->mps = ps->mps;mList.AddTail (pss);}
}CCardParserDDZ::CPtrListN::~CPtrListN()
{Clear();
}void CCardParserDDZ::CPtrListN::Clear()
{while(!mList.IsEmpty ()){PSTypeNode *p=(PSTypeNode*)mList.RemoveHead  ();if(p)delete p;}mList.RemoveAll ();
}/*
bool CCardParser::Is3s1s(CPtrList& lst,int lzcnt,赖子数int last3paidian,上一手3牌牌点,如=-1则为入口位bool bstart,int &firstpd)
{/3顺带单  递归CPtrListN t(lst);if(t.GetMaxPaiCount() > 3)return false;if(t.mList.IsEmpty () && lzcnt == 0)return true;/结束条件1bool bb=t.bSucceed();if(bb) {if(lzcnt == 0)return true;///return  lzcnt == 0;}if(t.bFailed())return false;int lzcnt0=lzcnt;if(bstart)last3paidian=-1;bool bNeedFind3=true;///while(1){PSTypeNode *p=NULL;int p3cnt=-1;int cur3paidian=(last3paidian - 1);if(cur3paidian < 0){bNeedFind3=false;if(bstart)bNeedFind3=true;}else  if(cur3paidian <= 2){lzcnt -= 3;if(lzcnt < 0)return false;bNeedFind3=false;}else bNeedFind3=true;//else{if(bNeedFind3){p=t.pFind(lzcnt,//int lzcnt,赖子数3,//int n,/要找的牌的张数true,//bool bFindShunPai,要找的牌是顺牌(TRUE,)带牌(FALSE)cur3paidian//int cur3paidian要找的牌是顺牌牌点,如=-1则为入口位);}if(!p){lzcnt -= 3;if(lzcnt < 0)return false;cur3paidian=(cur3paidian - 1);}else{if(bstart){cur3paidian=p->mps;firstpd=cur3paidian;}p3cnt=p->mcount;p->mps = -1;lzcnt -= 3 - p->mcount;p->mcount = 0;}}int p1cnt=-1;PSTypeNode *p1=t.pFind(lzcnt,//int lzcnt,赖子数1,//int n,/要找的牌的张数false,//bool bFindShunPai,要找的牌是顺牌(TRUE,)带牌(FALSE)cur3paidian//-1//cur3paidian//int cur3paidian要找的牌是顺牌牌点,如=-1则为入口位);if(!p1){lzcnt -= 1;if(lzcnt < 0)return false;}else{p1cnt=p1->mcount;lzcnt -= 1 - p1->mcount;p1->mcount = 0;}int fpd=-1;bb= Is3s1s(t.mList, lzcnt,cur3paidian ,false,fpd);if(bb)return true;///这一次找不到,恢复数据:   重新开始找if(p1){p1->mcount = p1cnt;}if(p){p->mcount = p3cnt;}lzcnt=lzcnt0;return  Is3s1s(t.mList, lzcnt,last3paidian ,true,firstpd);}}*/#pragma oncestruct PSTypeNode
{int mps,mcount;PSTypeNode(){mps = -1;mcount = 0;}
};class CCardParserDDZ
{int m_ifirstpd;CPtrList mList;class CPtrListN;
protected:virtual PSTypeNode *pFind(CPtrListN &listn,int lzcnt,赖子数int n,/要找的牌的张数bool bFindShunPai,要找的牌是顺牌(TRUE,)带牌(FALSE)int cur3paidian要找的牌是顺牌牌点,如=-1则为入口位);virtual bool IsShunAndDai(CPtrList& lst,/全部要分析牌的LISTint lzcnt,赖子数bool bstart,/是否第一次调用/顺牌信息:int last3paidian,上一手顺牌牌点,如=-1则为入口位int &firstpd,最大成顺牌点,返回直int nShunPai,顺牌张数,如四顺则为4/带牌信息:int nDaiPaiYuan,带牌张数,如四带单则为1,四带对则为2int nDaiPai带牌单元个数,如四带一单则为1,四带二单则为2);/可覆盖public:int m_iAllPaiCount,m_iLaiZiPaiDian,m_iLaiZiCount;bool Is1(int &firstpd);bool Is2(int &firstpd);bool Is3(int &firstpd);bool IsBomb(int &firstpd);bool Is1s(int &firstpd);bool Is2s(int &firstpd);bool Is3s(int &firstpd);bool Is3s1s(int &firstpd);bool Is3s2s(int &firstpd);bool Is4s1s1s(int &firstpd);bool Is4s2s(int &firstpd);bool Is4s2d(int &firstpd);//2对public:CCardParserDDZ(BYTE cardArr[],int allcount,int lzpaidian);~CCardParserDDZ(void);//protected:
private:class CPtrListN{public :CPtrList  mList;int GetMaxPaiCount();bool bSucceed();bool bFailed();CPtrListN(CPtrList& lst);virtual ~CPtrListN();private:void Clear();};};

下篇:两人斗地主客户端源码(三)

更多棋牌游戏源码,请前往棋牌社区查看。

两人斗地主客户端源码(二)相关推荐

  1. 两人斗地主客户端源码(一)

    新开的博客,本博客主要给大家分享棋牌游戏中的两人斗地主源代码(客户端).由于代码过长,没办法一次性提供完全,请见谅. #include "StdAfx.h" #include &q ...

  2. cocos2dx《单机斗地主》源码解剖之八 电脑玩家出牌与跟牌(结束)

    上一篇文章对玩家手中的牌进行分析归类,下面就该实现电脑玩家出牌与跟牌的策略了.首先我们来看看出牌的策略,代码如下: void GameScene::update(float delta){switch ...

  3. TeamTalk客户端源码分析七

    TeamTalk客户端源码分析七 一,CBaseSocket类 二,select模型 三,样例分析:登录功能 上篇文章我们分析了network模块中的引用计数,智能锁,异步回调机制以及数据的序列化和反 ...

  4. 若川诚邀你加源码共读群,帮助更多人学会看源码~

    小提醒:若川视野公众号面试.源码等文章合集在菜单栏中间[源码精选]按钮,欢迎点击阅读,也可以星标我的公众号,便于查找. 回复pdf,可以获取前端优质书籍. 最近我创建了一个源码共读的前端交流群,希望尝 ...

  5. 抖音seo源码 短视频seo源码二次开发,怎么使用抖音seo源码,视频seo源码私有化部署?

    抖音seo源码 短视频seo源码二次开发,怎么使用抖音seo源码,短视频seo源码私有化部署? 抖音seo源码 短视频seo源码二次开发,怎么使用抖音seo源码,短视频seo源码私有化部署到本地.首先 ...

  6. 使用live555客户端源码遇到的问题及解决方法

    使用live555客户端源码拉rtsp流遇到两个问题,正常测试拉取海康摄像头没问题: 1.拉有些厂商的rtsp流会间隔一段时间断开连接: 2.与大华摄像头建立连接时,发送DESCRIBE命令后很长时间 ...

  7. 【共享农场】智慧农业小程序,定制开发与开元源码二次开发那个更合适呢?

    如果要谈定制开发和拥有源码二次开发哪个更合适的话,首先得搞清智慧农业小程序这两个有什么区别呢?如果你要完全定制开发一套小程序费用基本上是在5-8W.而且时间比较长.很多人就算愿意承担资金成本,也不愿意 ...

  8. ZooKeeper客户端源码(零)——客户端API使用

    首发CSDN:徐同学呀,原创不易,转载请注明源链接.我是徐同学,用心输出高质量文章,希望对你有所帮助. 本篇源码基于ZooKeeper3.7.0版本. 一.建立连接和会话 客户端可以通过创建一个 Zo ...

  9. 丁威: 优秀程序员必备技能之如何高效阅读源码(二更)

    @[toc](丁威: 优秀程序员必备技能之如何高效阅读源码(二更)) 消息中间件 我能熟练使用这个框架/软件/技术就行了, 为什么要看源码?" "平时不用看源码, 看源码太费时间, ...

最新文章

  1. 这样你的电脑还不玩完!?
  2. 无线充电系统的功率与效率
  3. markdown转word
  4. 等价类划分方法的应用
  5. C/C++、JAVA、Python简单运行速度实验与分析
  6. 歌一定要带监听耳机吗_在演唱会上,歌手耳朵里戴的不是“耳机”,而是这个东西...
  7. 怎么看服务器上jdk安装位置,查看云服务器jdk安装路径
  8. 学习笔记18-C语言-文件
  9. 扫盲贴|如何评价一款App的稳定性和质量?
  10. Linux日志管理五大命令详解
  11. 二项式定理等价变换与简单推论
  12. springBean的作用域
  13. idea 正则表达式替换
  14. dell R740secure boot_凯诺 10月11日 DELL 电脑报价
  15. 一次函数的斜率公式_斜率K的公式?
  16. 利用filezilla下载文件,出现无法启动传输和严重文件错误
  17. 基于PTGui和Ps 有手和低端手机就能拼接生成一张酷酷VR720°商用全景图
  18. 每日一介绍:烽火算法2.0
  19. iPhone11霸占高端手机市场,安卓手机难望其项背
  20. Type c口和Micro USB作为电源接口,原理图设计

热门文章

  1. 健身运动装备有哪些?双十一运动健身装备推荐
  2. AOP面向对象切面编程之淘宝京东网络处理
  3. 系统学习NLP(一)--语音识别的计算机处理综述
  4. 安农大计算机专业录取分数线,2021年安徽农业大学各省各专业最低投档录取分数线统计(文科 理科)...
  5. Web3社交基础设施SBT
  6. 合肥工业大学嵌入式系统原理实验报告
  7. 智能门锁赛道:先行者凯迪仕出海谋生,后来者华为先声夺人
  8. 全局替换字体的 4 种方式
  9. 厦门大学计算机应用基础考试题,厦门大学2016计算机应用基础复习题
  10. App Annie:2016年全球移动应用市场数据解读