CN107335214A - 一种新昌麻将游戏的作弊检测方法 - Google Patents
一种新昌麻将游戏的作弊检测方法 Download PDFInfo
- Publication number
- CN107335214A CN107335214A CN201710446944.5A CN201710446944A CN107335214A CN 107335214 A CN107335214 A CN 107335214A CN 201710446944 A CN201710446944 A CN 201710446944A CN 107335214 A CN107335214 A CN 107335214A
- Authority
- CN
- China
- Prior art keywords
- board
- card
- player
- points
- board type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F9/00—Games not otherwise provided for
- A63F9/20—Dominoes or like games; Mah-Jongg games
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F9/00—Games not otherwise provided for
- A63F9/20—Dominoes or like games; Mah-Jongg games
- A63F2009/205—Mah-jongg games
Abstract
一种新昌麻将游戏的作弊检测方法,包括以下步骤:1)麻将游戏数据输入,将麻将牌编码,采用三维数组对麻将牌进行编码;对于麻将游戏中每一种操作也需要编码,编码规则是整数从低位到高位依次编码;2)判断下一步操作是不是出牌操作,如果不是执行步骤3),如果是执行步骤4);3)执行当前操作,回到步骤2);4)执行预测出牌模块,预测当前出牌玩家的出牌集合,和实际出牌做对比,如果实际出的牌在预测出牌集中,执行步骤2),否则执行步骤5);5)执行作弊决策模块,如果发现玩家作弊,给出提示,执行步骤2)。本发明提供了一种有效检测作弊行为、保障公平性的新昌麻将游戏的作弊检测方法。
Description
技术领域
本发明属于棋牌游戏作弊检测方法,涉及一种新昌麻将游戏的作弊检测方法。
背景技术
麻将是一种益智游戏,麻将的玩法复杂有趣,它的基本规则简单,容易上手,但其中变化又极多,搭配组合因人而异,因此成为中国历史上最能吸引人的博戏形式之一。在麻将游戏中主要有万、筒、条三门牌和字牌。三门牌中每门从一到九各有四张牌,刚好108张。除了上述三门牌之外,麻将中的其他所有非万、筒、条的牌都是字牌,分别为东、南、西、北、红中、白板、發财,共七种,每种各四张,合计28张。因此,一副麻将中合计有136张牌。
新昌麻将必须是先抓牌后打牌,发牌时庄家14张牌,闲家13张牌。在新昌麻将中只碰不吃,缺一麻将是新昌地区最为流行的麻将玩法,以其玩法简单、容易上手、规则刺激而流行。
在新昌缺一麻将游戏中,缺一是指万、筒、条三门中必需缺其中任意一门才可以胡牌,有字牌无字牌没有关系。缺二即万、筒、条三门中只有其中一门,但需带有字牌。缺三即万、筒、条三门中只有其中一门,并且无字牌。缺五即手牌全部为字牌组成。
新昌麻将的名词说明如下:
(1)明杠:自家有三张一样的牌,别家又打出来一张相同的牌;或者自家已经碰过的牌,又拿到第四张相同的牌;这两种情况都称为明杠,如果是后者可以被别家抢杠胡。
(2)暗杠:自家有三张一样的牌,又摸到第四第四张相同的牌。不管是明杠,还是暗杠,只有在自己的牌满足缺一门的情况下才能够计分。
(3)流局:在桌面上所有的牌都被拿完时仍然没有任何一家胡牌。流局时候,如果有杠牌,则下一局轮到下一家坐庄,否则保留现有庄家。
新昌麻将的胡牌规则如下:
(1)必须要缺一门才能胡牌。
(2)只能碰牌,不能吃牌。
(3)允许放冲、自摸,在明杠的时候允许抢杠胡牌。
(4)不允许一炮多响。当出现两家以上可以同时胡牌时,优先上家,过牌后才能允许下家胡牌。
随着网络游戏的快速发展,在线棋牌类游戏被大众所接受并逐渐流行,在线麻将游戏亦是如此。然而,在线麻将游戏中用户可能通过某些方式串通、作弊,一个玩家可能会故意打出关键牌使得另一玩家可以吃、碰、杠、胡,这样的做法严重影响了游戏的公平性和用户体验。一般而言,玩家在作弊时往往会出现不合理的出牌并明显有利于另一位玩家,这是作弊玩家的一个非常明显的特征。因此,可以利用技术手段有效地检测出用户的作弊行为,对作弊玩家进行惩罚,保障在线麻将游戏的公平性,提高用户的体验度和满意度。
发明内容
为了克服已有技术无法有效检测作弊行为、公平性较差的不足,本发明提供了一种有效检测作弊行为、保障公平性的新昌麻将游戏的作弊检测方法。
本发明解决其技术问题所采用的技术方案是:
一种新昌麻将游戏的作弊检测方法,包括以下步骤:
1)麻将游戏数据输入,过程如下:
将麻将牌编码,采用三维数组对麻将牌进行编码,牌类型typeInt:1-万;2-筒;3-条;4-字;牌大小number:1~9;牌标识index:1~4,区分相同的四张牌;对于麻将游戏中每一种操作也需要编码,编码规则是整数从低位到高位依次是:操作operation2位、位置position1位、牌类型type1、牌数字number1,若干牌序号index;如碰需要三个index,别人打过来的杠需要四个index,吃胡只需要一个index;操作operation的编码规则如下:10:发牌,11:打牌,12:碰,13:别人打过来的胡,14:自摸,15:暗杠,16:自摸明杠,17:别人打过来的明杠,18:过,19:流局,20:抢杠胡,21:抢杠过;
2)判断下一步操作是不是出牌操作,如果不是执行步骤3),如果是执行步骤4);
3)执行当前操作,回到步骤2);
4)执行预测出牌模块,预测当前出牌玩家的出牌集合,和实际出牌做对比,如果实际出的牌在预测出牌集中,执行步骤2),否则执行步骤5);
5)执行作弊决策模块,如果发现玩家作弊,给出提示,执行步骤2)。
进一步,所述步骤4)中,所述预测出牌模块的处理过程如下:
4.1)分析用户手牌中的每一门牌型的评分,这里每一门牌的评分由两部分组成,一部分是每一门牌的牌型得分由牌型分析模块计算出的得分,另一部分是每一门牌的手牌的数量,取这两部分的和作为每一门牌的牌型的评分;
4.2)将评分最低的那一门的手牌都加入到预测出牌结果中,如果还有另一门牌的评分小于20分,则将这一门的单牌加入预测出牌结果中,将字牌中的单牌加入预测出牌结果中;
4.3)如果出牌预测结果不是空的则返回,否则进入下一步;
4.4)把无法组成缺一顺子,顺子,对子,刻子的单牌加入到预测出牌结果中;
4.5)如果出牌预测结果不是空的则返回,否则进入下一步;
4.6)分析手牌找出一张牌,使得出了这张牌后玩家的牌型评分最高,返回这张牌。
再进一步,所述步骤4.1)中,所述牌型得分由牌型分析模块,用于量化当前玩家全部手牌的得分,用户当前的牌型得分计算时还要结合当前台面上的明牌进行分析,定义如下:
在万、筒、条三门中一个顺子为20分;一个刻子为20分,字牌中一个刻子得分也为20分;定义M为组成缺一张顺子牌型时牌局中还能组成顺子的牌的数量,组成一筒,二筒或者八筒,九筒这样的缺一张顺子牌型时得分为5×M/4分;组成一筒,三筒这样的中间缺一个牌的顺子牌型时得分为3×M/4分;组成二筒,三筒这样的顺子牌型时得分为8×M/8分;定义N为组成对子时牌局中还剩下的对子牌的数量,在筒、条、万三门中组成一对时得分为7×N/2分;在字牌中一个对子得分为12×N/2分;分析完所有的对子牌之后,在手牌中找到一个评分最低的对子,如果这个对子属于万、筒、条三门那么评分修改为10分;如果这个对子属于字牌,那么评分修改为14分;
采用递归方法求得玩家手牌的最大牌型得分maxscore,包括以下步骤:
4.1.1)定义最大牌型得分maxscore为0,当前牌型得分curscore为0;
4.1.2)如果玩家的手牌为空,执行步骤4.1.3),否则执行步骤4.1.4);
4.1.3)如果分析过程中存在对子,则找出评分最低的对子,如果这个对子属于万、筒、条三门那么评分修改为10分;如果这个对子属于字牌,那么评分修改为14分,更新curscore;如果curscore大于maxscore,那么令maxscore=curscore,结束;
4.1.4)对于玩家的第一张牌,如果能组成顺子则执行步骤4.1.5);如果能组成刻子则执行步骤4.1.6);如果能组成对子则执行步骤4.1.7)。如果能组成缺一顺子则执行步骤4.1.8);
如果第一张牌能组成多种牌型,那么要对每一种牌型进行分析;例如第一张牌能组成顺子、刻字、对子、缺一顺子,那么要分别执行步骤4.1.5)、4.1.6)、4.1.7)、4.1.8),如果什么都不能组成则去除第一张牌,返回步骤4.1.2);
4.1.5)当前牌型得分curscore加20分,把能组成顺子的牌移除,执行步骤4.1.2);
4.1.6)当前牌型得分curscore加20分,把能组成刻子的牌移除,执行步骤4.1.2);
4.1.7)如果组成对子的牌属于万、筒、条三门,则当前牌型得分curscore加10×N/2分;如果组成对子的牌是字牌,则当前牌型得分curscore加14×N/2分,把能组成对子的牌移除,执行步骤4.1.2);
4.1.8)如果是一筒,二筒或者八筒,九筒这样的缺一张顺子牌型时,当前牌型得分curscore加5×M/4分;如果是一筒,三筒这样的缺一张顺子牌型时,当前牌型得分curscore加3×M/4分;如果是二筒,三筒这样的顺子牌型时,当前牌型得分curscore加8×M/8分,返回步骤4.1.2)。
更进一步,所述步骤5)中,所述作弊决策模块,对于每一局玩家麻将游戏,每一个玩家和其他玩家之间都应该建立相关的二维作弊数组CheatMatrix。CheatMatrix[i][j]表示第i个玩家放牌给第j个玩家的作弊指数CheatValue,CheatValue的计算方式如下:
5.1)计算出牌玩家i出任意一张牌后可以获得的最佳牌型评分Smax;
5.2)计算出牌玩家i实际出牌后牌型的评分Sreal;
5.3)计算可以碰或者可以胡的玩家j拿到这张牌前后的牌型评分Sbefore,Safter;
5.4)CheatValue=(Smax-Sreal)*(Safter-Sbefore);
5.5)更新CheatMatrix,CheatMatrix[i][j]+=CheatValue;
5.6)如果CheatMatrix[i][j]>作弊阈值T,则判断玩家i和j相互串通作弊。
所述作弊决策模块中,对于同一牌桌的玩家完成一局游戏之后,CheatMatrix并不清零,下一局的检测基于上一局的CheatMatrix结果。
本发明为了检测新昌缺一麻将中的作弊情况开发了牌型分析模块,出牌预测模块,作弊决策模块。牌型分析模块用来分析麻将玩家手牌的得分。出牌预测模块是用来预测用户的出牌,通过预测出牌结果和用户实际出牌的比对来判定用户出牌是否合理。作弊决策模块对是用来判断玩家之间是否存在作弊行为。
本发明的有益效果主要表现在:保障在线麻将游戏的公平性,提高用户的体验度和满意度。
附图说明
图1是牌型分析模块样例。
图2是出牌预测模块样例。
图3是作弊决策模块样例。
图4是单局麻将作弊检测算法流程图。
图5是动态连续的多局麻将作弊检测算法流程图。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1~图5,一种新昌麻将游戏的作弊检测方法,包括以下步骤:
1)麻将游戏数据输入,麻将游戏数据输入时应该将麻将牌编码,采用三维数组对麻将牌进行编码,牌类型(typeInt):1-万;2-筒;3-条;4-字;牌大小(number):1~9;牌标识(index):1~4,区分相同的四张牌;对于麻将游戏中每一种操作也需要编码,编码规则是整数从低位到高位依次是:操作operation(2位)、位置position(1位)、牌类型type(1)、牌数字number(1),若干牌序号(index)。如碰需要三个index,别人打过来的杠需要四个index,吃胡只需要一个index。操作operation的编码规则如下:10:发牌,11:打牌,12:碰,13:别人打过来的胡,14:自摸,15:暗杠,16:自摸明杠,17:别人打过来的明杠,18:过,19:流局,20:抢杠胡,21:抢杠过;
2)判断下一步操作是不是出牌操作,如果不是执行步骤3),如果是执行步骤4);
3)执行当前操作(包括胡、碰、杠,过等),回到步骤2);
4)执行预测出牌模块,预测当前出牌玩家的出牌集合,和实际出牌做对比,如果实际出的牌在预测出牌集中,执行步骤2),否则执行步骤5);
5)执行作弊决策模块,如果发现玩家作弊,给出提示,执行步骤2)。
定义牌型分析模块,用于量化当前玩家全部手牌的得分,得分越高则当前牌型越好,用户当前的牌型得分计算时还要结合当前台面上的明牌进行分析。例如组成一筒,二筒这样的缺一张顺子时,如果已经打出的牌中没有三筒,那么评分应高于打出的牌中存在一张或者多张三筒的情况,具体定义如下:
在万、筒、条三门中一个顺子(例如一筒,二筒,三筒)为20分;一个刻子(例如一筒,一筒,一筒)为20分,字牌中一个刻子得分也为20分。定义M为组成缺一张顺子牌型时牌局中还能组成顺子的牌的数量。例如手牌中有一筒,二筒这样的缺一顺子,三筒已经打了1张,那么M为3。组成一筒,二筒或者八筒,九筒这样的缺一张顺子牌型时得分为5×M/4分。组成一筒,三筒这样的中间缺一个牌的顺子牌型时得分为3×M/4分。组成二筒,三筒这样的顺子牌型时得分为8×M/8分。定义N为组成对子时牌局中还剩下的对子牌的数量。例如手牌中有对一筒,一筒已经打了1张,那么N为1。在筒、条、万三门中组成一对时得分为7×N/2分。在字牌中一个对子得分为12×N/2分。分析完所有的对子牌之后,在手牌中找到一个评分最低的对子,如果这个对子属于万、筒、条三门那么评分修改为10分。如果这个对子属于字牌,那么评分修改为14分。
采用递归方法求得玩家手牌的最大牌型得分maxscore,该过程的的步骤如下:
4.1.1)定义最大牌型得分maxscore为0,当前牌型得分curscore为0;
4.1.2)如果玩家的手牌为空,执行步骤4.1.3),否则执行步骤4.1.4);
4.1.3)如果分析过程中存在对子,则找出评分最低的对子,如果这个对子属于万、筒、条三门那么评分修改为10分;如果这个对子属于字牌,那么评分修改为14分,更新curscore;如果curscore大于maxscore,那么令maxscore=curscore,结束;
4.1.4)对于玩家的第一张牌,如果能组成顺子则执行步骤4.1.5);如果能组成刻子则执行步骤4.1.6);如果能组成对子则执行步骤4.1.7)。如果能组成缺一顺子则执行步骤4.1.8);
如果第一张牌能组成多种牌型,那么要对每一种牌型进行分析;例如第一张牌能组成顺子、刻字、对子、缺一顺子,那么要分别执行步骤4.1.5)、4.1.6)、4.1.7)、4.1.8),如果什么都不能组成则去除第一张牌,返回步骤4.1.2);
4.1.5)当前牌型得分curscore加20分,把能组成顺子的牌移除,执行步骤4.1.2);
4.1.6)当前牌型得分curscore加20分,把能组成刻子的牌移除,执行步骤4.1.2);
4.1.7)如果组成对子的牌属于万、筒、条三门,则当前牌型得分curscore加10×N/2分;如果组成对子的牌是字牌,则当前牌型得分curscore加14×N/2分,把能组成对子的牌移除,执行步骤4.1.2);
4.1.8)如果是一筒,二筒或者八筒,九筒这样的缺一张顺子牌型时,当前牌型得分curscore加5×M/4分;如果是一筒,三筒这样的缺一张顺子牌型时,当前牌型得分curscore加3×M/4分;如果是二筒,三筒这样的顺子牌型时,当前牌型得分curscore加8×M/8分,返回步骤4.1.2)。
出牌预测模块是用来预测用户的出牌,通过预测结果来判定用户出牌是否合理。根据新昌缺一麻将的规则,预测规则如下:
4.1)分析用户手牌中的每一门牌型的评分。这里每一门牌的评分由两部分组成,一部分是每一门牌的牌型得分由牌型分析模块计算出的得分,另一部分是每一门牌的手牌的数量,取这两部分的和作为每一门牌的牌型的评分;
4.2)将评分最低的那一门的手牌都加入到预测出牌结果中。如果还有另一门牌的评分小于20分,则将这一门的单牌加入预测出牌结果中。将字牌中的单牌加入预测出牌结果中;
4.3)如果出牌预测结果不是空的则返回,否则进入下一步;
4.4)把无法组成缺一顺子,顺子,对子,刻子的单牌加入到预测出牌结果中;
4.5)如果出牌预测结果不是空的则返回,否则进入下一步;
4.6)分析手牌找出一张牌,使得出了这张牌后玩家的牌型评分最高,返回这张牌。
如果某一用户出牌破坏了自己的牌型,并且又利于某个玩家的牌型,那么玩家就可能作弊。作弊决策模块是用来量化分析玩家是否作弊,对于每一局玩家麻将游戏,每一个玩家和其他玩家之间都应该建立相关的二维作弊数组CheatMatrix。CheatMatrix[i][j]表示第i个玩家放牌给第j个玩家的作弊指数CheatValue,CheatValue的计算方式如下:
5.1)计算出牌玩家i出任意一张牌后可以获得的最佳牌型评分Smax;
5.2)计算出牌玩家i实际出牌后牌型的评分Sreal;
5.3)计算可以碰或者可以胡的玩家j拿到这张牌前后的牌型评分Sbefore,Safter;
5.4)CheatValue=(Smax-Sreal)*(Safter-Sbefore);
5.5)更新CheatMatrix,CheatMatrix[i][j]+=CheatValue;
5.6)如果CheatMatrix[i][j]>作弊阈值T,则判断玩家i和j相互串通作弊。
作弊用户在单局牌中的作弊行为可能不太明显,结合多局牌来分析可以大大提高作弊行为的检测率。对于同一牌桌的玩家完成一局游戏之后,CheatMatrix并不清零,下一局的检测基于上一局的CheatMatrix结果。
图1表示了牌型分析模块样例。当玩家的手牌是五万、六万、一筒、四筒、四筒、二条、六条、六条、七条、七条、八条、九条、东风时,可以组成一个七条、八条、九条的顺子,一个五万、六万的缺一顺子,还有四筒对子和六条对子。顺子得20分,缺一顺子得8分,2个对子得20分,这个手牌的最大牌型得分为48分。
图2表示出牌预测模块样例。当玩家的手牌是五万、六万、一筒、四筒、四筒、二条、六条、六条、七条、七条、八条、九条、东风、發财时,万、筒、条三门中万子的评分只有10分,评分最低,因此五万、六万都在预测出牌中。筒子的牌型评分只有13分,小于20分,因此筒子中的单牌一筒也在出牌预测中。字牌中的单牌东风和發财也在出牌预测中。
图3表示出牌作弊决策模块样例。当麻将游戏进行到第13步操作时,玩家2选择出八万,八万并不在预测出牌中,并且拆了七万、八万的缺一顺子导致玩家2的最大牌型评分从26.25下降到了19.25。玩家1却可以碰八万,碰牌后玩家1的最大牌型得分从58上涨到了68。这时的CheatValue达到了70,本次牌局中作弊阈值T设置为60,因此判断玩家2和玩家1存在作弊行为。
图4表示了单局麻将作弊检测算法具体实施方式流程,麻将作弊检测方法包括以下步骤:
1)麻将游戏数据输入。麻将游戏数据输入时应该将麻将牌编码,采用三维数组对麻将牌进行编码,牌类型(typeInt):1-万;2-筒;3-条;4-字。牌大小(number):1~9(比如在typeInt=1下,number=9,表示九万)。牌标识(index):1~4,区分相同的四张牌。对于麻将游戏中每一种操作也需要编码,编码规则是整数从低位到高位依次是:操作operation(2位)、位置position(1位)、牌类型type(1)、牌数字number(1),若干牌序号(index)。如碰需要三个index,别人打过来的杠需要四个index,吃胡只需要一个index。操作operation的编码规则如下:10:发牌,11:打牌,12:碰,13:别人打过来的胡,14:自摸,15:暗杠,16:自摸明杠,17:别人打过来的明杠,18:过,19:流局,20:抢杠胡,21:抢杠过。
2)判断下一步操作是不是出牌操作,如果不是执行步骤3,如果是执行步骤4;
3)执行当前操作(包括胡、碰、杠,过等),回到步骤2);
4)执行预测出牌模块,预测当前出牌玩家的出牌集合,和实际出牌做对比,如果实际出的牌在预测出牌集中,执行步骤2),否则执行步骤5);
5)执行作弊决策模块,如果发现玩家作弊,给出提示,执行步骤2)。
图5表示了动态连续的多局麻将作弊检测算法具体实施方式流程。作弊检测方法包括以下步骤:
Step 1初始化二维作弊数组CheatMatrix都为0;
Step 2对于单局麻将进行作弊检测(执行步骤1)~步骤5)),更新CheatMatrix;
Step 3对于同一牌桌的玩家完成一局游戏之后进入下一局游戏,CheatMatrix并不清零,执行步骤Step2。
Claims (5)
1.一种新昌麻将游戏的作弊检测方法,其特征在于:包括以下步骤:
1)麻将游戏数据输入,过程如下:
将麻将牌编码,采用三维数组对麻将牌进行编码,牌类型typeInt:1-万;2-筒;3-条;4-字;牌大小number:1~9;牌标识index:1~4,区分相同的四张牌;对于麻将游戏中每一种操作也需要编码,编码规则是整数从低位到高位依次是:操作operation2位、位置position1位、牌类型type1、牌数字number1,若干牌序号index;如碰需要三个index,别人打过来的杠需要四个index,吃胡只需要一个index;操作operation的编码规则如下:10:发牌,11:打牌,12:碰,13:别人打过来的胡,14:自摸,15:暗杠,16:自摸明杠,17:别人打过来的明杠,18:过,19:流局,20:抢杠胡,21:抢杠过;
2)判断下一步操作是不是出牌操作,如果不是执行步骤3),如果是执行步骤4);
3)执行当前操作,回到步骤2);
4)执行预测出牌模块,预测当前出牌玩家的出牌集合,和实际出牌做对比,如果实际出的牌在预测出牌集中,执行步骤2),否则执行步骤5);
5)执行作弊决策模块,如果发现玩家作弊,给出提示,执行步骤2)。
2.如权利要求1所述的一种新昌麻将游戏的作弊检测方法,其特征在于:所述步骤4)中,所述预测出牌模块的处理过程如下:
4.1)分析用户手牌中的每一门牌型的评分,这里每一门牌的评分由两部分组成,一部分是每一门牌的牌型得分由牌型分析模块计算出的得分,另一部分是每一门牌的手牌的数量,取这两部分的和作为每一门牌的牌型的评分;
4.2)将评分最低的那一门的手牌都加入到预测出牌结果中,如果还有另一门牌的评分小于20分,则将这一门的单牌加入预测出牌结果中,将字牌中的单牌加入预测出牌结果中;
4.3)如果出牌预测结果不是空的则返回,否则进入下一步;
4.4)把无法组成缺一顺子,顺子,对子,刻子的单牌加入到预测出牌结果中;
4.5)如果出牌预测结果不是空的则返回,否则进入下一步;
4.6)分析手牌找出一张牌,使得出了这张牌后玩家的牌型评分最高,返回这张牌。
3.如权利要求2所述的一种新昌麻将游戏的作弊检测方法,其特征在于:所述步骤4.1)中,所述牌型得分由牌型分析模块,用于量化当前玩家全部手牌的得分,用户当前的牌型得分计算时还要结合当前台面上的明牌进行分析,定义如下:
在万、筒、条三门中一个顺子为20分;一个刻子为20分,字牌中一个刻子得分也为20分;定义M为组成缺一张顺子牌型时牌局中还能组成顺子的牌的数量,组成一筒,二筒或者八筒,九筒这样的缺一张顺子牌型时得分为5×M/4分;组成一筒,三筒这样的中间缺一个牌的顺子牌型时得分为3×M/4分;组成二筒,三筒这样的顺子牌型时得分为8×M/8分;定义N为组成对子时牌局中还剩下的对子牌的数量,在筒、条、万三门中组成一对时得分为7×N/2分;在字牌中一个对子得分为12×N/2分;分析完所有的对子牌之后,在手牌中找到一个评分最低的对子,如果这个对子属于万、筒、条三门那么评分修改为10分;如果这个对子属于字牌,那么评分修改为14分;
采用递归方法求得玩家手牌的最大牌型得分maxscore,包括以下步骤:
4.1.1)定义最大牌型得分maxscore为0,当前牌型得分curscore为0;
4.1.2)如果玩家的手牌为空,执行步骤4.1.3),否则执行步骤4.1.4);
4.1.3)如果分析过程中存在对子,则找出评分最低的对子,如果这个对子属于万、筒、条三门那么评分修改为10分;如果这个对子属于字牌,那么评分修改为14分,更新curscore;如果curscore大于maxscore,那么令maxscore=curscore,结束;
4.1.4)对于玩家的第一张牌,如果能组成顺子则执行步骤4.1.5);如果能组成刻子则执行步骤4.1.6);如果能组成对子则执行步骤4.1.7)。如果能组成缺一顺子则执行步骤4.1.8);
如果第一张牌能组成多种牌型,那么要对每一种牌型进行分析;例如第一张牌能组成顺子、刻字、对子、缺一顺子,那么要分别执行步骤4.1.5)、4.1.6)、4.1.7)、4.1.8),如果什么都不能组成则去除第一张牌,返回步骤4.1.2);
4.1.5)当前牌型得分curscore加20分,把能组成顺子的牌移除,执行步骤4.1.2);
4.1.6)当前牌型得分curscore加20分,把能组成刻子的牌移除,执行步骤4.1.2);
4.1.7)如果组成对子的牌属于万、筒、条三门,则当前牌型得分curscore加10×N/2分;如果组成对子的牌是字牌,则当前牌型得分curscore加14×N/2分,把能组成对子的牌移除,执行步骤4.1.2);
4.1.8)如果是一筒,二筒或者八筒,九筒这样的缺一张顺子牌型时,当前牌型得分curscore加5×M/4分;如果是一筒,三筒这样的缺一张顺子牌型时,当前牌型得分curscore加3×M/4分;如果是二筒,三筒这样的顺子牌型时,当前牌型得分curscore加8×M/8分,返回步骤4.1.2)。
4.如权利要求1~3之一所述的一种新昌麻将游戏的作弊检测方法,其特征在于:所述步骤5)中,所述作弊决策模块,对于每一局玩家麻将游戏,每一个玩家和其他玩家之间都应该建立相关的二维作弊数组CheatMatrix。CheatMatrix[i][j]表示第i个玩家放牌给第j个玩家的作弊指数CheatValue,CheatValue的计算方式如下:
5.1)计算出牌玩家i出任意一张牌后可以获得的最佳牌型评分Smax;
5.2)计算出牌玩家i实际出牌后牌型的评分Sreal;
5.3)计算可以碰或者可以胡的玩家j拿到这张牌前后的牌型评分Sbefore,Safter;
5.4)CheatValue=(Smax-Sreal)*(Safter-Sbefore);
5.5)更新CheatMatrix,CheatMatrix[i][j]+=CheatValue;
5.6)如果CheatMatrix[i][j]>作弊阈值T,则判断玩家i和j相互串通作弊。
5.如权利要求4所述的一种新昌麻将游戏的作弊检测方法,其特征在于:所述作弊决策模块中,对于同一牌桌的玩家完成一局游戏之后,CheatMatrix并不清零,下一局的检测基于上一局的CheatMatrix结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710446944.5A CN107335214A (zh) | 2017-06-14 | 2017-06-14 | 一种新昌麻将游戏的作弊检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710446944.5A CN107335214A (zh) | 2017-06-14 | 2017-06-14 | 一种新昌麻将游戏的作弊检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107335214A true CN107335214A (zh) | 2017-11-10 |
Family
ID=60221148
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710446944.5A Pending CN107335214A (zh) | 2017-06-14 | 2017-06-14 | 一种新昌麻将游戏的作弊检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107335214A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109718556A (zh) * | 2019-01-30 | 2019-05-07 | 腾讯科技(深圳)有限公司 | 游戏数据处理方法、装置及服务器 |
CN109985389A (zh) * | 2019-04-04 | 2019-07-09 | 南京邮电大学 | 基于区块链智能合约的牌类游戏防作弊方法及其系统 |
CN110478908A (zh) * | 2019-08-22 | 2019-11-22 | 网易(杭州)网络有限公司 | 麻将游戏的控制方法及装置、存储介质、电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02234785A (ja) * | 1989-03-08 | 1990-09-17 | Michio Araki | 麻雀牌の整列方法 |
CN101259328A (zh) * | 2007-07-17 | 2008-09-10 | 科乐美游戏公司 | 麻将游戏机和麻将游戏系统 |
CN201154206Y (zh) * | 2008-02-28 | 2008-11-26 | 林家萍 | 自动麻将机上牌机构 |
-
2017
- 2017-06-14 CN CN201710446944.5A patent/CN107335214A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02234785A (ja) * | 1989-03-08 | 1990-09-17 | Michio Araki | 麻雀牌の整列方法 |
CN101259328A (zh) * | 2007-07-17 | 2008-09-10 | 科乐美游戏公司 | 麻将游戏机和麻将游戏系统 |
CN201154206Y (zh) * | 2008-02-28 | 2008-11-26 | 林家萍 | 自动麻将机上牌机构 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109718556A (zh) * | 2019-01-30 | 2019-05-07 | 腾讯科技(深圳)有限公司 | 游戏数据处理方法、装置及服务器 |
CN109718556B (zh) * | 2019-01-30 | 2021-09-28 | 腾讯科技(深圳)有限公司 | 游戏数据处理方法、装置及服务器 |
CN109985389A (zh) * | 2019-04-04 | 2019-07-09 | 南京邮电大学 | 基于区块链智能合约的牌类游戏防作弊方法及其系统 |
CN109985389B (zh) * | 2019-04-04 | 2022-08-23 | 南京邮电大学 | 基于区块链智能合约的牌类游戏防作弊方法及其系统 |
CN110478908A (zh) * | 2019-08-22 | 2019-11-22 | 网易(杭州)网络有限公司 | 麻将游戏的控制方法及装置、存储介质、电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110404265B (zh) | 一种基于博弈残局在线解算的多人非完备信息机器博弈方法、装置、系统及存储介质 | |
CN107335214A (zh) | 一种新昌麻将游戏的作弊检测方法 | |
Sharma | A factor analysis approach in performance analysis of T-20 cricket | |
Yicong et al. | Evolution of games towards the discovery of noble uncertainty | |
Gao et al. | Building a computer Mahjong player via deep convolutional neural networks | |
Billings | Thoughts on roshambo | |
KR20090002789A (ko) | 인터넷 대전 게임을 이용한 언어 학습 장치 및 그 방법 | |
CN107773984A (zh) | 棋牌类游戏加载方法及棋牌类游戏系统 | |
Viggiato et al. | Trouncing in dota 2: An investigation of blowout matches | |
Silva et al. | Tactics for Twenty20 cricket | |
Aung et al. | Advantage of Initiative Revisited: A case study using Scrabble AI | |
CN111242818B (zh) | 针对少儿的围棋教学系统 | |
CN112138367A (zh) | 一种麻将游戏的出牌推荐方法、系统及设备 | |
CN112766461A (zh) | 一种基于深度学习的斗地主游戏选手余牌计算方法 | |
Yi et al. | Vicarious experimentation through imitation: Evidence from video game sequel releases | |
Douglas | Luck and skill in professional league of legends (E-sports) | |
CN115177958A (zh) | 一种用于模拟麻将游戏的测试方法及其系统 | |
Honghai et al. | Improving mahjong agent by predicting types of yaku | |
KR102568685B1 (ko) | Ai에 의한 바둑기력 평가방법 | |
US20090045575A1 (en) | Poker game method and device | |
Cauwet et al. | Depth, balancing, and limits of the Elo model | |
Gao et al. | Research on Strategies for Tripeaks Variant with Various Layouts | |
Li et al. | A multi-strategy valuation model for popular mahjong actions | |
Tong et al. | Playing mini-Hanabi card game with Q-learning | |
Kastha | Comparison of Heuristic Methods In The Othello Game |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171110 |