<?php /** * 生成52张扑克,随机5张公共牌,2张手牌 * $sp = poker(); for ($i=1; $i <=12 ; $i++) { echo current($sp); next($sp); * 发牌 * 洗牌 * shuffle($poker); // 乱序 * 二维数组,第一位代表花色:1 红桃,2黑桃,3 梅花,4方片; * 第二位牌面值: ['2'=>2,'3'=>3,'4'=>4,'5'=>5,'6'=>6,'7'=>7,'8'=>8,'9'=>9,'10'=>10,'11'=>'J','12'=>'Q','13'=>'K','14'=>'A'] * */ //生成52张牌 echo "<pre>"; //11413121109 //2147483647 $starttime = explode(' ',microtime()); $cardArr = []; //52张牌 $publicCard = []; //公共牌 $handCard = []; //手牌 $colorArr = [1=>'红',2=>'黑',3=>'花',4=>'方']; //显示用 $numArr = ['2'=>2,'3'=>3,'4'=>4,'5'=>5,'6'=>6,'7'=>7,'8'=>8,'9'=>9,'10'=>10,'11'=>'J','12'=>'Q','13'=>'K','14'=>'A']; //显示用 function creditCard(){ global $cardArr; for($i=1;$i<=4;$i++){ for($j=2;$j<=14;$j++){ array_push($cardArr,[$i,$j]); } } shuffle($cardArr); //洗牌 } creditCard(); //3||4||5张公共牌 function getPublicCard($num=3){ global $cardArr; global $publicCard; $temp=array_rand($cardArr,$num); //重组数组 foreach($temp as $val){ $publicCard[]=$cardArr[$val]; unset($cardArr[$val]); } } $num = isset($_GET['num'])?$_GET['num']:5; getPublicCard($num); /** * 生成手牌 * @param int $num */ function getHandCard($num=2){ global $cardArr; $handCard = []; $temp=array_rand($cardArr,$num); //重组数组 foreach($temp as $val){ $handCard[]=$cardArr[$val]; unset($cardArr[$val]); } return $handCard; } //显示牌 function showCard($arr,$tips="公共牌"){ global $colorArr; global $numArr; foreach($arr as $vo){ if($vo[1]<10){ $vo[1]='0'.$vo[1]; } $img = "<img height=50; src='/img/".$vo[0].$vo[1].".png' >"; $shtml = $img ; echo $shtml; } unset($vo); return 1; } //echo "计算最优牌型开始----".PHP_EOL; //执行调用 todo echo "<div style='width: 600px'>公共牌 "; showCard($publicCard); echo "<hr>"; $rankingArr = []; for($uid=1;$uid<=8;$uid++){ $handOne = getHandCard(); echo PHP_EOL."用户".$uid."手牌 -- "; showCard($handOne); $nowAllCard = array_merge($publicCard,$handOne); $resCards1 = start($nowAllCard); //获取最优 牌型 以及 大分值 $bastCard = array_shift($resCards1); echo " 牌型 -- "; $maxScore = getCardType($bastCard); if($maxScore == 1){ //高牌牌型 二次处理,排序后获取 最大前5 ,用于计算outs todo } $bastCard = arraySort($bastCard,1); showCard($bastCard)
德州扑克计算牌型以及分值大小
最新推荐文章于 2024-07-12 23:00:00 发布