斗地主算法的设计与实现--如何判断一手牌的类型(单,对子,三不带,三带一,四代二等)
- 格式:doc
- 大小:197.50 KB
- 文档页数:12
斗地主春天打法教学设计篇一:斗地主春天打法解析斗地主是一款广受欢迎的棋牌游戏,春天是斗地主中的一种特殊牌型。
春天的出现会使得地主一方在牌局中占据极大的优势,因此春天打法的掌握对于地主一方至关重要。
本文将针对斗地主春天打法进行详细的教学设计,帮助地主一方在游戏中取得更多的胜利。
一、春天的牌型组成春天是指地主一方在一轮出牌后,没有其他玩家出牌,即地主一方将整轮牌局打完。
春天是由地主一方的出牌技巧和策略决定的,下面将介绍几种常见的春天牌型组合:1. 单牌春天:地主一方只剩下一张牌,可以选择出一张单牌,使得其他玩家无法继续出牌。
2. 对子春天:地主一方只剩下一对相同的牌,可以选择出一对牌,使得其他玩家无法继续出牌。
3. 三带一春天:地主一方只剩下一手三带一的牌型,可以选择出这手牌,使得其他玩家无法继续出牌。
4. 炸弹春天:地主一方只剩下一手炸弹的牌型,可以选择出这手牌,使得其他玩家无法继续出牌。
二、春天打法的技巧和策略1. 快速出牌:地主一方在手牌中如果有春天的潜力,就应该尽快出牌,不要等待其他玩家出牌。
这样可以迅速压制其他玩家,增加春天的机会。
2. 节约牌力:尽量保留手牌中的单牌和对子,这样可以有效节约更强大的牌型组合,增加春天的可能性。
3. 反手出牌:地主一方在出牌时,应该尽量将较小的牌留在手中,以便在其他玩家出牌后能迅速反手出牌,压制对方的出牌速度。
4. 牌型组合策略:地主在组合牌型时,应该尽量选择三带一、炸弹等牌型作为春天的主要组合。
这些牌型在斗地主中较为强大,容易压制其他玩家,增加春天出现的机会。
5. 欺骗性出牌:地主一方可以刻意放弃一些较强的牌型组合,以达到欺骗其他玩家,使得对方放松警惕,增加春天的出现机会。
三、训练与提高春天打法的方法1. 多参加实战练习:地主一方应该多参加斗地主的实战练习,通过与其他玩家对战,来提升春天的打法水平。
2. 观摩高手对决:观摩一些斗地主高手的对局,学习他们的出牌技巧和策略,借鉴他们的春天打法经验。
斗地主策划书1. 引言斗地主是一种非常受欢迎的扑克牌游戏,它既考验了玩家的技巧和策略,又充满了竞争与乐趣。
本文档旨在为斗地主游戏的策划提供指导和建议,帮助开发团队设计出一款精彩而受欢迎的斗地主游戏。
2. 游戏概述斗地主是一种三人对战的扑克牌游戏,游戏目标是尽快出完手中的牌,最先出完牌的玩家获胜。
游戏中使用一副标准的扑克牌(不含大小王),牌面由大到小依次为:2、A、K、Q、J、10、9、8、7、6、5、4、3。
玩家可以通过出牌、抢地主等策略来增加自己的胜算。
3. 游戏规则3.1 牌型及权值•单牌:任意一张单独的牌。
•对子:两张牌点数相同的牌。
•三张:三张牌点数相同的牌。
•三带一:三张牌点数相同的牌加上一张单牌。
•三带二:三张牌点数相同的牌加上一对牌。
•顺子:五张或更多连续的单牌。
•连对:三对或更多连续的对子。
•飞机:两个或更多连续的三张牌。
•炸弹:四张点数相同的牌。
•王炸:一对大小王(即大王+小王)。
3.2 游戏流程1.初始化游戏,洗牌并发牌,确定地主位置。
2.地主首先出牌,然后按照逆时针顺序轮流出牌。
3.玩家需要出比上家牌更大的牌或者炸弹来压制对手。
4.如果一名玩家出完手中的牌,则游戏结束,该玩家获胜。
5.若轮到某玩家出牌时,其他两位玩家都选择不要,该玩家可以出任意合法的牌。
3.3 抢地主在斗地主游戏中,抢地主环节是非常重要的。
在游戏开始之前,玩家可以通过叫分的方式争夺地主的位置。
叫分的规则如下:•玩家可以选择不叫地主,叫1分、叫2分或叫3分。
•每个玩家只能叫一次分,且不能比上家叫的分低。
•若所有玩家都选择不叫分,则重新洗牌再次发牌。
4. 游戏设计4.1 界面设计斗地主游戏的界面设计应简洁、美观,并兼顾不同设备的屏幕尺寸。
主要界面应包括以下几个部分:•牌局信息:显示当前游戏状态、剩余牌数等信息。
•玩家手牌区:显示玩家手中的牌,并根据游戏规则进行排序。
•出牌区:显示上家出牌的牌型及权值,并提供出牌操作。
斗地主技术记牌的方法斗地主是一款非常受欢迎的棋牌游戏,技术记牌是玩家在游戏中提高胜率的重要方法之一。
记牌技术需要玩家具备一定的数学运算能力、观察力和记忆力。
在斗地主游戏中,记牌技术可以让玩家更清楚地知道牌局中各个玩家手中可能拥有的牌,从而更好地制定出牌策略。
首先,要提高记牌技术,玩家需要对斗地主中的牌进行分类和归纳。
斗地主牌型大致可以分为单牌、对子、三张、炸弹、顺子、连对、三带一、三带一对等几种。
玩家可以通过观察出牌和自己手中的牌,来推测其他玩家可能拥有的牌型,从而更好地做出决策。
其次,玩家需要通过观察其他玩家的出牌情况,来推测他们手中的牌。
比如,如果一个玩家连续出单牌,那么很可能他手中没有大的牌或者炸弹;如果一个玩家连续出顺子或连对,那么很可能他手中没有炸弹或者大的单牌。
通过这种观察,玩家可以更好地判断其他玩家手中的牌,从而更好地制定出牌策略。
另外,玩家还可以通过数学运算来帮助记牌。
斗地主游戏中,一共有54张牌,每个玩家手中大概有17张牌,地主多一些,农民少一些。
通过数学运算,可以推测出其他玩家手中可能拥有的牌型和数量。
比如,如果自己手中有5张单牌,并且已经出了3张,那么很可能其他玩家手中也没有很多单牌。
通过这种数学推算,可以更好地帮助玩家记牌。
此外,还有一些记牌的小技巧可以帮助玩家提高记牌技术。
比如,玩家可以通过观察其他玩家摸牌的动作和表情来推测他们手中的牌;玩家可以通过观察其他玩家出牌的顺序和策略来推测他们可能拥有的牌型。
这些小技巧都可以帮助玩家更好地记牌。
总的来说,记牌技术是斗地主游戏中非常重要的一部分,可以帮助玩家更好地制定出牌策略,提高胜率。
记牌技术需要玩家具备一定的数学运算能力、观察力和记忆力。
通过分类和归纳牌型、观察其他玩家出牌和摸牌情况、数学运算、以及一些小技巧,玩家可以提高自己的记牌技术,从而在斗地主游戏中获得更好的成绩。
斗地主算法的设计与实现--如何判断一手牌的类型(单,对子,三不带,三带一,四代二等)斗地主游戏算法牌型项目研发本篇主要讲解斗地主中如何判断一手牌的牌型。
牌型火箭:即双王(大王和小王),最大的牌。
炸弹:四张点数相同的牌,如:7777。
单牌:任意一张单牌。
对牌:任意两张点数相同的牌。
三张:任意三张点数相同的牌,如888。
三带一:点数相同的三张牌+一张单牌或一对牌。
如:333+6 或444+99。
单顺:任意五张或五张以上点数相连的牌,如:45678或78910JQK。
不包括2和双王。
双顺:三对或更多的连续对牌,如:334455、7788991010JJ。
不包括2 点和双王。
三顺:二个或更多的连续三张牌,如:333444 、555666777888。
不包括2 点和双王。
飞机带翅膀:三顺+同数量的单牌或同数量的对牌。
如:444555+79 或333444555+7799JJ四带二:四张牌+两手牌。
(注意:四带二不是炸弹)。
如:5555+3+8 或4444+55+77 。
友情提示:本篇是接着上1篇讲述的,建议先看看上1篇一张牌Card的构造过程。
斗地主算法的设计与实现--项目介绍&如何定义和构造一张牌/*** 游戏规则牌的类型共有10种:** 1. 单2.对子3.3不带4.3带1 5.炸弹6.顺子7.4带2 8.连队9.飞机10.对王** @author LeiWen@,,* /FansUnion**/1.单1/**2 * 判断牌是否为单3 *4 * @param myCards5 * 牌的集合6 * @return 如果为单,返回true;否则,返回false。
7 */8public static boolean isDan(List<Card> myCards) { 9// 默认不是单10boolean flag = false;11if (myCards != null && myCards.size() == 1) {12 flag = true;13 }14return flag;15 }2.对子16/**17 * 判断牌是否为对子18 *19 * @param myCards20 * 牌的集合21 * @return 如果为对子,返回true;否则,返回false。
斗地主玩法基础教学设计1. 引言斗地主是中国最受欢迎的扑克牌游戏之一,玩法简单又有趣。
本文将介绍斗地主的基础玩法,帮助初学者快速上手。
2. 准备工作玩斗地主需要一副54张的扑克牌(包括大小王)。
游戏的参与者通常为三人,每人的牌数为17张,最后留下三张作为底牌。
3. 牌的大小斗地主的牌型以及牌的大小顺序如下:- 单牌:任意一张单独的牌;- 对子:两张点数相同的牌;- 三张:三张点数相同的牌;- 三带一:三张点数相同的牌加上一张单牌;- 三带二:三张点数相同的牌加上一对牌;- 顺子:至少五张连续点数的单牌;- 连对:至少三对连续点数的牌;- 飞机:至少两个连续点数的三带一或三带二;- 炸弹:四张点数相同的牌;- 火箭:即大小王组成的牌(最大)。
4. 游戏流程斗地主的游戏流程分为发牌、叫地主、出牌三个阶段。
- 发牌:首先,将一副扑克牌洗牌后,由一名玩家任意选择开始发牌。
每人轮流发牌,每人发17张牌,最后三张牌作为底牌放置在桌面上。
发牌时,需要确保每个人的牌面向下,不能看到牌的花色和点数。
- 叫地主:发牌完毕后,由三名玩家轮流叫地主。
每个玩家可以选择叫地主、不叫或者抢地主。
最后叫地主的玩家将获得底牌,并且可以先出牌开始游戏。
- 出牌:叫地主确定后,地主首先出牌,接下来是其他两名农民。
从地主开始,每个玩家轮流出牌。
玩家需要出比上家更大的牌型或者相同牌型但更大点数的牌。
如果不能出牌,可以选择不出或者出炸弹。
当一轮出牌结束时,下一个玩家继续出牌。
当其中两名玩家牌出完了,剩下的一名玩家也赢得了本轮。
5. 牌型与出牌策略- 单牌和对子是最基本的牌型,可以在任何时候出牌。
- 三张可以作为单牌或对子出牌。
- 三带一或三带二需要搭配单牌或对子,可以在单牌和对子出牌的基础上出牌。
- 顺子、连对和飞机需要至少五张或三对及以上的连续牌,可以出牌时一次性出完。
- 若手中有炸弹,可以适当时机出牌,因为炸弹是最大的牌型。
- 火箭可以在任何时候出牌,并且是可以覆盖地主的最佳牌型。
斗地主解析牌型解析算法由于近年来网络棋牌游戏的火爆导致个各个地区的特色棋牌游戏开发进入红火时期,也有越来越多的团队个人开始研究棋牌游戏的开发,所以本文主旨在于各个开发人员之间的交流。
每个游戏都有属于自己的规则,当然斗地主也不例外,常斗地主的朋友可能知道在斗地主里面一共有13种牌型,你所出的牌必须符合13种的一种才能够出得了牌,这个就叫地主的规则。
那么我们下面可以通过一个枚举结构来表示每一种的牌型,在这里我们把错误的牌型也当成是一种牌型。
那么在编程中我们该怎么来判断一组牌到底该属于哪一种牌型了?这就是接下来我们将解决的问题,本文中可能有些判断牌型的方法不是很好,如果你有更好的方法,欢迎留言指导!~(@^_^@)~!!首先我们可以根据穷举的方式来罗列一下。
在我以前写斗地主的时候我是根据出牌的张数来罗列牌型的,下面我也将使用这种方法,因为没有找到什么更好的方法,嘿嘿!!那就让我们开始吧!牌的张数 ? 可能的牌型1张牌 ? ? ? ? 单牌2张牌 ? ? ? ? 对子(排除对鬼,因为这个在出牌中出现的次数比较少)3张牌 ? ? ? ?3不带4张牌 ? ? ? 3带一 ?炸弹5张牌 ? ? ? 连牌,3带1对6,7,8,9………这里我们可以用出牌张数5作为分界线,因为5刚好是连牌的起始数并且出牌张数大于5之后就比较的复杂了。
我们首先定义一个数组来存放即将出牌的牌值。
在判断牌型之前将数组排序,排序规则:如果每张牌出现的次数一样,由小到大,如果不一样就将出现次数比较多的牌放在前面。
比如(7,7,3,7)排序之后就变为(7,7,7,3),这样便于我们后面的判断。
出牌张数<5我们只需判断第一张和最后一张牌的牌值时候相等(因为我们数组已经按照我们事先的规则排序了),如果相等则直接返回牌的张数,这里牌的张数刚好对应我们前面定义的枚举结构值。
如果不相等这里要分情况,当出牌的张数等于4时,判断第一张的牌值是否等于倒数第2张,如果相等我们可以直接返回THREE_ONE_CARD牌型,其余的情况可以直接返回ERROR_CARD 。
斗地主牌型分析斗地主是中国流行的一种纸牌游戏,也是一项具有竞技性和策略性的游戏。
作为一位嗜好和研究棋牌游戏多年的高手,我在斗地主的玩法中积累了丰富的经验,并且在国内多个比赛中获得了荣誉和奖项。
在这篇文章中,我将分享一些斗地主牌型的分析,希望能对广大斗地主玩家有所帮助。
首先,让我们来看看斗地主牌型的分类。
斗地主的牌型多种多样,但可以按照牌型的组合和大小进行分类。
常见的牌型有炸弹、三带一、顺子、连对、飞机等等。
在斗地主中,炸弹是最大的牌型,也是最具有威力的牌型,一旦出现炸弹,可以将其他牌型完全压制。
三带一是另一个强大的牌型,可以在牌局中发挥巨大的作用。
而顺子和连对则在牌局中用于出牌顺序上,可以掌握主动权。
其次,我们来分析一下斗地主牌型的特点。
不同的牌型具有不同的特点和优势。
炸弹牌型的特点是威力大,可以迅速扳回局势。
然而,炸弹在斗地主中并不常见,所以在牌局中准备炸弹要有一定的技巧和耐心。
三带一是一种相对稳定的牌型,可以在中游的时候出牌,来稳定自己的位置。
顺子和连对则是一种比较实用的牌型,在前期可以用来压制对手,并且在后期可以掌握主动权。
然后,我们来看一下斗地主中牌型的搭配技巧。
不同的牌型搭配方式有不同的技巧和策略。
以三带一为例,如果手上有连续的三张相同的牌和一张散牌,我们可以选择将连续的三张牌带出,这样可以保留身上的单牌,以备后面出牌的需要。
如果出牌顺序是顺子或连对,我们可以选择将较小的牌型先出,这样可以逼迫对手出更大的牌型,从而在后面的回合中取得主动。
总之,搭配牌型要根据具体的牌局情况和对手的出牌习惯来决策。
最后,我想再强调一下,在斗地主中,牌型只是游戏的基础,更重要的是运用牌型的策略。
斗地主是一种博弈游戏,胜利不仅仅取决于手上的牌型,还取决于玩家的智慧和决策能力。
在牌局中,我们要学会观察对手的出牌习惯,分析对手的牌型,合理运用自己的牌型和技巧,以取得最终的胜利。
牌型只是一种手段,关键在于运筹帷幄,决胜千里。
斗地主的玩法规则
斗地主是一款热门的中国传统牌类游戏,它源于中国,深受中国朋友和世界各地的玩家的喜爱。
斗地主由三个玩家(可以由2-4人玩)参加,每个玩家使用一副54张扑克牌(多一张王牌),分别称为东、南、西和北四个方位。
斗地主的玩法很简单,游戏前需要确定底牌和地主,牌面及牌型都是和传统的一样的,最大的牌为2,最小的牌为A,一副牌有52张正常牌,另外2张王牌。
在斗地主中,底牌是由3张牌组成的,王牌也可以用来当作底牌,因此最多可以由3张王牌组成底牌。
确定底牌和地主后,底牌要被加入地主牌中,其他两家玩家可以看到地主的完整牌组。
接下来,地主会先叫牌,然后其他两家玩家轮流叫牌,如果有人不叫,地主可以继续叫牌,但他不能叫牌次数超过两次。
如果一家玩家连续叫牌两次,则必须出完整的牌组。
斗地主的牌型有单张、对子、三个不带、三代一、炸弹、四代二、顺子、连对和飞机,其中特殊的炸弹可以大过所有的牌,四代二可以大过其他除炸弹以外的所有牌,而顺子、连对和飞机必须比上家大才能生效。
本局游戏成功取胜的一方,是将牌全部出完或把对方逼出完牌的一方。
如果在一局游戏中没有人取得胜利,则表示游戏是平局,没有输赢。
在斗地主比赛中,玩家可以选择自己喜欢的叫法,只要让别的玩家听得懂就行。
玩家可以在游戏中增加趣味性,比如使用小报等。
总的来说,斗地主是一款非常有趣有趣味性的游戏,它的玩法简单易懂,每一局都充满了挑战性,而且比赛中会出现各种技巧,玩家们需要不断磨练细心的技巧,才能在游戏中获得胜利。
玩家们可以根据自己的实力熟练掌握斗地主,享受游戏中精彩的时刻。
《斗地主游戏》一般在玩牌之前,可以商约出应有的规则单张:可以是手中的任意一张牌(如◆8 )一对:两张牌点相同的牌,两张牌的花色可以不同(如88 )三同张:三张牌点相同的牌,三张牌的花色可以不同(如888 )三带一:三张牌点相同的牌和另外一张牌一起出。
( 如888+9) 三带二:三张牌点相同的牌和另外两张牌点相同的牌一起出。
( 如888+99)四带二单:必须带两张单牌,不能带大王,小王( 如8888+79) 四带二对:必须带两个对牌,对子可以不用相连。
如8888+7799) 单顺:必须5 张或5 张以上连续的单牌,且其中不能有2 或大小王( 如45678 或10JQKA)对顺( 连对) :必须3 对或3 对以上连续的对牌,且其中不能有2 或大小王( 如667788 或3344556677)三顺(连三条):必须2 个或2 个以上连续的三张牌,且其中不能有2 或大小王:如:333444 、555666777888 )三顺带一:必须2 个或2 个以上连续的三张牌,加上相同牌数的任意单牌,且任意单牌中不能含有大小王(如:444555+79 )三顺带对:类似三顺带一,区别是带牌必须为对牌(如:444555+77 或333444555+7799JJ )炸弹:四张一样牌点的牌(如8888 )火箭:大王跟小王一起为火箭斗地主牌型大小的对比第一:最大的牌是火箭,它可以大过任意的牌形或牌形组合。
第二:炸弹。
炸弹是除火箭之外的任意牌形。
第三:其它的牌型都要比火箭和炸弹小。
如何判断输赢:任意一家出完牌后结束游戏,若是地主先出完牌则地主胜,否则另外两家胜。
斗地主之必备技巧猜、算、堵、防、传是斗地主高手过招的必备技巧。
猜牌。
猜牌的唯一手段就是记牌,得从对方出了些什么牌猜起,最好能记住单张上10点以上出过哪些,对方出过哪些牌,这些牌是什么,从而猜测对方可能有哪些三带几及连子!如果对方在你出A 时犹豫着出2和小王,就有可以猜测到对方是双2分的,或是不是想顶大王。
记牌算牌技巧
记牌和算牌是斗地主游戏中的基本技巧,以下是一些有用的技巧和建议:
1. 记住牌型:尝试记住已经出过的牌型,包括单牌、对子、三连牌等,以便判断对手可能持有的牌。
2. 记住关键牌:记住王、2、A等关键牌的数量和分布情况,这些牌在游戏后期具有重要影响。
3. 观察出牌顺序:注意观察对手的出牌顺序,这可能暗示着他们的牌型和策略。
4. 判断地主牌型:如果自己是地主,要利用手中的信息和出牌情况来判断其他玩家的牌型,从而制定合理的出牌策略。
5. 预测牌型:根据对手的出牌情况和自己的手牌,预测接下来可能的牌型和出牌顺序。
6. 及时调整策略:根据游戏进程和自己的手牌情况,及时调整自己的出牌策略,例如是否选择抢地主、是否跟牌或顶地主等。
7. 多练习:记牌和算牌技巧需要不断地练习和经验积累,只有通过不断的实战才能提高自己的水平。
以上技巧和建议可以帮助你在斗地主游戏中提高记牌和算牌能力,从而更好地制定出牌策略,提高胜率。
斗地主算法的设计与实现--如何判断一手牌的类型(单,对子,三不带,三带一,四代二等)斗地主游戏算法牌型项目研发本篇主要讲解斗地主中如何判断一手牌的牌型。
牌型火箭:即双王(大王和小王),最大的牌。
炸弹:四张点数相同的牌,如:7777。
单牌:任意一张单牌。
对牌:任意两张点数相同的牌。
三张:任意三张点数相同的牌,如888。
三带一:点数相同的三张牌+一张单牌或一对牌。
如:333+6 或444+99。
单顺:任意五张或五张以上点数相连的牌,如:45678或78910JQK。
不包括2和双王。
双顺:三对或更多的连续对牌,如:334455、7788991010JJ。
不包括2 点和双王。
三顺:二个或更多的连续三张牌,如:333444 、555666777888。
不包括2 点和双王。
飞机带翅膀:三顺+同数量的单牌或同数量的对牌。
如:444555+79 或333444555+7799JJ四带二:四张牌+两手牌。
(注意:四带二不是炸弹)。
如:5555+3+8 或4444+55+77 。
友情提示:本篇是接着上1篇讲述的,建议先看看上1篇一张牌Card的构造过程。
斗地主算法的设计与实现--项目介绍&如何定义和构造一张牌/*** 游戏规则牌的类型共有10种:** 1. 单2.对子3.3不带4.3带1 5.炸弹6.顺子7.4带2 8.连队9.飞机10.对王** @author LeiWen@,,* /FansUnion**/1.单1/**2 * 判断牌是否为单3 *4 * @param myCards5 * 牌的集合6 * @return 如果为单,返回true;否则,返回false。
7 */8public static boolean isDan(List<Card> myCards) { 9// 默认不是单10boolean flag = false;11if (myCards != null && myCards.size() == 1) {12 flag = true;13 }14return flag;15 }2.对子16/**17 * 判断牌是否为对子18 *19 * @param myCards20 * 牌的集合21 * @return 如果为对子,返回true;否则,返回false。
22 */23public static boolean isDuiZi(List<Card> myCards) {24// 默认不是对子25boolean flag = false;2627if (myCards != null && myCards.size() == 2) {2829int grade1 = myCards.get(0).grade;30int grade2 = myCards.get(1).grade;31if (grade1 == grade2) {32 flag = true;33 }34 }3536return flag;3738 }3.3带1/**39* 判断牌是否为3带140 *41 * @param myCards42 * 牌的集合43 * @return如果为3带1,被带牌的位置,0或3,否则返回-1。
炸弹返回-1。
44 */45public static int isSanDaiYi(List<Card> myCards) {46int flag = -1;47// 默认不是3带148if (myCards != null && myCards.size() == 4) {49// 对牌进行排序50 CardUtil.sortCards(myCards);5152int[] grades = new int[4];53 grades[0] = myCards.get(0).grade;54 grades[1] = myCards.get(1).grade;55 grades[2] = myCards.get(2).grade;56 grades[3] = myCards.get(3).grade;5758// 暂时认为炸弹不为3带159if ((grades[1] == grades[0]) && (grades[2] == grades[0])60 && (grades[3] == grades[0])) {61return -1;62 }63// 3带1,被带的牌在牌头64else if ((grades[1] == grades[0] && grades[2] == grades[0])) { 65return0;66 }67// 3带1,被带的牌在牌尾68else if (grades[1] == grades[3] && grades[2] == grades[3]) { 69return3;70 }71 }72return flag;73 }4.3不带74/**75 * 判断牌是否为3不带76 *77 * @param myCards78 * 牌的集合79 * @return 如果为3不带,返回true;否则,返回false。
80 */81public static boolean isSanBuDai(List<Card> myCards) {82// 默认不是3不带83boolean flag = false;8485if (myCards != null && myCards.size() == 3) {86int grade0 = myCards.get(0).grade;87int grade1 = myCards.get(1).grade;88int grade2 = myCards.get(2).grade;8990if (grade0 == grade1 && grade2 == grade0) {91 flag = true;92 }93 }94return flag;95 }5.顺子96/**97 * 判断牌是否为顺子98 *99 * @param myCards100 * 牌的集合101 * @return 如果为顺子,返回true;否则,返回false。
102 */103public static boolean isShunZi(List<Card> myCards) {104// 默认是顺子105boolean flag = true;106107if (myCards != null) {108109int size = myCards.size();110// 顺子牌的个数在5到12之间111if (size < 5 || size > 12) {112return false;113 }114115// 对牌进行排序116 CardUtil.sortCards(myCards);117118for (int n = 0; n < size - 1; n++) {119int prev = myCards.get(n).grade;120int next = myCards.get(n + 1).grade;121// 小王、大王、2不能加入顺子122if (prev == 17 || prev == 16 || prev == 15 || next == 17 123 || next == 16 || next == 15) {124 flag = false;125break;126 } else {127if (prev - next != -1) {128 flag = false;129break;130 }131132 }133 }134 }135136return flag;137 }6.炸弹138/**139 * 判断牌是否为炸弹140 *141 * @param myCards142 * 牌的集合143 * @return 如果为炸弹,返回true;否则,返回false。
144 */145public static boolean isZhaDan(List<Card> myCards) {146// 默认不是炸弹147boolean flag = false;148if (myCards != null && myCards.size() == 4) {149150int[] grades = new int[4];151 grades[0] = myCards.get(0).grade;152 grades[1] = myCards.get(1).grade;153 grades[2] = myCards.get(2).grade;154 grades[3] = myCards.get(3).grade;155if ((grades[1] == grades[0]) && (grades[2] == grades[0]) 156 && (grades[3] == grades[0])) {157 flag = true;158 }159 }160return flag;161 }7.王炸162/**163 * 判断牌是否为王炸164 *165 * @param myCards166 * 牌的集合167 * @return 如果为王炸,返回true;否则,返回false。
168 */169public static boolean isDuiWang(List<Card> myCards) { 170// 默认不是对王171boolean flag = false;172173if (myCards != null && myCards.size() == 2) {174175int gradeOne = myCards.get(0).grade;176int gradeTwo = myCards.get(1).grade;177178// 只有小王和大王的等级之后才可能是33179if (gradeOne + gradeTwo == 33) {180 flag = true;181 }182 }183return flag;184 }8.连对185/**186 * 判断牌是否为连对187 *188 * @param myCards189 * 牌的集合190 * @return 如果为连对,返回true;否则,返回false。