我正在为扑克牌制作函数(向“n”个玩家发牌)。 我正在尝试在我的 codeigniter 中模拟发牌功能。但我被困住了,因为所有玩家都得到相同的卡对。
这是我的模型函数:
$deck = array(
'AD', '2D', '3D', '4D', '5D', '6D', '7D', '8D', '9D', 'TD', 'JD', 'QD', 'KD',
'AC', '2C', '3C', '4C', '5C', '6C', '7C', '8C', '9C', 'TC', 'JC', 'QC', 'KC',
'AH', '2H', '3H', '4H', '5H', '6H', '7H', '8H', '9H', 'TH', 'JH', 'QH', 'KH',
'AS', '2S', '3S', '4S', '5S', '6S', '7S', '8S', '9S', 'TS', 'JS', 'QS', 'KS'
);
shuffle($deck);
$player_card = array();
$cycle = 2;
for ($k=0; $k < $players; $k++) {
for ($i=0; $i < $cycle; $i++) {
$player_card[$k][$i] = $deck[$i];
}
}
我得到这样的输出:
这是洗牌后的牌组:
Array
(
[0] => JC
[1] => AC
[2] => 4H
[3] => 5D
[4] => 3D
[5] => QD
[6] => 7H
[7] => 8S
[8] => AD
[9] => KD
[10] => 6C
[11] => KH
[12] => TS
[13] => 8D
[14] => 7S
[15] => 9C
[16] => 6D
[17] => 6S
[18] => 4S
[19] => KC
[20] => 2H
[21] => 9H
[22] => 8H
[23] => 2C
[24] => AS
[25] => 7C
[26] => 3C
[27] => 2D
[28] => QS
[29] => QC
[30] => JS
[31] => JH
[32] => 9D
[33] => TC
[34] => 3S
[35] => 4C
[36] => 2S
[37] => 3H
[38] => JD
[39] => 5H
[40] => 6H
[41] => AH
[42] => TH
[43] => TD
[44] => KS
[45] => 9S
[46] => 8C
[47] => 5S
[48] => 7D
[49] => 4D
[50] => 5C
[51] => QH
)
这是“n”名玩家的牌(n = 3)
Array
(
[0] => Array
(
[0] => JC
[1] => AC
)
[1] => Array
(
[0] => JC
[1] => AC
)
[2] => Array
(
[0] => JC
[1] => AC
)
)
我想要的 Put 是: 想要对每个玩家进行回合制卡牌分配。
Array
(
[0] => Array
(
[0] => JC
[1] => 5D
)
[1] => Array
(
[0] => AC
[1] => 3D
)
[2] => Array
(
[0] => 4H
[1] => QD
)
)
最佳答案
你已经洗牌了,为什么不简单地array_chunk
呢?
shuffle($cards);
$player_card = array_chunk($cards, 13);
http://php.net/manual/tr/function.array-chunk.php
这将输出如下内容:
Array
(
[0] => Array
(
[0] => 3D
[1] => 7S
[2] => AD
[3] => 9C
[4] => 5D
[5] => KS
[6] => 4H
[7] => 6S
[8] => AS
[9] => TH
[10] => 4S
[11] => TS
[12] => 3H
)
[1] => Array
(
[0] => AH
[1] => 5S
[2] => AC
[3] => QS
[4] => 5H
[5] => 7D
[6] => JH
[7] => QD
[8] => JS
[9] => 9S
[10] => 8S
[11] => 6C
[12] => 2H
)
[2] => Array
(
[0] => TD
[1] => 8H
[2] => 5C
[3] => KD
[4] => 8D
[5] => QH
[6] => JC
[7] => TC
[8] => 3C
[9] => 6D
[10] => 9H
[11] => 2C
[12] => 2D
)
[3] => Array
(
[0] => 7C
[1] => KH
[2] => 4D
[3] => 9D
[4] => 6H
[5] => 7H
[6] => KC
[7] => QC
[8] => JD
[9] => 2S
[10] => 8C
[11] => 4C
[12] => 3S
)
)
编辑:如果您想将牌一张一张地发给玩家;
$player_card = [[],[],[],[]]; // four players
for($i = 0; i < count($deck); $i++){
$player_card[$i % 4][] = $deck[$i];
}
关于php - 用 PHP 模拟发牌卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46584498/