用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"; // 输出:顺子
相关推荐
xifangge20256 分钟前
PHP 接口跨域调试完整解决方案附源码(从 0 到定位问题)
开发语言·php
程序员爱钓鱼6 分钟前
Node.js 编程实战:测试与调试 —— 日志与监控方案
前端·后端·node.js
Mapmost15 分钟前
数字孪生项目效率翻倍!AI技术实测与场景验证实录
前端
济南壹软网络科技有限公司17 分钟前
基于 ThinkPHP 8.1 + Workerman 的全开源商业级游戏陪玩系统技术架构设计
游戏·开源·游戏陪玩·php护航·商业版游戏护航
小酒星小杜19 分钟前
在AI时代,技术人应该每天都要花两小时来构建一个自身的构建系统-Input篇
前端·程序员·架构
Cache技术分享27 分钟前
290. Java Stream API - 从文本文件的行创建 Stream
前端·后端
陈_杨29 分钟前
前端成功转鸿蒙开发者真实案例,教大家如何开发鸿蒙APP--ArkTS 卡片开发完全指南
前端·harmonyos
小杨同学4935 分钟前
C 语言实战:枚举类型实现数字转星期(输入 1~7 对应星期几)
前端·后端
陈_杨37 分钟前
前端成功转鸿蒙开发者真实案例,教大家如何开发鸿蒙APP--ArkTS 卡片刷新机制
前端·harmonyos
go_caipu44 分钟前
Vben Admin管理系统集成qiankun微服务(二)
前端·javascript