使用php编写一个扑克牌比大小,两个人抽牌,每人五张。
时间: 2024-02-11 10:09:42 浏览: 138
好的,下面是一个简单的使用 PHP 编写的扑克牌比大小游戏,可以让两个人抽牌,每人五张。代码如下:
```php
<?php
// 定义扑克牌花色和点数数组
$suits = array('♠', '♥', '♦', '♣');
$ranks = array('A', 'K', 'Q', 'J', '10', '9', '8', '7', '6', '5', '4', '3', '2');
// 初始化一副牌
$deck = array();
foreach ($suits as $suit) {
foreach ($ranks as $rank) {
$deck[] = $suit . $rank;
}
}
// 洗牌
shuffle($deck);
// 两个人抽牌
$player1_hand = array_slice($deck, 0, 5);
$player2_hand = array_slice($deck, 5, 5);
// 计算每个人的牌型大小
$player1_rank = calculateRank($player1_hand);
$player2_rank = calculateRank($player2_hand);
// 比较牌型大小,输出胜者
if ($player1_rank > $player2_rank) {
echo "Player 1 wins!\n";
} elseif ($player1_rank < $player2_rank) {
echo "Player 2 wins!\n";
} else {
echo "Tie!\n";
}
// 计算牌型大小的函数
function calculateRank($hand) {
// 定义牌型数组
$ranks = array(
'Straight flush' => 9,
'Four of a kind' => 8,
'Full house' => 7,
'Flush' => 6,
'Straight' => 5,
'Three of a kind' => 4,
'Two pairs' => 3,
'One pair' => 2,
'High card' => 1
);
// 将牌拆分成花色和点数数组
$suits = array();
$ranks = array();
foreach ($hand as $card) {
$suits[] = substr($card, 0, 1);
$ranks[] = substr($card, 1);
}
// 判断是否为同花顺
if (isStraight($ranks) && isFlush($suits)) {
return $ranks['Straight flush'];
}
// 判断是否为四条
if (in_array(4, array_count_values($ranks))) {
return $ranks['Four of a kind'];
}
// 判断是否为葫芦
if (in_array(3, array_count_values($ranks)) && in_array(2, array_count_values($ranks))) {
return $ranks['Full house'];
}
// 判断是否为同花
if (isFlush($suits)) {
return $ranks['Flush'];
}
// 判断是否为顺子
if (isStraight($ranks)) {
return $ranks['Straight'];
}
// 判断是否为三条
if (in_array(3, array_count_values($ranks))) {
return $ranks['Three of a kind'];
}
// 判断是否为两对
if (count(array_keys(array_count_values($ranks), 2)) == 2) {
return $ranks['Two pairs'];
}
// 判断是否为一对
if (in_array(2, array_count_values($ranks))) {
return $ranks['One pair'];
}
// 如果都不是以上牌型,则为高牌
return $ranks['High card'];
}
// 判断是否为顺子
function isStraight($ranks) {
$max_rank = array_search(max($ranks), $ranks);
$min_rank = array_search(min($ranks), $ranks);
return (max($ranks) - min($ranks) == 4 && count(array_unique($ranks)) == 5) || ($max_rank == 12 && $min_rank <= 3 && count(array_unique($ranks)) == 5);
}
// 判断是否为同花
function isFlush($suits) {
return count(array_unique($suits)) == 1;
}
?>
```
这个游戏主要是根据每个人抽到的牌来计算牌型大小,然后比较大小来决定胜负。在计算牌型大小时,主要是通过判断每个人手中的牌是否为同花顺、四条、葫芦、同花、顺子、三条、两对、一对或高牌等牌型来确定大小。希望这个例子能对你有所帮助。
阅读全文