斗地主检测牌型(玩家)

QT斗地主游戏(卡牌类及核心规则实现) 本项目是基于C++/QT框架开发的斗地主游戏,支持网络通信、牌型判断、游戏流程控制及图形化交互。代码结构采用模块化设计,核心模块包括卡牌数据模型牌型规则判断游戏流程管理网络通信及UI交互。以下是核心模块的技术解析与实现思路。 阅读详情

BRANDSTATUS JudgeVOwn()//检测牌型是否合法可出
	{
		List<Card> vTemp = SelectedCard;//选择的牌
		Sort(vTemp,false);//排序
		BRANDSTATUS tempBRANDSTATUS = BRANDSTATUS._NONE;

        switch (vTemp.Count)
        {
            case 1:
                return BRANDSTATUS._1;//单张
            case 2:
                if (vTemp[0].num == 16 && vTemp[1].num == 17)//大小王 == BOMB
                    return BRANDSTATUS._BOMB;//炸弹

                if (vTemp[0].num == vTemp[1].num)//2张牌数字相等
                    return BRANDSTATUS._1P;//一对

                break;
            case 3://3张牌
                if (vTemp[0].num == vTemp[1].num && vTemp[1].num == vTemp[2].num)
                    return BRANDSTATUS._1T0;//1个3顺

                break;
            case 4://4张牌
                if (vTemp[0].num == vTemp[1].num && vTemp[1].num == vTemp[2].num && vTemp[2].num == vTemp[3].num)
                    return BRANDSTATUS._BOMB;//炸弹

                else if ((vTemp[0].num == vTemp[1].num && vTemp[1].num == vTemp[2].num) ||
                         (vTemp[1].num == vTemp[2].num && vTemp[2].num == vTemp[3].num))
                {
                    return BRANDSTATUS._1T1;//3带一
                }
                break;
            case 5://5张牌
                if ((vTemp[0].num == vTemp[1].num && vTemp[0].num == vTemp[2].num && vTemp[3].num == vTemp[4].num)
                    || (vTemp[0].num == vTemp[1].num && vTemp[2].num == vTemp[3].num && vTemp[2].num == vTemp[4].num))
                {
                    return BRANDSTATUS._1T2;//3带一对(2个相同的)
                }
                break;

        }

		tempBRANDSTATUS = Along (vTemp);//顺子
		if (tempBRANDSTATUS != BRANDSTATUS._NONE)
			return tempBRANDSTATUS;

		tempBRANDSTATUS = Pairs (vTemp);//连对
		if (tempBRANDSTATUS != BRANDSTATUS._NONE)
			return tempBRANDSTATUS;

		tempBRANDSTATUS = Plane_NoWings (vTemp);//飞机  无翅膀
		if (tempBRANDSTATUS != BRANDSTATUS._NONE)
			return tempBRANDSTATUS;

		tempBRANDSTATUS = Plane_OneWings (vTemp);//飞机 单翅膀
		if (tempBRANDSTATUS != BRANDSTATUS._NONE)
			return tempBRANDSTATUS;

		tempBRANDSTATUS = Plane_TwoWings(vTemp);//飞机 双翅膀
		if (tempBRANDSTATUS != BRANDSTATUS._NONE)
			return tempBRANDSTATUS;

		tempBRANDSTATUS = FourTake(vTemp);//4带
		if (tempBRANDSTATUS != BRANDSTATUS._NONE)
			return tempBRANDSTATUS;


		return BRANDSTATUS._NONE;
	}

BRANDSTATUS Along(List<Card> vTemp)//检测顺子
	{
		////////////顺子
		//Count>=5 最少5个才能成顺子  Count<12 345678910JQKA
		if (vTemp.Count >= 5 && vTemp.Count <= 12)  
		{
			int num=0;//计数
			for(int i=0; i < vTemp.Count; i++)
			{
				//2不能作顺子使用, 2 == 15num
				if (vTemp[i].num < 15  &&
				    //
				    vTemp[i].num == vTemp[0].num + i)
				{
					num++;
				}
			}
			if (num==vTemp.Count)//刚好=选中的所有牌数
			{
				return (BRANDSTATUS)(BRANDSTATUS._5ALONG + num - 5);
			}
		}
		return BRANDSTATUS._NONE;
	}

