0 ) { //给出一个从小到大的顺序 if( fmod($dian[0], 14 ) >= fmod($value, 14) || fmod($value, 14) == 1 ) { //得到的牌面比数组第一张牌小时,放到数组前面 array_unshift( $dian, $value ); }else if ( fmod($dian[count($dian)-1], 14 ) <= fmod($value, 14) ){ //得到的牌面比数组最后一张牌大时,放到数组最后面 $dian[] = $value; }else { //除了以上情况之外,就是中间值 $dian[2] = $dian[1]; $dian[1] = $value; } }else $dian[] = $value; //echo '

'; $peice++; } $person[] = $dian; //将牌面存起来 $number++; } return $person; //返回所有玩家牌面 } //牌型,$card是一个含三张牌的数组 function cardName($card){ if( ! is_array( $card ) && count($card) == 3 ) return; $c[0] = fmod($card[0], 14); $c[1] = fmod($card[1], 14); $c[2] = fmod($card[2], 14); //三张版面 $t0 = ceil($card[0]/14); $t1 = ceil($card[1]/14); $t2 = ceil($card[2]/14); //三张版面的花色 if( $c[0] == $c[1] && $c[1] == $c[2] ) { return 6;//'豹子' }else if( $t0 == $t1 && $t1 == $t2 && ( ( $c[0]+1 == $c[1] && $c[1]+1 == $c[2] ) || ( $c[0] == 1 && $c[1] == 12&& $c[2] == 13) ) ){ return 5;//'顺金'; }else if( $t0 == $t1 && $t1 == $t2 ){ return 4;//'金花'; }else if( ( $c[0]+1 == $c[1] && $c[1]+1 == $c[2] ) || ( $c[0] == 1 && $c[1] == 12&& $c[2] == 13) ){ return 3;//'顺子'; }else if( $c[0] == $c[1] || $c[1] == $c[2] || $c[0] == $c[2] ){ return 2;//'对子'; }else if( $c[0] == 2 && $c[1] == 3 && $c[2] == 5 && ( $t0 != $t1 || $t1 != $t2 )){ return 1;//'特殊'; }else{ return 0;//'单张'; } //返回牌型:0单张,1特殊,2对子,3顺子,4金花,5顺金,6豹子 } //得到获胜牌 function maxCard($cards){ if( ! is_array( $cards ) && count( $cards ) == 2 ) return; $maxCardType = 0; $maxCardNumber = 1; $specialCard = false; $cardType = array(); foreach( $cards as $key=>$value ){ //得到当前最大牌型 $cardType[$key] = cardName($value); //当前牌型数组 if( $maxCardType == $cardType[$key] ) { //统计最大牌型个数 $maxCardNumber++; } if( $maxCardType < $cardType[$key] ) { //出现更大的牌型时更新最大牌型 $maxCardType = $cardType[$key]; $maxCardNumber = 1; } if( $maxCardType == 1 ) { //是否有特殊牌 $specialKey = $key; $specialCard = true; } } if($maxCardNumber == 1 && $maxCardType == 6 && $specialCard ) return $specialKey; //有一手豹子,且和特殊牌并存的时候,返回特殊牌的KEY if( $maxCardNumber == 1 && $maxCardType != 6 && !$specialCard ) return array_search( $maxCardType, $cardType ); //最大牌型只有一手,且不是豹子,也没有特殊牌,就返回这手牌的在数组中的KEY if( $maxCardNumber == 1 && $maxCardType == 1 && $specialCard ) $maxCardType = 0; //最大牌型只有一手,且为特殊牌,返回0(o单牌) if( $maxCardNumber == 1 && $maxCardType != 1 ) return array_search( $maxCardType, $cardType ); //除以上几种特殊情况之外的只有一手最大牌时,直接返回key $currentMaxCard = array(); foreach( $cardType as $key=>$value ){ if( $value != $maxCardType ) continue; //过滤牌型,只比较最大牌型 if( ! $currentMaxCard ) { //得到第一手要比较的版面 $currentMaxCard = $cards[$key]; continue; } $card = $cards[$key]; $c[0] = fmod($card[0], 14); $c[1] = fmod($card[1], 14); $c[2] = fmod($card[2], 14); $cardCMC = $currentMaxCard; $cCMC[0] = fmod($cardCMC[0], 14); $cCMC[1] = fmod($cardCMC[1], 14); $cCMC[2] = fmod($cardCMC[2], 14); switch($maxCardType){ //0单张,1特殊,2对子,3顺子,4金花,5顺金,6豹子 case 6: if( $c[0] == 1 || $cCMC[0] < $c[0] ) $currentMaxCard = $cards[$key]; break; case 2: if( $c[0] == $c[1] ) { $pairs = $c[0]; $single = $c[2]; }else if ( $c[0] == $c[2] ) { $pairs = $c[0]; $single = $c[1]; }else{ $pairs = $c[1]; $single = $c[0]; } if( $cCMC[0] == $cCMC[1] ) { $pairs2 = $cCMC[0]; $single2 = $cCMC[2]; }else if ( $cCMC[0] == $cCMC[2] ) { $pairs2 = $cCMC[0]; $single2 = $cCMC[1]; }else{ $pairs2 = $cCMC[1]; $single2 = $cCMC[0]; } if( $pairs == 1 && $pairs2 == 1 && $single >= $single2 ) $currentMaxCard = $cards[$key]; else if( $pairs == 1 && $pairs2 != 1) $currentMaxCard = $cards[$key]; else if( $pairs != 1 && $pairs2 != 1) { if ( ( $pairs > $pairs2 ) || ( $pairs == $pairs2 && ( $single >= $single2 || $single == 1 ) ) ) $currentMaxCard = $cards[$key]; } break; default: //0,3,4,5全部在默认中进行比较 if( $c[0] == 1 && $cCMC[0] == 1 ) { if ( ( $c[2] > $cCMC[2] ) || ( $c[2] == $cCMC[2] && $c[1] > $cCMC[1] ) ) $currentMaxCard = $cards[$key]; }else if( $c[0] == 1 && $cCMC[0] != 1 ) $currentMaxCard = $cards[$key]; else if( $c[0] != 1 && $cCMC[0] != 1){ if ( ( $c[2] > $cCMC[2] ) || ( $c[2] == $cCMC[2] && $c[1] > $cCMC[1] ) || ( $c[1] == $cCMC[1] && $c[0] >= $cCMC[0] ) ) $currentMaxCard = $cards[$key]; } } } return array_search( $currentMaxCard, $cards ); } //echo cardName(array(21,8,23)); echo ''; $player = deal(6); //$player = array(array(8,21,29), array(2,3,19), array(1,15,43) ); $max = maxCard($player); foreach( $player as $key=>$cards){ echo '

'; foreach( $cards as $value ){ echo '

'; } echo cardName($cards); if( $max == $key ) echo ' Winner!'; echo ''; // print_r($cards); } //echo maxCard(array(array(30,44,15), array(2,16,1) )); ?>

0单张,1特殊,2对子,3顺子,4金花,5顺金,6豹子

炸金花 php算法,200行代码搞定炸金花游戏(PHP版)相关推荐

  1. 200行代码搞定一个购物网站+电影站+APP

    以前有一个朋友问我,说想做一个购物网站 ,电影站 ,需要APP 形式提供 . 问我一个星期能不能搞定,听了他的奇葩需求后,有点被耍的感觉,在普通人眼里 一个程序可能就是半天就做出来的东西. 后来仔细想 ...

  2. html中如何制作星空背景,HTML5网页制作200行代码搞定canvas星空背景连线

    {getUnitName} {getLessonName} 敬请期待 免费 {getTaskName} 剩余观看时长:{watchLimitRemaining} 回放 {activityStartTi ...

  3. python做事件研究法_35行代码搞定事件研究法(上)

    作者简介: 祝小宇,个人公众号:大猫的R语言课堂 这期大猫课堂将会教大家如何用35行R代码写出最有效率的事件研究法. 注意,本代码主要使用data.table完成,关于data.table包的相应知识 ...

  4. 35行代码搞定事件研究法(下)

    作者简介: 祝小宇,个人公众号:大猫的R语言课堂 前文推送: 35行代码搞定事件研究法(上) Hello亲爱的小伙伴们,上期已经讲到如何对单一事件日计算超额收益,本期将会教大家如何针对多个股票多个事件 ...

  5. 万万想不到 10行代码搞定一个决策树

    01决策树模拟实验 文章目录 01决策树模拟实验 要求 决策树简单介绍 搭建环境 产生数据集 划分训练集和测试集 生成决策树 Cross-Validation法 可视化决策树 10行代码搞定决策树 要 ...

  6. 35行代码搞定事件研究法(上)

    作者简介: 祝小宇,个人公众号:大猫的R语言课堂 这期大猫课堂将会教大家如何用35行R代码写出最有效率的事件研究法. 注意,本代码主要使用data.table完成,关于data.table包的相应知识 ...

  7. python修改文件名称唯美_5行代码搞定14种常见图的python可视化库,还自带16种优美主题,真是太喜欢了...

    原创:小dull鸟 python数据分析之禅 原文链接: 5行代码搞定14种常见图的python可视化库,还自带16种优美主题,真是太喜欢了​mp.weixin.qq.com 有时候我们做数据可视化并 ...

  8. resnet50代码_13、SOTA论文实践-学习ResNet(80行代码搞定残差backbone网络)

    0.论文 Camera Distance-aware Top-down Approach for 3D Multi-person Pose Estimation from a Single RGB I ...

  9. 国外stripe支付,超简单几行代码搞定

    国外stripe支付,超简单几行代码搞定 海外的项目 需要stripe支付 很简单 几行代码 先加入依赖: compile 'com.stripe:stripe-android:6.1.2' 总共两种 ...

最新文章

  1. 十七、生产者消费者问题
  2. linux syslogd 源码,syslogd 详解二
  3. java商城项目性能调优_javaWEB项目性能调优
  4. 跨域失败 过滤器_Spring Boot 跨域过滤器(过滤器跨域问题)
  5. java中定义一个栈容器_Java 容器之 Connection栈队列及一些常用
  6. 敏捷开发般若敏捷系列之五:如何推广敏捷(中)(无寿者,回报,破我执)...
  7. 不得不爱开源 Wijmo jQuery 插件集(13)-【Tooltip】(附页面展示和源码)
  8. 解决 IDEA导入Eclipse项目出现的中文注释乱码问题
  9. forms Build中的触发器
  10. 最近做一个新闻类项目,用到调用新浪微博接口,经过研究测试整理步骤如下:先根据此内容获取App Key和Secret Key
  11. python输入一个三位数、输出它的逆序数值_c语言 从键盘输入一个三位数,输出该数的逆序数。...
  12. HMI智能座舱自动化测试软件
  13. 刀剑神域:突破界限I
  14. python colorbar刻度_python-如何添加Matplotlib Colorbar刻度
  15. 光衰高怎么办_发光顶角线使用起来方便吗?维护成本高吗?
  16. autosar arxml文件配置(四)
  17. linux7开放svn,CentOS 7 下SVN的安装及基础配置介绍
  18. Vue2.x - Vue Router
  19. html/css/javascript-编辑器
  20. 计算机在一个指令中的过程中,为从内存读取指令操作码,首先要将()的内容送到地址总线上

热门文章

  1. SQL Server DeadLock 分析
  2. 观未见,行不止 —— Power BI 两周年技术和方案交流圆桌会议纪实
  3. win10中搭建并配置ftp服务器的方法(实现多用户登录整合版)
  4. TabLayout 设置指示器宽度问题
  5. (转)e-config Proposed List 中的 5313-HPO IBM Power Software HIPO 条目是什么
  6. hbase协处理器Coprocessor(简介)
  7. 快速计算CRC校验(异或)的方法
  8. html引入css文件和js文件方式
  9. 14西安区域赛总结帖
  10. import java.awt.*这句话是什么含义