2015年9月14日 星期一

發撲克牌

在奇摩知識+看到有人發問發撲克牌,依花色及數字大小做排序,所以我就寫了這個程式囉

function Poker($member = 4, $POSTCARDS = 52)
{
    /*撲克花色*/
    $Poker = [
        'Spades',
        'Hearts',
        'Diamonds',
        'Clubs',
    ];
    /*人頭牌*/
    $CARD = [
        11 => 'J',
        12 => 'Q',
        13 => 'K',
    ];

    /*發牌順序*/
    $P = range(0, $POSTCARDS - 1);
    shuffle($P);

    /*存放結果陣列*/
    $result = [];

    $total = count($P);
    for ($i = 0; $i < $total; $i++) {
        /*發給玩家*/
        $t = $i % $member + 1;
        /*發牌編號 0-51*/
        $v = $P[$i];
        /*發牌花色 Spades,Hearts,Diamonds,Clubs*/
        $c = $Poker[$v % count($Poker)];
        /*花色大小 1-13*/
        $k = ($v % 13) + 1;
        $result[$t][$c][$k] = (in_array($k, array_keys($CARD))) ? $CARD[$k] : $k;
        /*依牌大小排序*/
        krsort($result[$t][$c]);
        /*依花色排序*/
        krsort($result[$t]);
    }

    return $result;
}
/*印出結果*/
print_r(Poker(1, 13));
/*如果要發4個人52張牌*/
print_r(Poker(4, 52));

沒有留言:

張貼留言