php 斗牛 牌型 和 比牌 规则
参数 :
$Poker 是一个数组
"size": 1 - 13 表示
$size_arr = ['A','二','三','四','五','六','七','八','九','十','J','Q','K'];
"tag": 1 - 4 表示
$tag_arr = ['黑桃','红桃','梅花','方片'];
例子:
同花顺$Poker = [['size' => 1,'tag' => 3,'name' => '梅花A'],['size' => 2,'tag' => 3,'name' => '梅花二'],['size' => 3,'tag' => 3,'name' => '梅花三'],['size' => 4,'tag' => 3,'name' => '梅花四'],['size' => 5,'tag' => 3,'name' => '梅花五']];炸弹牛$Poker = [['size' => 1,'tag' => 1,'name' => '黑桃A'],['size' => 1,'tag' => 2,'name' => '红桃A'],['size' => 1,'tag' => 3,'name' => '梅花A'],['size' => 1,'tag' => 4,'name' => '方片A'],['size' => 5,'tag' => 3,'name' => '梅花五']];五花牛$Poker = [['size' => 11,'tag' => 1,'name' => '黑桃J'],['size' => 11,'tag' => 2,'name' => '红桃J'],['size' => 12,'tag' => 3,'name' => '梅花Q'],['size' => 12,'tag' => 4,'name' => '方片Q'],['size' => 13,'tag' => 3,'name' => '梅花K']];五小牛$Poker = [['size' => 1,'tag' => 1,'name' => '黑桃A'],['size' => 1,'tag' => 2,'name' => '红桃A'],['size' => 2,'tag' => 3,'name' => '梅花二'],['size' => 2,'tag' => 4,'name' => '方片二'],['size' => 3,'tag' => 3,'name' => '梅花三']];葫芦牛$Poker = [['size' => 1,'tag' => 1,'name' => '黑桃A'],['size' => 1,'tag' => 2,'name' => '红桃A'],['size' => 1,'tag' => 3,'name' => '梅花A'],['size' => 9,'tag' => 4,'name' => '方片九'],['size' => 9,'tag' => 3,'name' => '梅花九'] ];同花$Poker = [['size' => 1,'tag' => 3,'name' => '梅花A'],['size' => 2,'tag' => 3,'name' => '梅花二'],['size' => 3,'tag' => 3,'name' => '梅花三'],['size' => 4,'tag' => 3,'name' => '梅花四'],['size' => 9,'tag' => 3,'name' => '梅花九'] ];顺子$Poker = [['size' => 1,'tag' => 3,'name' => '梅花A'],['size' => 2,'tag' => 3,'name' => '梅花二'],['size' => 3,'tag' => 3,'name' => '梅花三'],['size' => 4,'tag' => 3,'name' => '梅花四'],['size' => 5,'tag' => 4,'name' => '方片五'] ];牛牛$Poker = [['size' => 4,'tag' => 3,'name' => '梅花四'],['size' => 6,'tag' => 3,'name' => '梅花六'],['size' => 5,'tag' => 3,'name' => '梅花五'],['size' => 5,'tag' => 4,'name' => '方片五'],['size' => 10,'tag' => 3,'name' => '梅花十']];牛一$Poker = [['size' => 4,'tag' => 3,'name' => '梅花四'],['size' => 5,'tag' => 3,'name' => '梅花五'],['size' => 6,'tag' => 3,'name' => '梅花六'],['size' => 6,'tag' => 4,'name' => '方片六'],['size' => 10,'tag' => 3,'name' => '梅花十']];没牛$Poker = [['size' => 4,'tag' => 3,'name' => '梅花四'],['size' => 5,'tag' => 3,'name' => '梅花五'],['size' => 6,'tag' => 4,'name' => '方片六'],['size' => 6,'tag' => 3,'name' => '梅花六'],['size' => 7,'tag' => 3,'name' => '梅花七']];
代码:
/*** 获取牛牛牌类型 * @param array $Poker 扑克牌 数据* @return array */function GetPokerType($Poker){if($Poker){if($Poker[0]['size'] == 1 && $Poker[1]['size'] == 10 && $Poker[2]['size'] == 11 && $Poker[3]['size'] == 12 && $Poker[4]['size'] == 13){ if ($Poker[0]['tag'] == $Poker[1]['tag'] && $Poker[0]['tag'] == $Poker[2]['tag'] && $Poker[0]['tag'] == $Poker[3]['tag'] && $Poker[0]['tag'] == $Poker[4]['tag']) {// 同花顺 10 J Q K Areturn ['type' => 10,'size' => $Poker[0]['size'],'tag' => $Poker[0]['tag'], 't_name' => '同花顺'];}else{// 顺子 10 J Q K A return ['type' => 4,'size' => $Poker[0]['size'], 'tag' => $Poker[0]['tag'],'t_name' => '同花顺'];}}if($Poker[0]['size']+1 == $Poker[1]['size'] && $Poker[0]['size']+2 == $Poker[2]['size'] && $Poker[0]['size']+3 == $Poker[3]['size'] && $Poker[0]['size']+4 == $Poker[4]['size'] && $Poker[0]['tag'] == $Poker[1]['tag'] && $Poker[0]['tag'] == $Poker[2]['tag'] && $Poker[0]['tag'] == $Poker[3]['tag'] && $Poker[0]['tag'] == $Poker[4]['tag']){return [ 'type' => 10,'size' => $Poker[4]['size'], 'tag' => $Poker[4]['tag'],'t_name' => '同花顺'];}else if ($Poker[0]['size'] == $Poker[1]['size'] && $Poker[0]['size'] == $Poker[2]['size'] && $Poker[0]['size'] == $Poker[3]['size'] || $Poker[1]['size'] == $Poker[2]['size'] && $Poker[1]['size'] == $Poker[3]['size'] && $Poker[1]['size'] == $Poker[4]['size']) { return ['type' => 9,'size' => $Poker[2]['size'],'tag' => $Poker[2]['tag'], 't_name' => '炸弹牛'];}else if (in_array($Poker[0]['size'], [11,12,13]) && in_array($Poker[1]['size'], [11,12,13]) && in_array($Poker[2]['size'], [11,12,13]) && in_array($Poker[3]['size'], [11,12,13]) && in_array($Poker[4]['size'], [11,12,13])) {return ['type' => 8,'size' => $Poker[4]['size'],'tag' => $Poker[4]['tag'],'t_name' => '五花牛'];}else if (($Poker[0]['size'] + $Poker[1]['size'] + $Poker[2]['size'] + $Poker[3]['size'] + $Poker[4]['size']) <= 10){return ['type' => 7,'size' => $Poker[4]['size'],'tag' => $Poker[4]['tag'],'t_name' => '五小牛'];}else if ($Poker[0]['size'] == $Poker[1]['size'] && $Poker[0]['size'] == $Poker[2]['size'] && $Poker[3]['size'] == $Poker[4]['size'] || $Poker[0]['size'] == $Poker[1]['size'] && $Poker[3]['size'] == $Poker[2]['size'] && $Poker[3]['size'] == $Poker[4]['size']) { return ['type' => 6,'size' => $Poker[2]['size'],'tag' => $Poker[2]['tag'], 't_name' => '葫芦'];}else if ($Poker[0]['tag'] == $Poker[1]['tag'] && $Poker[0]['tag'] == $Poker[2]['tag'] && $Poker[0]['tag'] == $Poker[3]['tag'] && $Poker[0]['tag'] == $Poker[4]['tag']) { return ['type' => 5,'size' => $Poker[4]['size'],'tag' => $Poker[4]['tag'],'t_name' => '同花'];}else if ($Poker[0]['size']+1 == $Poker[1]['size'] && $Poker[0]['size']+2 == $Poker[2]['size'] && $Poker[0]['size']+3 == $Poker[3]['size'] && $Poker[0]['size']+4 == $Poker[4]['size']) {return ['type' => 4,'size' => $Poker[4]['size'],'tag' => $Poker[4]['tag'],'t_name' => '顺子']; }else{// 判断有没有牛$num = niuniu($Poker);if ($num == 0) {return ['type' => 3,'size' => $Poker[4]['size'],'tag' => $Poker[4]['tag'],'t_name' => '牛牛'];}else if ($num != 11) {$size_arr = ['一','二','三','四','五','六','七','八','九'];return ['type' => 2,'num' => $num,'size' => $Poker[4]['size'],'tag' => $Poker[4]['tag'],'t_name' => '牛'.$size_arr[$num-1] ];}else{ return ['type' => 1,'size' => $Poker[4]['size'],'tag' => $Poker[4]['tag'], 't_name' => '没牛' ];}} }}
/*** 判断有没有牛 * @param array $Poker 玩家扑克牌数据* @return string 0 - 9 牛牛 - 九牛 11 没牛 **/function niuniu($Poker){// 十种组合可能性$array = ['0' => [[0,1],[2,3,4]],'1' => [[0,2],[1,3,4]],'2' => [[0,3],[1,2,4]],'3' => [[0,4],[1,2,3]],'4' => [[1,2],[0,3,4]],'5' => [[1,3],[0,2,4]],'6' => [[1,4],[0,3,4]],'7' => [[2,3],[0,1,4]],'8' => [[2,4],[0,1,3]],'9' => [[3,4],[0,1,2]] ];// 判断大小为 JQK 时 值为 10foreach ($Poker as $key => $value) {if (in_array($value['size'], [11,12,13])) {$Poker[$key]['size'] = 10;}}foreach ($array as $key => $value) {$count1 = 0;$count2 = 0;foreach ($value[1] as $key => $value2) { $count2 = $Poker[$value2]['size'] + $count2;; } $num2 = $count2/10; if (is_int($num2)) { foreach ($value[0] as $key => $value1) { $count1 = $Poker[$value1]['size'] + $count1;}$num1 = $count1%10; return $num1;} }return $num1 = 11;}
$type1 = GetPokerType($Poker1);$type2 = GetPokerType($Poker2);/*** 判断牛牛输赢 * @param array $type1 * @param array $type2 * @return array */function PokerWinning1($type1,$type2){ if ($type1['type']>$type2['type']) {return true; }else if ($type1['type']<$type2['type']){return false; }else{ if ($type1['size'] != $type2['size']) { $result = compare($type1['size'],$type2['size'],'size'); }else{$result = compare($type1['tag'],$type2['tag'],'tag');} return $result;}}// 牛牛比大小function compare($data1,$data2,$datatype){ //size(大小): 1-13if ($datatype == 'size') { // 大小 if ( $data1 == 1 ) {$tag1 = 14;$tag2 = $data2;}else if( $data2 == 1){$tag2 = 14;$tag1 = $data1;}else{$tag1 = $data1;$tag2 = $data2;} if ($tag1 > $tag2) {return true;}else{return false;}}// tag (花色):1 -- 黑桃 2 -- 红桃 3 -- 梅花 4 -- 方片 if ($datatype == 'tag') { $tag_arr = [1 => 4, 2 => 3, 3 => 2, 4 => 1]; if ($tag_arr[$data1] > $tag_arr[$data2]) {return true;}else{ return false;}}}
php 斗牛 牌型 和 比牌 规则相关推荐
- 炸金花 php算法,php 炸金花牌型 和 比牌 规则
获取炸金花牌的类型 参数 : $Poker 是一个数组 "size": 1 - 13 表示 $size_arr = ['A','二','三','四','五','六','七','八' ...
- php 炸金花牌型 和 比牌 规则
获取炸金花牌的类型 参数 : $Poker 是一个数组 "size": 1 - 13 表示 $size_arr = ['A','二','三','四','五','六','七','八' ...
- 炸金花游戏功能的实现(发牌,计算牌型,比牌)——python2.7
最近在尝试做一款棋牌类游戏项目,看到炸金花的玩法后,就自己先写出炸金花的基本功能实现,给那些python爱好者参考一下. 炸金花是民间非常流行的一种扑克牌玩法,它具有独特的比牌规则,玩家按照规则以手中 ...
- 斗地主之用蚁群算法整理牌型-如何进行牌力估计
我们在前面讲到过,各牌手的牌力估计就是我们在用蚁群算法构造最优牌型时的启发性知识.启发性知识其实就是我们利用自己的经验对事物做出的判优性评估,或者说就是对事物价值的判断. 原则上,应用蚁群算法需要用到 ...
- 【吟风听云】推锅扑克牌型规则说明(端锅子牌型说明/扑克版牌九规则)
#Y0101 浮生无事一朝轻,且吟尘风听闲云 --<吟风听云集>@CuPhoenix [阅前敬告] <吟风听云集>收录尘世闲闻,供君同赏 仅代表该内容可能存在的某一版本,不保证 ...
- 斗地主AI算法——第六章の牌型判断
本章实现了上一章提到的检查当前是否只是一手牌函数ins_SurCardsType /* 检查剩余的牌是否只是一手牌是: 返回手牌类型数据 不是:返回错误类型(cgERROR) */ CardGroup ...
- 棋牌游戏开发之地主算法判断牌型
棋牌游戏开发咨询 QQ:325131039 棋牌游戏开发咨询交流群: 490287966 由于近年来网络棋牌游戏的火爆导致个各个地区的特色棋牌游戏进入开发的红火时期,也有越来越多的团队个人开始研究棋牌 ...
- 纸牌游戏的牌型分析和出牌策略
前段时间遇到这个问题,想了一些,也搜了一些,发现网上也只是零星讲了一些笼统思想,复杂的我也没看懂,便自己去尝试写了一些代码来处理这个问题.还是先说明一下适用场景,只是针对一副牌去掉大小王,规则是常见的 ...
- 德州扑克多个玩家对局时赢牌牌型概率分布表、各种牌型的出现概率
就题目而言,对局赢牌牌型概率分布,各种牌型的出现概率,以及同样一手牌在不同牌局中的牌力大小,是不同的概念.本文不纠结这些概念,而是直接实验,从结果来统计概率.(本文实验在linux下用C语言通过一定数 ...
- 棋牌游戏通用牌型数值化方案
棋牌游戏通用牌型数值化方案 1. 数值化方案背景: 游戏中,要对各个玩家的牌进行比较,排序.通常情况下,我们会这样组织数据: BYTE cbCardData[PlayerCount][CardCoun ...
最新文章
- 神经网络之nlp的深度思考
- linux配置文件为yum,Linux系统配置本地yum源
- python条件语句-Python if else条件语句详解
- flex布局_Flex布局,真香
- 科技计划项目数据管理过程模型
- aarch64(ARMv8)交叉编译环境下载
- Spring Boot Restful框架搭建和使用【持续更新中】
- 目前高产的稻麦品种的光能利用效率仅为()左右_枣树高产优质高效栽培关键技术...
- 免装版_一款好用的便签工具 桌面便签免安装版
- html 获取mac地址,Javascript获取Mac地址
- 安装完Fedora 18后需要做的事情
- Linux--基础知识点--4.1--vim寄存器
- 傅立叶变换、Gabor变换与小波变换
- NYOJ - 595
- linux网卡配子接口,linux 内核学习(2).
- 腾讯企业邮箱不能发送短信认证
- Math 的 ceil、floor、round方法详解及示例
- java 413错误,413错误——线上bug历险记
- synaptics安装
- BLAM源码解析(五)—— 回环检测