看板 PHP 關於我們 聯絡資訊
我試著再改寫一次程式碼,透過花色的單字英文字首取得的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