using UnityEngine;
using System.Collections.Generic;
/// <summary>
/// 牌型 3 4 5 6 7 8 9 10 11(J) 12(Q) 13(K) 14(A) 15(2) 16(小王) 17(大王)
/// </summary>
public class DDZ_CardType
{public enum DDZ_CardTypes{None,//什么都不是Single,//单张Double,//对子Three,//三张ThreeOne,//三代一ThreeTwo,//三代二ShunZi,//顺子45678LianDui,//连对334455Flay,//飞机333444FlayOne,//飞机带单FlayTwo,//飞机带队Boom,//炸弹BoomOne,//炸弹带单张(不是炸弹了)BoomTwo,//炸弹带对子}/// <summary>/// 是否是单张/// </summary>/// <param name="card"></param>/// <returns></returns>public static bool IsSingle(List<int> card){if (card.Count == 0)return true;return false;}/// <summary>/// 是否是对子/// </summary>/// <param name="card"></param>/// <returns></returns>public static bool IsDouble(List<int> card){if (card.Count == 2){if (card[0] == card[1])return true;elsereturn false;}else{return false;}}/// <summary>/// 是否是三张/// </summary>/// <param name="card"></param>/// <returns></returns>public static bool IsThree(List<int> card){if (card.Count == 3){if (card[0] != card[1])return false;if (card[1] != card[2])return false;if (card[0] != card[2])return false;return true;}else{return false;}}/// <summary>/// 是否是三代一/// </summary>/// <param name="card"></param>/// <returns></returns>public static bool IsThreeOne(List<int> card){if (card.Count == 4){if (card[0] != card[1])//第一张是单张{if (card[1] != card[2])return false;if (card[2] != card[3])return false;if (card[1] != card[4])return false;return true;}else if (card[2] != card[3])//第四张是单张{if (card[0] != card[1])return false;if (card[1] != card[2])return false;if (card[0] != card[2])return false;return true;}else{return false;}}else{return false;}}/// <summary>/// 是否是三代二/// </summary>/// <param name="card"></param>/// <returns></returns>public static bool IsThreeTwo(List<int> card){if (card.Count == 5){if (card[0] == card[1])//前2张是对子{if (card[2] != card[3])return false;if (card[3] != card[4])return false;if (card[2] != card[4])return false;return true;}else if (card[3] == card[4])//后2张是对子{if (card[0] != card[1])return false;if (card[1] != card[2])return false;if (card[0] != card[2])return false;return true;}else{return false;}}else{return false;}}/// <summary>/// 是否是顺子45678/// </summary>/// <param name="card"></param>/// <returns></returns>public static bool IsShunZi(List<int> card){if (card.Count >= 5 && card.Count <= 12){for (int i = 0; i < card.Count - 1; i++){if (card[i + 1] != card[i] + 1){return false;}if (card[i] == 15 || card[i] == 16 || card[i] == 17)//顺子不能是2和2王return false;}return true;}else{return false;}}/// <summary>/// 是否是连对334455/// </summary>/// <param name="card"></param>/// <returns></returns>public static bool IsLianDui(List<int> card){if (card.Count >= 6 && card.Count % 2 == 0){for (int i = 0; i < card.Count; i = i + 2){if (card[i] == 15 || card[i] == 16 || card[i] == 17)//连对不能包含2和俩王return false;if (card[i] != card[i + 1])//对子之间是否相等return false;if (card[i + 2] != card[i] + 1)//2个对子之间是否相差1return false;}return true;}else{return false;}}/// <summary>/// 是否是飞机333444/// </summary>/// <param name="card"></param>/// <returns></returns>public static bool IsFlay(List<int> card){if (card.Count >= 6 && card.Count % 3 == 0){for (int i = 0; i < card.Count; i = i + 3){if (card[i] == 15 || card[i] == 16 || card[i] == 17)//连对不能包含2和俩王return false;if (card[i] != card[i + 1])return false;if (card[i + 1] != card[i + 2])return false;if (card[i] != card[i + 2])return false;if (card[i] + 1 != card[i + 3])return false;}return true;}else{return false;}}/// <summary>/// 是否是飞机带单/// </summary>/// <param name="card"></param>/// <returns></returns>//public bool IsFlayOne(List<int> card)//{//}/// <summary>/// 是否是炸弹 /// </summary>/// <param name="card"></param>/// <returns></returns>public static bool IsBoom(List<int> card){if (card.Count == 2){if (card[0] == 16 && card[1] == 17){return true;}else{return false;}}else if (card.Count == 4){for (int i = 0; i < card.Count; i++){if (i == card.Count){if (card[0] != card[i])return false;}else{if (card[i] != card[i + 1])return false;}}return true;}else{return false;}}/// <summary>/// 炸弹带单张/// </summary>/// <param name="card"></param>/// <returns></returns>public static bool IsBoomOne(List<int> card){if (card.Count == 3){if (card[1] == 16 && card[2] == 17)return true;elsereturn false;}else if (card.Count == 5){if (card[0] != card[1]){for (int i = 1; i < card.Count; i++){if (i == card.Count){if (card[0] != card[i])return false;}else{if (card[i] != card[i + 1])return false;}}return true;}else if (card[3] != card[4]){for (int i = 0; i < card.Count - 1; i++){if (i == card.Count){if (card[0] != card[i])return false;}else{if (card[i] != card[i + 1])return false;}}return true;}elsereturn false;}elsereturn false;}/// <summary>/// 炸弹带对子/// </summary>/// <param name="card"></param>/// <returns></returns>public static bool IsBoomTwo(List<int> card){if (card.Count == 4){return false;}else if (card.Count == 6){return false;}elsereturn false;}/// <summary>/// 判读牌的类型/// </summary>/// <param name="card"></param>/// <returns></returns>public static DDZ_CardTypes GetCardType(List<int> card){DDZ_CardTypes type = DDZ_CardTypes.None;card.Sort();if (IsSingle(card)){type = DDZ_CardTypes.Single;}else if (IsDouble(card)){type = DDZ_CardTypes.Double;}else if (IsThree(card)){type = DDZ_CardTypes.Three;}else if (IsThreeOne(card)){type = DDZ_CardTypes.ThreeOne;}else if (IsThreeTwo(card)){type = DDZ_CardTypes.ThreeTwo;}else if (IsShunZi(card)){type = DDZ_CardTypes.ShunZi;}else if (IsLianDui(card)){type = DDZ_CardTypes.LianDui;}else if (IsFlay(card)){type = DDZ_CardTypes.Flay;}else if (IsBoom(card)){type = DDZ_CardTypes.Boom;}else if (IsBoomOne(card)){type = DDZ_CardTypes.BoomOne;}else if (IsBoomTwo(card)){type = DDZ_CardTypes.BoomTwo;}else{type = DDZ_CardTypes.None;}return type;}
}

————-还没有写完待完善,后面继续更新

斗地主算法1判断牌型相关推荐

