牌型的定义在http://blog.csdn.net/csdn_cjt/article/details/78593140 第一章 这是第二章

下面是代码

#region isSelectCardCanPut public static bool isSelectCardCanPut(List<int> myCards,DDZ_POKER_TYPE myCardType, List<int> lastCards, DDZ_POKER_TYPE lastCardTye){// 我的牌和上家的牌都不能为nullif (myCards == null || lastCards == null){return false;}if (myCardType == null || lastCardTye == null){Debug.Log("上家出的牌不合法,所以不能出。");return false;}// 上一首牌的个数int prevSize = lastCards.Count;int mySize = myCards.Count;// 我先出牌,上家没有牌if (prevSize == 0 && mySize != 0){return true;}// 集中判断是否王炸,免得多次判断王炸if (lastCardTye == DDZ_POKER_TYPE.KingBomb){Debug.Log("上家王炸,肯定不能出。");return false;}else if (myCardType == DDZ_POKER_TYPE.KingBomb){Debug.Log("我王炸,肯定能出。");return true;}// 集中判断对方不是炸弹,我出炸弹的情况if (lastCardTye != DDZ_POKER_TYPE.FourBomb && myCardType == DDZ_POKER_TYPE.FourBomb){return true;}//所有牌提前排序过了int myGrade = myCards[0];int prevGrade = lastCards[0];// 比较2家的牌,主要有2种情况,1.我出和上家一种类型的牌,即对子管对子;// 2.我出炸弹,此时,和上家的牌的类型可能不同// 王炸的情况已经排除// 单if (lastCardTye == DDZ_POKER_TYPE.Single && myCardType == DDZ_POKER_TYPE.Single){// 一张牌可以大过上家的牌return compareGrade(myGrade, prevGrade);}// 对子else if (lastCardTye == DDZ_POKER_TYPE.Twin&& myCardType == DDZ_POKER_TYPE.Twin){// 2张牌可以大过上家的牌return compareGrade(myGrade, prevGrade);}// 3不带else if (lastCardTye == DDZ_POKER_TYPE.Triple&& myCardType == DDZ_POKER_TYPE.Triple){// 3张牌可以大过上家的牌return compareGrade(myGrade, prevGrade);}// 炸弹else if (lastCardTye == DDZ_POKER_TYPE.FourBomb&& myCardType == DDZ_POKER_TYPE.FourBomb){// 4张牌可以大过上家的牌return compareGrade(myGrade, prevGrade);}// 3带1else if (lastCardTye == DDZ_POKER_TYPE.TripleWithSingle){// 3带1只需比较第2张牌的大小myGrade = myCards[1];prevGrade = lastCards[1];return compareGrade(myGrade, prevGrade);}else if (lastCardTye == DDZ_POKER_TYPE.TripleWithTwin){// 3带2只需比较第3张牌的大小myGrade = myCards[2];prevGrade = lastCards[2];return compareGrade(myGrade, prevGrade);}// 4带2else if (lastCardTye == DDZ_POKER_TYPE.FourWithSingle&& myCardType == DDZ_POKER_TYPE.FourWithSingle){// 4带2只需比较第3张牌的大小myGrade = myCards[2];prevGrade = lastCards[2];}// 4带2对子else if (lastCardTye == DDZ_POKER_TYPE.FourWithSingle&& myCardType == DDZ_POKER_TYPE.FourWithSingle){myGrade = myCards[2];prevGrade = lastCards[2];}// 顺子else if (lastCardTye == DDZ_POKER_TYPE.StraightSingle&& myCardType == DDZ_POKER_TYPE.StraightSingle){if (mySize != prevSize){return false;}else{// 顺子只需比较最大的1张牌的大小myGrade = myCards[mySize-1];prevGrade = lastCards[prevSize - 1];return compareGrade(myGrade, prevGrade);}}// 连对else if (lastCardTye == DDZ_POKER_TYPE.StraightTwin&& myCardType == DDZ_POKER_TYPE.StraightTwin){if (mySize != prevSize){return false;}else{// 顺子只需比较最大的1张牌的大小myGrade = myCards[mySize - 1];prevGrade = lastCards[prevSize - 1];return compareGrade(myGrade, prevGrade);}}// 飞机不带else if (lastCardTye == DDZ_POKER_TYPE.PlanePure&& myCardType == DDZ_POKER_TYPE.PlanePure){if (mySize != prevSize){return false;}else{//333444555666算飞机不带 不算飞机带单myGrade = myCards[4];prevGrade = lastCards[4];return compareGrade(myGrade, prevGrade);}}//飞机带单else if (lastCardTye == DDZ_POKER_TYPE.PlaneWithSingle&& myCardType == DDZ_POKER_TYPE.PlaneWithSingle){if (mySize != prevSize){return false;}else{List<int> tempThreeList = new List<int>();for (int i = 0; i < myCards.Count; i++){int tempInt = 0;for (int j = 0; j < myCards.Count; j++){if (myCards[i] == myCards[j]){tempInt++;}}if (tempInt == 3){tempThreeList.Add(myCards[i]);}}myGrade = tempThreeList[4];prevGrade = lastCards[4];return compareGrade(myGrade, prevGrade);}}//飞机带双else if (lastCardTye == DDZ_POKER_TYPE.PlaneWithTwin&& myCardType == DDZ_POKER_TYPE.PlaneWithTwin){if (mySize != prevSize){return false;}else{List<int> tempThreeList = new List<int>();List<int> tempTwoList = new List<int>();for (int i = 0; i < myCards.Count; i++){int tempInt = 0;for (int j = 0; j < myCards.Count; j++){if (myCards[i] == myCards[j]){tempInt++;}}if (tempInt == 3){tempThreeList.Add(myCards[i]);}else if (tempInt == 2){tempTwoList.Add(myCards[i]);}}myGrade = tempThreeList[4];prevGrade = lastCards[4];if (compareGrade(myGrade, prevGrade)){return DDZCardRule.IsAllDouble(tempTwoList);}}}// 默认不能出牌return false;}#endregion

