php实现扑克
PHP实现扑克牌功能
创建一副标准的52张扑克牌(不含大小王)的PHP实现方法:
$suits = ['Spades', 'Hearts', 'Diamonds', 'Clubs'];
$values = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'];
$deck = [];
foreach ($suits as $suit) {
foreach ($values as $value) {
$deck[] = ['suit' => $suit, 'value' => $value];
}
}
洗牌功能实现
使用PHP内置的shuffle函数随机打乱牌组:
shuffle($deck);
发牌功能实现
从洗好的牌组中分发指定数量的牌:

function dealCards(&$deck, $numCards) {
$hand = [];
for ($i = 0; $i < $numCards; $i++) {
$hand[] = array_shift($deck);
}
return $hand;
}
牌面显示格式化
将牌面信息转换为更友好的显示格式:
function formatCard($card) {
$suitSymbols = [
'Spades' => '♠',
'Hearts' => '♥',
'Diamonds' => '♦',
'Clubs' => '♣'
];
return $card['value'] . $suitSymbols[$card['suit']];
}
完整示例使用
创建、洗牌并分发5张牌:

$suits = ['Spades', 'Hearts', 'Diamonds', 'Clubs'];
$values = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'];
$deck = [];
foreach ($suits as $suit) {
foreach ($values as $value) {
$deck[] = ['suit' => $suit, 'value' => $value];
}
}
shuffle($deck);
$hand = dealCards($deck, 5);
foreach ($hand as $card) {
echo formatCard($card) . "\n";
}
扑克牌游戏扩展功能
计算牌面点数(适用于21点游戏):
function calculateHandValue($hand) {
$value = 0;
$aces = 0;
foreach ($hand as $card) {
if (is_numeric($card['value'])) {
$value += $card['value'];
} elseif ($card['value'] == 'A') {
$value += 11;
$aces++;
} else {
$value += 10;
}
}
while ($value > 21 && $aces > 0) {
$value -= 10;
$aces--;
}
return $value;
}
牌组重置功能
当牌组剩余牌数不足时重新生成并洗牌:
function resetDeck(&$deck) {
global $suits, $values;
$deck = [];
foreach ($suits as $suit) {
foreach ($values as $value) {
$deck[] = ['suit' => $suit, 'value' => $value];
}
}
shuffle($deck);
}