  1. 棋牌游戏开发之地主算法判断牌型

    棋牌游戏开发咨询 QQ:325131039 棋牌游戏开发咨询交流群: 490287966 由于近年来网络棋牌游戏的火爆导致个各个地区的特色棋牌游戏进入开发的红火时期,也有越来越多的团队个人开始研究棋牌 ...

  2. 德州扑克实践之二------判断牌型

    实践二------牌型判断 起始 现在到了,第二步,上一步我们已经做好了发牌模块,有了手牌,就需要判断牌型了,平时打扑克时,我们需要使用大脑进行判断自己手里的牌属于那种类型的,现在我们需要通过程序来进 ...

  3. Java斗地主算法的设计与实现_斗地主算法的设计与实现–洗牌和发牌

    本篇将给出斗地主算法的源码,介绍斗地主这个项目的一些基本情况. 下载地址:http://download.csdn.net/detail/fansunion/6387589 特别说明:斗地主项目的主要 ...

  4. 斗地主算法的设计与实现 五 --洗牌和发牌

    本篇简要介绍如何洗牌和发牌. 这2个算法都很简单,有兴趣的同学可以写得更好一点. 关键点说明 a.洗牌算法的思路就是,构造54张牌,打乱牌N次,这个算法可能不够随机. b.发牌算法的思路就是,从洗好的 ...

  5. java斗地主比大小_斗地主算法的设计与实现(三)--如何比较两手牌的大小

