※ 引述《JoeHorn (每天都在公司玩OLG)》之銘言:
: ※ 引述《yuleen123 (.......................)》之銘言:
: : 我的作法是建一個對照表
: : $Poker_map = array( "S1", "S2", ... , "S13", "H1", "H2", ... , "H13",
: : "D1", "D2", ... , "D13", "C1", "C2", ... , "C13 );
: : 共 52 張牌
: : 抽第一張牌時產生 0 ~ 51 的亂數值對應到 $Poker_map 對照表上
: : $num = rand( 0, 51 );
: 這種陣列很好辦。
: // 取幾張
: define('GET_CARDS', 10);
: // 陣列位置: 0~51,共 52 張牌
: $max = 51;
: for ($i = 0; i < GET_CARDS; $i++) {
: $num = rand( 0, $max);
: ..... // 取出 $Poker_map[$num] , 看你自己怎麼處理
: $Poker_map[$num] = $Poker_map[$max]; // 把最後一張牌拿來補
: $max--;
: }
=_= 或許有點不對題,畢竟如果你要用C寫的話,下列就沒參考的價值了
關於發牌的程式我寫過一篇,盡量用PHP的函式完成,程式碼如下
/************************************************************
* PHP撲克牌發牌範例
* 程式來源:http://blog.pixnet.net/liaosankai/post/17834738
************************************************************/
//建立牌組
$mark = array('Spade','Heart','Diamond','Club');
foreach($mark as $key => $icon) {
for($i=1;$i<=13;$i++){
$cards[$key.$i] = "{$icon} {$i}";
}
}
//洗牌
srand(time());
shuffle($cards);
//各發5張牌給A、B玩家,並將花色排序
$palyer = array('A','B');
foreach($palyer as $index => $name) {
for($i=0;$i<5;$i++){
$player[$name][] = array_pop($cards);
}
//整理牌組
arsort($player[$name]);
}
# 執行結果如下:
# Array
# (
# [A] => Array
# (
# [1] => Heart 8
# [3] => Heart 7
# [0] => Diamond 11
# [2] => Club 12
# [4] => Club 10
# )
#
# [B] => Array
# (
# [3] => Spade 2
# [0] => Spade 1
# [1] => Heart 2
# [2] => Heart 12
# [4] => Diamond 6
# )
#
# )
--
我的樂多網誌http://blog.roodo.com/liaosankai
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.67.243.112