BRANDSTATUS Plane_NoWings(List<Card> vTemp)//飞机不带翅膀
	{
		///////////////飞机不带翅膀 必须2个 3顺起  必须是3的倍数
		if (vTemp.Count >= 6 && vTemp.Count % 3 ==0)
		{
			int num = 0;//计数
			for (int i = 0; i < vTemp.Count -2; i+=3)
			{
				//2不能作飞机使用, 2 == 15num
				if (vTemp[i].num < 15 &&
				    //
				    vTemp[i].num == vTemp[0].num + i/3)
				{
					num++;
				}
			}
			if (num == vTemp.Count/3)
			{
				return (BRANDSTATUS)(BRANDSTATUS._2T0 + num - 2);
			}
		}
		return BRANDSTATUS._NONE;
	}

	BRANDSTATUS Plane_OneWings(List<Card> vTemp)//飞机带单翅膀
	{
		List<Card> vTempTwo = new List<Card>();
		BRANDSTATUS tempBRANDSTATUS = BRANDSTATUS._NONE;
		///////////////飞机带1翅膀 必须2个 三顺起
		if (vTemp.Count >= 8 && vTemp.Count % 4 ==0)//删除多余的翅膀 只留飞机
		{
			for (int i = 0; i < vTemp.Count;i++)
			{
				if (i==0 && vTemp[i].num != vTemp[i + 1].num)// 首 判断是否是单牌
				{
					continue;//单牌 跳过
				}
				else if(i == vTemp.Count -1 && 
				        vTemp[i].num != vTemp[i - 1].num)//尾
				{
					continue;
				}
				else if(i >0 && i < vTemp.Count-1 && 
				        vTemp[i].num != vTemp[i + 1].num &&  vTemp[i].num != vTemp[i - 1].num)//中间
				{
					continue;
				}
				else
				{
					vTempTwo.Add(vTemp[i]);//只加成飞机的
				}
			}
			tempBRANDSTATUS = Plane_NoWings(vTempTwo);
			if(tempBRANDSTATUS != BRANDSTATUS._NONE)
				return (BRANDSTATUS)(((int)tempBRANDSTATUS + (int)BRANDSTATUS._2T1 - (int)BRANDSTATUS._2T0));
		}
		return tempBRANDSTATUS;
	}


java 斗地主出牌算法_斗地主智能(AI)出牌算法 我以前写过一个斗地主机器人。思路如下,希望对你有帮助。};^}2Xo+斗地主AI设计}Fm\+JOS一、牌型7u|%^Ao61 火箭:大小王在一起的牌型,即双王牌,此牌型最大,什么牌型都可以打。QhsVIta2 炸弹:相同点数的四张牌在一起的牌型,比如四条A。除火箭外,它可以打任何牌型,炸弹对炸弹时,要比大小。-qfnUh3 单支(一手牌):单张牌,如一支3。xdqK.Z%?4 对子(一手牌):相... 阅读详情

相关推荐

斗地主牌型逻辑判断与比较算法实现

优先级的判断通常遵循从简单到复杂的原则。例如,比较两个牌型时,先判断是否为相同类型,如都是顺子或都是炸弹,然后根据牌型大小决定优先级。如果类型不同,则直接根据类型判断优先级。同时,还需要考虑特殊情况,例如“春天”(一方不出牌)或“抢地主”的规则,这些也会影响优先级的判断。

weixin_28787801的博客 1419

Android手游《》斗地主完整的源代码(支持单机和网络对战)

