MENU

利用php模拟分发扑克牌(无聊之作)

• March 30, 2020 • 教程

无聊之作

我也不知道为什么一到周一就这么无聊,闲着没事干就开始准备水文了。然后就收到了我班同学邀请我去斗地主(微信小程序),灵感刷刷刷的就来了,与其呆着无聊,倒不如用php模拟一下斗地主的发牌。

说干就干

首先我们需要生成一套扑克牌,我说需要有扑克牌,php就帮我生成了一套扑克牌

<?php
//生成所有扑克牌
$card = explode('|','2|3|4|5|6|7|8|9|10|J|Q|K|A');
foreach ($card as $value) {
    $jokes[] = '方片'.$value;
    $jokes[] = '梅花'.$value;
    $jokes[] = '红桃'.$value;
    $jokes[] = '黑桃'.$value;
}

差点忘了还有大王和小王

//别忘了大王和小王
$jokes[] = '大王';
$jokes[] = '小王';

这样我们就拥有了一套扑克牌,都存在了$jokes这个变量里面了。
接着我们就开始给我们的玩家分发扑克牌了,我的思路是随机选择17张牌,当然选择的牌是不能重复出现的,要不然就是有人出老千了。

//生成第一个人的牌
for ($i=0; $i < 17; $i++) {
    //取第几张牌
    $num = rand(0,count($jokes)-1);
    $first[] = $jokes[$num];
    //重建索引
    array_splice($jokes,$num,1);
}
//生成第二个人的牌
for ($i=0; $i < 17; $i++) {
    //取第几张牌
    $num = rand(0,count($jokes)-1);
    $second[] = $jokes[$num];
    //重建索引
    array_splice($jokes,$num,1);
}
//生成第三个人的牌
for ($i=0; $i < 17; $i++) {
    //取第几张牌
    $num = rand(0,count($jokes)-1);
    $third[] = $jokes[$num];
    //重建索引
    array_splice($jokes,$num,1);
}

这样我们的三个虚拟玩家也有了牌,而且是绝对公平的。
最后一步,我们就可以把牌都输出了。

//开始输出
echo "第一个孩纸:";
for ($i=0; $i < count($first); $i++) { 
    echo $first[$i].' ';
}
echo "\n";
echo "第二个孩纸:";
for ($i=0; $i < count($second); $i++) { 
    echo $second[$i].' ';
}
echo "\n";
echo "第三个孩纸:";
for ($i=0; $i < count($third); $i++) { 
    echo $third[$i].' ';
}
echo "\n";
echo "底牌:";
for ($i=0; $i < count($jokes); $i++) { 
    echo $jokes[$i].' ';
}

查看成果

第一个孩纸:黑桃2 红桃9 小王 红桃10 方片6 方片K 黑桃6 梅花K 梅花6 红桃3 梅花10 方片2 梅花2 黑桃9 梅花J 梅花4 梅花A
第二个孩纸:红桃7 红桃K 梅花9 梅花Q 方片5 方片8 梅花5 黑桃10 黑桃J 大王 红桃5 方片3 红桃J 梅花8 红桃Q 梅花7 黑桃Q
第三个孩纸:红桃6 方片Q 黑桃5 方片4 方片J 梅花3 红桃2 方片9 黑桃K 方片A 黑桃A 红桃8 红桃4 黑桃3 黑桃7 方片7 方片10
底牌:黑桃4 黑桃8 红桃A

未来设想

说不定等以后我无聊的时候,会把牌的排序和游戏规则都加进去。现在不敢想,还是以后再说吧

Last Modified: May 26, 2020
Archives 下载海报
QR Code for this page
Tipping QR Code