作者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