unity开发 斗地主算法—比较两个手牌的大小相关推荐

  1. unity开发 斗地主算法—提示AI(提示出牌)

    牌型的定义在http://blog.csdn.net/csdn_cjt/article/details/78593140 第一章 这是第四章 下面是代码 #region 提示出牌 public sta ...

  2. Unity开发-网络.算法.平台相关知识!

    A. 网络相关知识 一.TCP 1.面向数据流.可靠.能保证消息到达顺序. 2.滑动窗口.控制发送量,发送方只能发送窗口内大小的数据包.防止发送方发送的数据过多,接收方无法处理的情况. 3.Nagle ...

  3. 用python写行列式_用Python开发线性代数算法(一) | 手写行列式算法的实现

    和往年不同,今年的"五一"假期,没有出去游玩.一个原因是疫情还没有过去,小心点为好:另一个原因就是最近天气太热,懒得出门 .当然了,不出门也不能窝在被窝里看片儿,作为四十多岁的大叔 ...

  4. Leap Motion 之Unity 开发实战(一. 制作手的HandController)

    Leap Motion 之Unity开发实战 (一) 制作手的HandController 一. Unity官方包介绍 到如下链接下载 https://developer.leapmotion.com ...

  5. 斗地主发牌器,并对玩家手牌进行从大到小的排序C++

    因为我想要按照斗地主的规则对用户手牌进行排序,我直接用一个string数组hand[]来储存所有的牌,并从大到小排序,接下来我只需要保存每一个用户所拥有的hand数组的下标,并将下标由大到小排序,输出 ...

  6. Leap Motion 之Unity 开发指南(一. 基本概念与制作手预制件)

    LeapMotion 之Unity开发指南(一.基本概念和手的预制件) [序言] 最近用Leap Motion + 国产的3Glass眼镜构建了房地产.数字矿山的一些应用,感觉这是很经济的一个VR架构 ...

  7. Unity 网络斗地主 牌的一些算法

    Unity 网络斗地主  牌的一些算法 在这儿说一下,我的项目是用svn的方式,上传在 https://v2.svnspot.com/18666451713.doudizhu这个svn上,大家可以下载 ...

  8. C++开发斗地主(QT)第一篇之数据结构

    斗地主,是一种在中国流行的纸牌游戏.游戏最少由3个玩家进行,用一副54张牌(连鬼牌),其中一方为地主,其余两家为另一方,双方对战,先出完牌的一方获胜.如今已风靡整个中国,并流行于互联网上! 从今天开始 ...

  9. Botzone斗地主算法的简单思路

    深搜+评估+特例优化 (在积分赛的表现大概处于20名左右的位置.)现在的天梯排名10名左右,不是该版本. 如果可以用机器学习的方法优化参数就好了,虽然开发了对战平台,但并没有用于炼丹.后附实现代码,对 ...

最新文章

  1. 软件开发心得点滴记录
  2. 语音识别(四)——DTW, Spectrogram, Cepstrum Analysis
  3. Semaphore及其用法
  4. leetcode 241 python
  5. C++基础与深度解析第八章:动态内存管理
  6. excel图表交互联动_Excel 制作滑动控制联动(Excel数据图表)具体实现方法
  7. 积分简明笔记-第一类曲线积分的类型
  8. Git使用小记(Windows)
  9. 在Excel里怎么输入可以打钩的选择框?
  10. 1、多线程原理与实践 《Java高并发核心编程 卷二》读书笔记
  11. python3+selenium3+ie9初体验
  12. Rotator和Vector之间的转换
  13. 一个数组实现两个栈(共享栈)
  14. 图片怎么格式转换成jpg?介绍几种思路
  15. Vue.js CLI:学习如何使用它
  16. Delphi线程同步
  17. Sql 日月年 日期格式转 月日年 日期格式
  18. 离人工智能进入我们的社会还有多远?(CES 2022 新品尝鲜)
  19. 王者qq服务器能和微信一起吗,王者荣耀微信和qq能一起玩吗 qq和微信数据互通吗...
  20. 云服务器部署nginx

热门文章

  1. C语言基础数学逻辑篇
  2. 2023系统分析师---需求工程
  3. Python花卉展——323行代码编写你的flowers库(7种花)
  4. FPGA数码管流动显示学号
  5. String StringBuffer StringBuilder
  6. dubbo手册完整版(2019版)
  7. 实时级嵌入式系统半实物仿真测试平台ETest_RT
  8. linux终端更改bashrc文件,linux .bashrc文件修改和生效
  9. 联想昭阳E43A笔记本电脑Centos6.2系统配置历程笔记 ——Centos6.2操作系统的安装...
  10. 中国计算机专家 —— 张效祥