用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"; // 输出:顺子
相关推荐
Setsuna_F_Seiei6 小时前
前端转型 Agent 开发 04 之 MCP 与 Skill(赋予 Agent 更广工作能力)
前端·agent
刘发财7 小时前
前端2秒生成500页矢量PDF,rust真的强到没朋友
前端·javascript·rust
郑州光合科技余经理8 小时前
国际版外卖系统:税率字段怎么和订单主流程解耦
android·java·开发语言·前端·后端·php·ai编程
梦想平凡8 小时前
百游棋牌源代码开发搭建教程(十):隔离部署、备份恢复与双端验收
java·前端·javascript·数据库·源代码管理
一孤程9 小时前
游戏测试专题第四篇:游戏性能测试实战-帧率/内存/发热全覆盖
游戏·测试
yume_sibai9 小时前
06-Rust Web 开发实战(Axum 框架 + 数据库 + JWT 认证 + 中间件 + 部署)
前端·数据库·rust
云边云科技_云网融合11 小时前
工业互联网组网方案全景解析:从低延迟网络到安全隔离的四大核心支柱
网络·安全·php
计算机魔术师11 小时前
特朗普上台打给黄仁勋:AI末日论是骗局,我们绝不让它发生
前端
troy12811 小时前
Python 基础语法(八):Web 后端开发、数据分析与可视化、网络爬虫、人工智能 / 大模型应用
前端·python·数据分析
计算机魔术师11 小时前
CEO说要慢下来,黑客说别做梦了——同一篇论文,两种命运
前端