用PHP8实现斗地主游戏,实现三带一,三带二,四带二,顺子,王炸功能(第二集)

实现三带一,三带二,四带二,顺子,王炸功能逻辑

代码:

php 复制代码
class CardValidator {
	// 逻辑
	public function checkPokerType($cards) {
    	$counts = array_count_values($cards);
	    sort($cards);
	    $isStraight = true;
	    $isStraightFlush = true;
	    $isFourOfAKind = false;
	    $isFullHouse = false;
	    $isThreeOfAKind = false;
	    $isTwoPairs = false;
	    $isOnePair = false;
	    $isHighCard = true;

	    // 顺子判断
	    for ($i = 1; $i < count($cards); $i++) {
	        if ($cards[$i] != $cards[$i - 1] + 1) {
	            $isStraight = false;
	            break;
	        }
	    }
    
		if(count($cards) == 2 && in_array('小王',$cards) && in_array('大王',$cards)){
				return "王炸";
		}

	  // 四带二和王炸判断
	  if (count($counts) == 2) {
         $values = array_values($counts);
         if (in_array(4, $values) && in_array(2, $values)) {
            return "四带二";
         }        
	  }

     // 三带一/三带二判断
     if (count($counts) == 3) {
        $values = array_values($counts);
        if (in_array(3, $values)) {
            if (in_array(1, $values)) {
                return "三带一";
            } elseif (in_array(2, $values)) {
                return "三带二";
            }
        }
    }

    // 其他牌型判断
    if (count($counts) == 4) {
        $values = array_values($counts);
        if (in_array(2, $values) && in_array(2, $values)) {
            $isTwoPairs = true;
        } elseif (in_array(2, $values)) {
            $isOnePair = true;
        }
    }

    if ($isStraight) {
        return "顺子";
    }

    return "牌选择错误";
  }
}

// 测试
$cards0 = ['大王', '小王']; // 王炸
$cards1 = [3, 3, 3, 4, 5]; // 三带一
$cards2 = [3, 3, 3, 4, 4]; // 三带二
$cards3 = [3, 3, 3, 3, 5, 5]; // 四带二
$cards4 = [3, 4, 5, 6, 7]; // 顺子

$card = new CardValidator();
echo card->checkPokerType($cards0) . "\n"; // 输出:王炸
echo card->checkPokerType($cards1) . "\n"; // 输出:三带一
echo card->checkPokerType($cards2) . "\n"; // 输出:三带二
echo card->checkPokerType($cards3) . "\n"; // 输出:四带二
echo card->checkPokerType($cards4) . "\n"; // 输出:顺子
相关推荐
candyTong19 小时前
一觉醒来,大模型就帮我排查完页面性能问题
前端·javascript·架构
魔术师Grace19 小时前
我给 AI 做了场入职培训
前端·程序员
玩嵌入式的菜鸡20 小时前
网页访问单片机设备---基于mqtt
前端·javascript·css
前端一小卒20 小时前
我用 Claude Code 的 Superpowers 技能链写了个服务,部署前差点把服务器搞炸
前端·javascript·后端
滑雪的企鹅.21 小时前
HTML头部元信息避坑指南大纲
前端·html
一拳不是超人1 天前
老婆天天吵吵要买塔罗牌,我直接用 AI 2 小时写了个在线塔罗牌
前端·ai编程
合天网安实验室1 天前
记录一个免杀的php webshell demo
渗透测试·php·webshell·免杀
AnalogElectronic1 天前
linux 测试网络和端口是否连通的命令详解
linux·网络·php
excel1 天前
如何解决 Nuxt DevTools 中关于 unstorage 包的报错
前端
Rust研习社1 天前
使用 Axum 构建高性能异步 Web 服务
开发语言·前端·网络·后端·http·rust