作者liaosankai (低温烘焙)
看板PHP
标题Re: [请益] 求救 乱数发牌
时间Sun Jun 15 18:52:45 2008
※ 引述《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