    本篇主要讲解斗地主中如何比较两手牌的大小. 友情提示:本篇是接着以下两篇文章就讲解的,建议先看看下面这2篇. 牌型比较 火箭最大:炸弹次之:再次是一般牌型(单牌.对牌.三张牌.三带一.单顺.双顺.三顺 ...

  6. 斗地主算法的设计与实现(三)--如何比较两手牌的大小

    本篇主要讲解斗地主中如何比较两手牌的大小. 友情提示:本篇是接着以下两篇文章就讲解的,建议先看看下面这2篇. 斗地主算法的设计与实现--如何判断一手牌的类型(单,对子,三不带,三带一,四代二等) 斗地 ...

  7. 斗地主AI算法——第六章の牌型判断

    本章实现了上一章提到的检查当前是否只是一手牌函数ins_SurCardsType /* 检查剩余的牌是否只是一手牌是: 返回手牌类型数据 不是:返回错误类型(cgERROR) */ CardGroup ...

  8. 斗地主含赖子的牌型判断算法

    目标 打出n张牌(可能含有赖子),需要判断这n张牌能组成什么牌型(对子.顺子.飞机-). 整体思路:假设我们已经提前那种牌作为癞子. 整体思路 1.找出n张牌中的赖子,假设有m个赖子 2.计算出这剩余 ...

  9. python斗地主出牌算法_斗地主之用蚁群算法整理牌型:如何进行牌力估计

    我们在前面讲到过,各牌手的牌力估计就是我们在用蚁群算法构造最优牌型时的启发性知识.启发性知识其实就是我们利用自己的经验对事物做出的判优性评估,或者说就是对事物价值的判断. 原则上,应用蚁群算法需要用到 ...

  10. 斗地主之用蚁群算法整理牌型-如何进行牌力估计

    我们在前面讲到过,各牌手的牌力估计就是我们在用蚁群算法构造最优牌型时的启发性知识.启发性知识其实就是我们利用自己的经验对事物做出的判优性评估,或者说就是对事物价值的判断. 原则上,应用蚁群算法需要用到 ...

最新文章

  1. 【Linux驱动】ThinkPad笔记本wifi模块rtl8821ce在ubuntu16.04的驱动(默认没有)
  2. VMware vSphere Client中启动虚拟机提示No boot filename received/Operating System not found解决方法
  3. 产品策划系列:洞察需求(四)
  4. 解决Dependency ‘xxxx‘ not found
  5. 芭比扣了!Nacos中服务删除不了,肿么办?
  6. botstrap-栅格布局与栅格偏移
  7. 小白一枚。。。记录下这种构造函数
  8. 你需要来自trustedinstaller的权限才能删除_一文详解To B权限设计
  9. 拟阵论 贪心策略的数学基础
  10. 自动驾驶 2-1 第 1 课补充阅读:传感器和计算硬件 -- 下
  11. 计算机禁止安装游戏,win7系统禁用自动安装游戏应用的详细教程
  12. Kvaser怎么使用虚拟驱动?Kvaser Leaf Light HS v2
  13. ARM-LINUX平台下的文本文件打印机打印
  14. Appium-Get Clipboard(获取剪贴板)
  15. vi/vim怎么对多行文字进行注释/取消注释
  16. Datablau产品之Kubernetes(K8S)部署
  17. 小米笔记本Air 13.3 i5-8250U macOS黑苹果efi引导文件
  18. Lodop云打印控件使用
  19. LeetCode.623 Add One Row to Tree
  20. SD卡变成RAW格式怎么办?SD卡RAW格式的解决办法

热门文章

  1. Android平板查看网卡mac,如何看电脑网卡和手机mac地址
  2. Wei Yang Bryan Lim, etc. Federated Learning in Mobile Edge Networks: A Comprehensive Survey.
  3. 概率论——马尔科夫链
  4. 黑马程序员---visual studio 快捷键大全
  5. 39份AICon全球人工智能与机器学习技术大会 · 北京站2021(PPT汇总)
  6. laravel-admin固定表头
  7. 采用面向接口编程思想组装一台计算机
  8. java 判断文件编码格式(支持zip)
  9. 高等数学张宇18讲 第二讲 极限与连续
  10. 天然气流量计选型指南