如何在PHP中洗牌,为每个用户提供不同数量的牌
下面是我用来给用户13张卡片的代码,每次页面刷新时卡片都会改变。我想给每个用户13张不同于其他用户的卡片,每个房间有4个用户,应该是52张如何在PHP中洗牌,为每个用户提供不同数量的牌,php,shuffle,Php,Shuffle,下面是我用来给用户13张卡片的代码,每次页面刷新时卡片都会改变。我想给每个用户13张不同于其他用户的卡片,每个房间有4个用户,应该是52张 echo $_SESSION["user"]; echo "<br><br> Your cards :<br>"; function pc_array_shuffle($array) { $i = count($array); while(--$i) { $j = mt_rand(0,
echo $_SESSION["user"];
echo "<br><br> Your cards :<br>";
function pc_array_shuffle($array) {
$i = count($array);
while(--$i) {
$j = mt_rand(0, $i);
if ($i != $j) {
// swap elements
$tmp = $array[$j];
$array[$j] = $array[$i];
$array[$i] = $tmp;
}
}
return $array;
}
$suits = array('denari', 'kuba', 'sanak', 'shjra');
$cards = array( 2, 3, 'J',4, 5, 6,'Q', 7, 8,'K', 9, 10,'A');
$deck = pc_array_shuffle(range(1,13));
while (($draw = array_pop($deck)) != NULL) {
print "<br>" . $cards[$draw / 4] . ' of ' . $suits[$draw % 4] . "<br>\n";
}
echo$\u会话[“用户”];
回显“
您的卡片:
”;
函数pc_数组_shuffle($array){
$i=计数($array);
而(-$i){
$j=百万兰特(0,$i);
如果($i!=$j){
//交换元素
$tmp=$array[$j];
$array[$j]=$array[$i];
$array[$i]=$tmp;
}
}
返回$array;
}
$suits=array('denari','kuba','sanak','shjra');
$cards=array(2,3,'J',4,5,6,'Q',7,8,'K',9,10,'A');
$deck=pc_array_shuffle(范围(1,13));
while(($draw=array_pop($deck))!=NULL){
打印“
”$cards[$draw/4]”。“$suites[$draw%4]”中的“
\n”;
}
类似于@kainaw所说的,但带有代码:
$suits = array('denari', 'kuba', 'sanak', 'shjra');
$cards = array( 2, 3, 'J',4, 5, 6,'Q', 7, 8,'K', 9, 10,'A');
$deck = array();
foreach ($suits as $suit) {
foreach ($cards as $card) {
$deck[]=$card. " of " . $suit;
}
}
shuffle($deck);
//deal out the cards from deck
`你的意思是将同一副牌中的牌发给4个不同的玩家,这些玩家通过不同的计算机/浏览器连接在一起?如果是这样,那对你没有帮助,因为代码会为每个玩家从一个新的牌组中发牌,牌组不是由连接的用户共享的,你需要用一些表建立一个数据库,比如“play_tables”、“players”、“decks”和“cards”,这样牌组就有牌,play_tables就有牌组,最多有4个玩家,而且玩家有牌,所以你用默认的52张牌为一张牌组构建一副牌组并洗牌,然后用户应该连接到该牌组,让他们选择“开始交易”,然后你将共享牌组中的牌分配给play_牌组中连接的玩家。您需要将所有这些信息保存在数据库中,以便所有用户都能访问相同的信息,否则,您将为每个玩家创建和处理一副牌的牌,它们之间没有任何关系。要使您朝着正确的方向前进一点,请检查标准方法:制作一个包含52张牌的阵列。我叫它美元卡。呼叫洗牌($cards);然后从洗牌牌组中发牌。为什么要建立自己的阵列随机化器?这已经有了,然后整个“A的X卡和B的Y卡”都是不相关的。