德州扑克计算牌型以及分值大小

<?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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值