Android手游《斗地主》完整的源代码(支持单机和网络对战)下载。一个很不错的源代码。 斗地主掌游是一个独特的国内社会斗地主棋牌游戏,之后玩家可以下载网上斗地主和全世界。掌游斗地主特点:1、只有一个主要的社会斗地主棋牌游戏。圈。为您和好友间建立紧密、互动的社交娱乐氛围。2、包房功能,创建属于自己特有的斗地主专房,邀请三五好友玩个痛快。不受干扰。我的房间我做主!3、24小时循环不间断比赛...

weixin_33842304的博客 1371

斗地主牌型相关算法

lua实现斗地主中的牌型判断,牌的比较,出牌提示的算法

Cocos2d-x v2.2.0《萌妹斗地主》 服务端部署笔记

1.首先下载《萌妹斗地主》的源码,包括服务器端和客户端

已注销 4552

从‘最速控制’到代码:深入拆解韩京清ADRC中TD跟踪器的fhan函数(含Matlab/Simulink实例)

本文深入解析韩京清ADRC中的fhan函数,从理论到代码实现,详细拆解其在Matlab/Simulink中的应用。通过分析最速控制问题和非线性TD的连续形式,揭示fhan函数在信号处理和噪声抑制中的独特优势,并提供工程实践中的参数整定和优化技巧。

weixin_42659194的博客 247

【FPGA】高效捕捉信号边沿的硬件实现技巧

本文深入探讨了FPGA设计中高效捕捉信号边沿的硬件实现技巧。核心在于通过“打两拍”同步器处理亚稳态风险,并详细解析了上升沿、下降沿及双边沿检测的基础原理与Verilog实现。文章进一步介绍了脉冲展宽、数字滤波等高级优化方案,并结合UART起始位检测与按键消抖等实战场景,提供了可靠的代码范例与调试心得,帮助工程师构建稳定可靠的边沿检测模块。

weixin_29165465的博客 227

android 单机斗地主,单机斗地主

单机斗地主是一款画面精美、特效绚丽、操作爽快的斗地主棋牌竞技游戏,拥有精美的界面,动感的音乐,简单的操作,为斗地主玩家提供了流畅而有节奏的游戏感觉。并且还拥有强大的AI以及智能的提示功能。电脑具有很高的人工智能,为玩家提供了强劲的对手。特色:1.整个游戏操作界面均无广告,让讨厌的广告不再阻碍你的视觉,偷着乐去吧。2.强大的AI和自动提示功能。3.全程语音、并有男女区分,让你一耳就能辨识对方身份。4...

weixin_34083972的博客 583

【Matlab/simulink/carsim】再生制动

【Matlab/simulink/carsim】再生制动

weixin_62311849的博客 621

如何用delphi开发斗地主记牌器

<br />unit UnitMemorySearch; interface uses tlhelp32,strutils, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Buttons, ExtCtrls,DBCtrls; type TFrmMemory = class(TForm) ListAdress:

编程资料收集与共享交流 1803

Linux下OpenFire+Spark即时通讯环境搭建全攻略(含证书错误解决方案)

本文提供了一份详尽的Linux环境下OpenFire服务器与Spark客户端即时通讯系统的搭建与配置全攻略。内容涵盖从环境规划、服务端部署、数据库配置到客户端连接的全流程,并重点解决了Spark连接时常见的证书验证错误问题,为企业构建私有化、高可用的XMPP通讯平台提供了实战指导。

weixin_29251131的博客 165

vCenter Server出现no healthy upstream的解决方法

可以通过"VMware vCenter Server Management(服务)"来排查问题,在网页里面找到“服务”模块,会发现有很多服务没有启动起来,而且手动启动也无法启动。7.0 地址后,页面出现“no healthy upstream”,无法正常登录vCenter,重启后依旧如此,该故障的前提是没有对vCenter做过任何配置,如下图所示。于是用命令查询是否有证书过期,发现真有多个服务依赖的证书在当天早上过期。使用如下命令尝试打开服务发现不分服务可以打开,不分服务无法打开。

