作者liaosankai (低温烘焙)
看板PHP
标题Re: [请益] 扑克牌依照花色排序
时间Thu Jul 5 20:34:28 2012
我试着再改写一次程式码,透过花色的单字英文字首取得的ord()值
刚好符合「黑桃>红心>方块>梅花」的规则,排除黑桃1的特例
为牌组每张牌建立排序用的权重值,并在每位玩家取得手牌之後
利用array_multisort()重新排序
当然如果能写成类别,应该会更方便使用
==========================
<?php
$skins = array("spade","heart","diamond","club");
$icons = array(
"spade" => "♠",
"heart" => "♥",
"diamond" => "♦",
"club" => "♣"
);
//建立牌组
foreach($skins as $key => $skin){
for($no=1;$no<=13;$no++){
//计算权重值
if("spade" == $skin && 1 == $no) {
$weight = ord($skin) + 14;
} else {
$weight = ord($skin) + $no;
}
//新牌张
$cards[$weight] = array(
//权重值
"weight" => $weight,
//花色名称
"skin" => $skin,
//花色图示
"icon" => $icons[$skin],
//牌号
"no" => $no
);
}
}
//洗牌
srand(time());
shuffle($cards);
//进行发牌
$players = array("Jack","Tom","Bill");
$num = 5;
foreach($palyers as $key => $name){
$flag = array();
for($i=0;$i<$num;$i++){
//从牌组抽一张
$card = array_pop($cards);
//记录权重参照
$flag[] = $card["weight"];
//分派给玩家
$player[$name][] = $card;
}
//整理牌组(依照权重值)
array_multisort($flag, SORT_DESC, $player[$name]);
}
--
欢迎来我的网志看看
@
http://liaosankai.pixnet.net/blog
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.33.16.194