1万+

牌类游戏G

As a fan of Doudizhu, WYJ likes collecting playing cards very much. One day, MJF takes a stack of cards and talks to him: let's play a game and if you win, you can get all these cards. MJF randomly as...

pdsu_congshuang的博客 257

8、多导睡眠图记录中基于级联自适应滤波器的脑电图信号噪声去除

本文提出了一种基于三级级联自适应滤波器的新型方法,用于去除多导睡眠图(PSG)记录中脑电图(EEG)信号的常见伪迹,包括50/60 Hz电源线干扰、心电图(ECG)和眼电图(EOG)伪迹。该方法采用最小均方(LMS)算法,通过分阶段滤波有效分离并衰减各类噪声,在保留EEG关键神经节律信息的同时显著提升信号质量。研究利用MIT-BIH数据库中的18份真实PSG记录进行验证,结果表明该方法具有无相位失真、实现简单、自适应能力强等优势,适用于睡眠研究及脑机接口等生物医学应用领域。

banana的博客 174

斗地主游戏出牌逻辑用Python如何实现

通过上述设计,可实现斗地主的基础出牌逻辑。如需完整项目代码,可参考GitHub开源项目如DouZero或基于PyQt的图形化实现。print(f"{player.name}的手牌: {player.hand}")selected = input("选择出牌(空格分隔):").split()self.suit = suit # 花色(♠/♥/♣/♦)使用蒙特卡洛树搜索(MCTS)或预训练模型(如DouZero)实现智能出牌。if not last_play: # 首轮出牌任意合法。print("出牌无效!

weixin_51870260的博客 814

【制作100个unity游戏之22】3DRPG游戏开发01——项目的设置和导入及渲染管线的安装修复

如果你现在存在一些疑惑unity导入素材为什么是粉紫色的?表示他没有适配我们的URP通用渲染管线,要如何适配呢?素材渲染错误丢失要如何解决?如果你有上面3个任意的问题,那这篇文章同样适合你,我将手把手教你如何安装修复渲染管线,看完你就了解了!在Unity中,他们都是渲染管线,它们的主要区别在于性能和功能。LWRP是早期版本的URP,它专门为移动设备和低端PC设计,旨在提供更高的性能。它使用基于顶点的光照和简化的后处理效果,可以在更低的硬件要求下运行。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2429

XCP详解「3.1·ASAP2新建A2L文件」

后面是ASAP2新建A2L的操作步骤,如果是APE中新建的A2L就无需以下操作,APE只需要导入现成的A2L即可。退出点击保存时会提示保存A2L文件,是因为前面导出的是1.70版本,工程最低1.71,可以另外起个名字即可。导入elf文件,elf路径建议直接索引编译生成的Debug下的,防止编译后忘记更新。导出V1.70格式A2L文件,APE17支持V1.70。通过ASAP2生成需要A2L文件更常用些。同一个信号可以创建不同属性量。ASAP2中新建A2L文件。设置标定信号数量最大值。XCP详解「总目录」

光明磊学习&积累的地方 3060

基于 PyQt5 的斗地主游戏开发与实现

斗地主是一款经典的扑克牌游戏,通常由三名玩家参与,其中一名玩家为“地主”,另外两名玩家为“农民”。游戏的目标是通过出牌策略,率先将手中的牌全部打出。本次项目的目标是使用 PyQt5 构建一个斗地主游戏的桌面应用程序,同时实现基本的游戏逻辑和人工智能(AI)出牌功能。我们定义了一个Card类来表示每张牌,包含花色(suit)、点数(rank)和权重(weight)三个属性。权重用于排序和比较牌的大小。在函数中,我们生成了一副完整的牌,包括 52 张普通牌和 2 张王。

A12444w的博客 965

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

c++小游戏合集(AI)

c++实现的AI小游戏

pd___gwx0804的博客 865

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【目标检测】斗地主游戏中的手牌预测

提前祝大家马年行大运~

微信公众号 758

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

斗地主叫牌、出牌、跟牌和打牌原则

一、叫牌原则分析 因为在斗地主中,火箭、炸弹、王和2可以认为是大牌,所以叫牌需要按照这些牌的多少来判断。下面是一个简单的原则: 假定火箭为8分,炸弹为6分,大王4分,小王3分,一个2为2分,则 1、当分数大于等于7分时叫三倍; 2、大...

chiyuyi7261的博客 4842

斗地主系列之牌型大小比较

3.比较牌型大小: 1)比较牌型大小总原则: (a) 火箭最大,可以打任意其他的牌。  (b) 炸弹比火箭小,比其他牌大。都是炸弹时按牌的分值比大小。 (c)  除火箭和炸弹外,其他牌必须要牌型相同且总张数相同才能比大小。 相同牌型按牌的分值比大小。 依次是 大王 > 小王 >2>A>K>Q>J>10>9>8>7>6>5>4>3 ,不分花色。  顺牌按最大的一张牌的分值来比大小。 

hfreeman2008的专栏 1万+

判断斗地主卡牌类型的思路

//判断斗地主卡牌类型的思路 #region 牌型分为以下枚举 enum Enum_CardType{ 单, 双, 王炸, 三, 三带一, 炸弹, ...... } #endregion public cardType ExamineCardType ( 传入牌数组 [] ) { if( 判断数量...

u011644138的博客 561

斗地主算法之点选牌

斗地主算法之点选牌                            -------BY wojiushi3344                                      QQ:513670524               PS:最近找了2个朋友主准备把斗地主游戏重写,由于种种原因今天还没有开始,所以先把基本的算法写一写,为以后写项目做准备。如果你对斗地主游戏比较感兴

859

斗地主出牌规则

斗地主AI设计 一、牌型 1 火箭:大小王在一起的牌型,即双王牌,此牌型最大,什么牌型都可以打。 2 炸弹:相同点数的四张牌在一起的牌型,比如四条A。除火箭外,它可以打任何牌型,炸弹对炸弹时,要比大小。 3 单支(一手牌):单张牌,如一支3。 4 对子(一手牌):相同点数的两张牌在一起的牌型,比如55。 5 三条:相同点数的三张牌在一起的牌型,比如三条4。 6 三带一手:三条 + 一手牌的牌型,比...

qq_39908137的博客 7239

Java实现斗地主顺子牌型判断算法

顺子是斗地主游戏中的基础牌型,要求5张以上连续数字的牌组合。在Java开发中,实现高效的顺子判断算法涉及集合操作、数值映射和边界处理等核心技术。通过建立牌面字符到数值的映射表,并进行排序和连续性校验,可以准确判断牌型合法性。这类算法在棋牌游戏服务器开发中尤为重要,良好的实现能显著降低CPU负载。实际应用中还需考虑大小写转换、并发安全等工程细节,并可通过缓存常见模式、使用原生数组等方式优化性能。掌握顺子判断逻辑后,还可扩展应用于连对、飞机等复杂牌型的验证。

weixin_30647423的博客 263

Ai斗地主智能出牌算法

去年有想写个斗地主的小游戏,自己玩玩。找了很多资料,后来好不容易在网上找到了一个AI算法。转过的的时候是贴在自己电脑的TXT文本上,再次感谢下原作者。现在借花献佛发给你参考下。 我以前写过一个斗地主机器人。思路如下,希望对你有帮助。 斗地主AI设计 一、牌型 1 火箭:大小王在一起的牌型,即双王牌,此牌型最大,什么牌型都可以打。 2 炸弹:相同点数的四张牌在一起的牌型,比如四条A。除火箭外,...

伊莱文 5575
上一篇: 斗地主牌型
下一篇: python Error记
DesDestroy
博客等级 码龄14年 84粉丝 78原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值