一种麻将胡牌表生成方法及装置与流程

文档序号:18461074发布日期:2019-08-17 02:02阅读:2014来源:国知局
一种麻将胡牌表生成方法及装置与流程

本发明实施例涉及计算机技术领域,尤其涉及一种麻将胡牌表生成方法及装置。



背景技术:

现有游戏市场虚拟麻将游戏众多,用户可在电脑、手机等终端的游戏平台上进行虚拟麻将游戏。但是目前游戏市场支持带混子或者癞子(麻将中通过随机抽签方式将某种牌作为可代替任何牌使用的牌叫做混子或癞子)玩法的虚拟麻将游戏并不多,支持带混子或者癞子玩法的麻将乐趣性、益智性强,实体麻将中普及较广,但由于支持带混子或者癞子玩法的虚拟麻将游戏胡牌判定算法难度较高,故支持带混子或者癞子玩法的虚拟麻将游戏较少,游戏市场中支持带混子或者癞子玩法的虚拟麻将游戏普及率并不高。

当前虚拟麻将游戏大都通过递归算法判定麻将胡牌,支持带混子或者癞子玩法的虚拟麻将游戏同样也大都通过递归算法判定麻将胡牌。递归算法对于普通虚拟麻将游戏已非常适用,但是对于支持带混子或者癞子玩法的虚拟麻将游戏而言,其计算量大、判定一次胡牌耗时长、消耗cup资源严重、算法逻辑复杂、易出现bug。



技术实现要素:

鉴于此,为解决上述技术问题或部分技术问题,本发明实施例提供一种麻将胡牌表生成方法及装置。

第一方面,本发明实施例提供一种麻将胡牌表生成方法,所述方法包括:

获取所有第一麻将组合、所有第二麻将组合以及麻将胡牌规则;

根据所述麻将胡牌规则,提取m次所有第一麻将组合,提取n次所有第二麻将组合,所述m、n≥1;

根据所提取的m次所有第一麻将组合以及n次所有第二麻将组合,组合成多种麻将胡牌组合;

建立麻将胡牌组合树,将所述多种麻将胡牌组合存储至所述麻将胡牌组合树;

递归遍历所述麻将胡牌组合树,记录所述麻将胡牌组合树中根节点至任一叶子节点所形成的路径;

从任一路径上麻将胡牌组合确定有效麻将胡牌组合,生成包含所有有效麻将胡牌组合的麻将胡牌表。

在一个可能的实施方式中,所述根据所提取的m次所有第一麻将组合以及n次所有第二麻将组合,组合成所述多种麻将胡牌组合,包括:

根据所提取的m次所有第一麻将组合以及n次所有第二麻将组合,交叉组合成所述多种麻将胡牌组合。

在一个可能的实施方式中,所述建立麻将胡牌组合树,将所述多种麻将胡牌组合存储至所述麻将胡牌组合树,包括:

建立麻将胡牌组合树;

将所述多种麻将胡牌组合按照预设的排序规则进行排序;

将经过排序的所述多种麻将胡牌组合存储至所述麻将胡牌组合树。

在一个可能的实施方式中,所述预设的排序规则为花色和/或大小排序规则。

在一个可能的实施方式中,所述从任一路径上麻将胡牌组合确定有效麻将胡牌组合,生成包含所有有效麻将胡牌组合的麻将胡牌表,包括:

对于任一路径上麻将胡牌组合,判断任一花色麻将数量是否超过预设阈值;

若任一路径上麻将胡牌组合中任一花色麻将数量未超过预设阈值,确定任一路径上麻将胡牌组合为有效麻将胡牌组合;

生成包含所有有效麻将胡牌组合的麻将胡牌表。

在一个可能的实施方式中,所述第一麻将组合与所述第二麻将组合不同。

第二方面,本发明实施例提供一种麻将胡牌判定方法,所述方法包括:

获取用户当前持有麻将组合;

在本地麻将胡牌表中检索是否存在与所述用户当前持有麻将组合相匹配的有效麻将胡牌组合;

若在本地麻将胡牌表中检索到与所述用户当前持有麻将组合相匹配的有效麻将胡牌组合,确定所述用户当前持有麻将组合为有效麻将胡牌组合。

在一个可能的实施方式中,所述在本地麻将胡牌表中检索是否存在与所述用户当前持有麻将组合相匹配的有效麻将胡牌组合,包括:

按照预设的排序规则对所述用户当前持有麻将组合进行排序,所述预设的排序规则为花色和/或大小排序规则;

在本地麻将胡牌表中检索是否存在与经过排序的所述用户当前持有麻将组合相匹配的有效麻将胡牌组合。

第三方面,本发明实施例提供一种麻将胡牌表生成装置,所述装置包括:

获取模块,用于获取所有第一麻将组合、所有第二麻将组合以及麻将胡牌规则;

麻将组合提取模块,用于根据所述麻将胡牌规则,提取m次所有第一麻将组合,提取n次所有第二麻将组合,所述m、n≥1;

胡牌组合组成模块,用于根据所提取的m次所有第一麻将组合以及n次所有第二麻将组合,组合成多种麻将胡牌组合;

胡牌组合存储模块,用于建立麻将胡牌组合树,将所述多种麻将胡牌组合存储至所述麻将胡牌组合树;

路径记录模块,用于递归遍历所述麻将胡牌组合树,记录所述麻将胡牌组合树中根节点至任一叶子节点所形成的路径;

胡牌表生成模块,用于从任一路径上麻将胡牌组合确定有效麻将胡牌组合,生成包含所有有效麻将胡牌组合的麻将胡牌表。

第四方面,本发明实施例提供一种麻将胡牌判定装置,所述装置包括:

麻将组合获取模块,用于获取用户当前持有麻将组合;

检索模块,用于在本地麻将胡牌表中检索是否存在与所述用户当前持有麻将组合相匹配的有效麻将胡牌组合;

胡牌判定模块,用于若在本地麻将胡牌表中检索到与所述用户当前持有麻将组合相匹配的有效麻将胡牌组合,确定所述用户当前持有麻将组合为有效麻将胡牌组合。

本发明实施例提供的技术方案,通过生成适用于不同麻将胡牌规则的麻将胡牌表,且通过在本地麻将胡牌表中检索是否存在与用户当前持有麻将组合相匹配的有效麻将胡牌组合,若在本地麻将胡牌表中检索到与用户当前持有麻将组合相匹配的有效麻将胡牌组合,确定用户当前持有麻将组合为有效麻将胡牌组合。如此对于支持带混子或者癞子玩法的虚拟麻将游戏而言,通过检索麻将胡牌表的形式来判断用户当前持有麻将组合是否为有效麻将胡牌组合,其计算量较小,判定一次耗时较短、消耗较少的cpu资源,胡牌判断算法逻辑变得简单,不易出现bug。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是本发明实施例的一种麻将胡牌表生成方法的流程示意图;

图2是本发明实施例的一种麻将胡牌判定方法的流程示意图;

图3是本发明实施例的一种麻将胡牌表生成装置的结构示意图;

图4是本发明实施例的一种麻将胡牌判定装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。

如图1所示,为本发明实施例所提供的一种麻将胡牌表生成方法的实施流程图,该方法具体可以包括以下步骤:

s101,获取所有第一麻将组合、所有第二麻将组合以及麻将胡牌规则;

在本发明实施例中,生成麻将胡牌表的依据分别是:所有第一麻将组合、所有第二麻将组合以及麻将胡牌规则,需要获取上述所有第一麻将组合、所有第二麻将组合以及麻将胡牌规则。

其中,对于第一麻将组合与所述第二麻将组合,第一麻将组合与所述第二麻将组合不同,在本发明实施例中第一麻将组合可以是麻将顺子组合和麻将刻子组合,第二麻将组合可以是将牌组合,相应的,第一麻将组合可以是将牌组合,第二麻将组合可以是麻将顺子组合和麻将刻子组合,本发明实施例对此不作限定。三张麻将组合分别为麻将刻子组合和麻将顺子组合,例如三张一筒叫麻将刻子组合,一筒、二筒、三筒叫麻将顺子组合,两张相同的牌叫将牌组合。

以第一麻将组合是麻将顺子组合和麻将刻子组合,第二麻将组合是将牌组合为例,在本发明实施例中可以通过穷举的方法列举出上述所有第一麻将组合以及所有第二麻将组合。

另外,比较特殊的,上述所有第一麻将组合以及所有第二麻将组合,可以是当前普通麻将组合,也可以是当前带混子或者癞子的麻将组合,意味着对于麻将顺子组合、麻将刻子组合以及将牌组合,可以是当前普通麻将组合,也可以是当前带混子或者癞子的麻将组合,本发明实施例对此不作限定。以麻将顺子组合、麻将刻子组合以及将牌组合是当前带混子或者癞子的麻将组合为例,麻将顺子组合、麻将刻子组合总共包括169种组合,将牌组合总共69种组合,意味着对于所有第一麻将组合包括169种组合,对于所有第二麻将组合包括69种组合。

再者,对于上述麻将胡牌规则,由于各地玩法不同,麻将胡牌规则也各不相同。例如,一种麻将胡牌规则是胡牌需要四组三张牌的麻将组合以及一对将牌组合。

s102,根据所述麻将胡牌规则,提取m次所有第一麻将组合,提取n次所有第二麻将组合,所述m、n≥1;

针对s101中所获取的麻将胡牌规则,可以提取m次所有第一麻将组合,可以提取n次所有第二麻将组合,其中m、n≥1。

对于任意一次提取,提取全部第一麻将组合以及全部第二麻将组合。例如对于其中一次提取,提取169种第一麻将组合,提取69种第二麻将组合。

有上述可知,上述麻将胡牌规则,由于各地玩法不同,麻将胡牌规则也各不相同,上述m、n与麻将胡牌规则正相关。例如,麻将胡牌规则是胡牌需要四组三张牌的麻将组合以及一对将牌组合,则根据麻将胡牌规则,可以提取4次所有第一麻将组合,以及提取1次所有第二麻将组合。

s103,根据所提取的m次所有第一麻将组合以及n次所有第二麻将组合,组合成多种麻将胡牌组合;

针对上述s102所提取的m次所有第一麻将组合以及n次所有第二麻将组合,组合成多种麻将胡牌组合,具体可以是交叉组合成所述多种麻将胡牌组合。

例如,麻将胡牌规则是胡牌需要四组三张牌的麻将组合以及一对将牌组合,则根据麻将胡牌规则,可以提取4次所有第一麻将组合,以及提取1次所有第二麻将组合,根据交叉组合的形式,第一次提取169种第一麻将组合,第二次提取169种第一麻将组合,第三次提取169种第一麻将组合,第四次提取169种第一麻将组合,提取69种第二麻将组合,可计算得出169×169×169×169×69等多种麻将胡牌组合。

s104,建立麻将胡牌组合树,将所述多种麻将胡牌组合存储至所述麻将胡牌组合树;

针对上述所得到的多种麻将胡牌组合,由于其存在混子或者癞子的缘故,存在很多重复麻将胡牌组合,或者对于普通麻将,其同样存在很多重复麻将胡牌组合,在本发明实施例中利用将胡牌组合树进行去重。故在本发明实施例中,建立麻将胡牌组合树,将所述多种麻将胡牌组合存储至所述麻将胡牌组合树,其中麻将胡牌组合树包含的层数,与麻将胡牌规则相关。

例如,麻将胡牌规则是胡牌需要四组三张牌的麻将组合以及一对将牌组合,则根据麻将胡牌规则,建立包含14层的麻将胡牌组合树,麻将胡牌组合树每一层代表1-14张牌。

其中,在将所述多种麻将胡牌组合存储至所述麻将胡牌组合树之前,将所述多种麻将胡牌组合按照预设的排序规则进行排序,将经过排序的所述多种麻将胡牌组合存储至所述麻将胡牌组合树。本发明实施例中预设的排序规则为花色和/或大小排序规则。

s105,递归遍历所述麻将胡牌组合树,记录所述麻将胡牌组合树中根节点至任一叶子节点所形成的路径;

对于上述麻将胡牌组合树,递归遍历所述麻将胡牌组合树,记录所述麻将胡牌组合树中根节点至任一叶子节点所形成的路径,如此可以得到多个路径,任一路径上均包含一种麻将胡牌组合。

s106,从任一路径上麻将胡牌组合确定有效麻将胡牌组合,生成包含所有有效麻将胡牌组合的麻将胡牌表。

对于任一路径上的麻将胡牌组合,需要确定其是否为有效麻将胡牌组合,然后生成包含所有有效麻将胡牌组合的麻将胡牌表。

由于上述根据所述麻将胡牌规则,提取m次所有第一麻将组合,提取n次所有第二麻将组合,导致一些麻将胡牌组合中某些花色麻将的数量超过某个阈值,因此对于任一路径上麻将胡牌组合,判断任一花色麻将数量是否超过预设阈值,例如预设阈值为4,对于一副麻将中每个花色麻将的数量不能超过4,若任一路径上麻将胡牌组合中任一花色麻将数量未超过预设阈值,确定任一路径上麻将胡牌组合为有效麻将胡牌组合,然后生成包含所有有效麻将胡牌组合的麻将胡牌表。

基于上述麻将胡牌表生成方法,本发明实施例还提供一种麻将胡牌判定方法,参见图2所示,该方法具体可以包括以下步骤:

s201,获取用户当前持有麻将组合;

根据各地麻将玩法不同,麻将胡牌规则也不相同,例如,麻将胡牌规则是胡牌需要四组三张牌的麻将组合以及一对将牌组合。

故在本发明实施例中获取用户当前持有麻将组合,该用户当前持有麻将组合与麻将胡牌规则正相关。

s202,在本地麻将胡牌表中检索是否存在与所述用户当前持有麻将组合相匹配的有效麻将胡牌组合;

针对s202中的用户当前持有麻将组合,在本地麻将胡牌表中检索是否存在与所述用户当前持有麻将组合相匹配的有效麻将胡牌组合。其中检索算法可以是现有常用的二分查找法,检索本地麻将胡牌表中是否存在与所述用户当前持有麻将组合相匹配的有效麻将胡牌组合,即可判定用户当前持有麻将组合是否胡牌。对于麻将胡牌表可以存储在本地内存中。

另外,对于用户当前持有麻将组合,按照预设的排序规则对其进行排序,所述预设的排序规则为花色和/或大小排序规则,在本地麻将胡牌表中检索是否存在与经过排序的所述用户当前持有麻将组合相匹配的有效麻将胡牌组合,即可判定用户当前持有麻将组合是否胡牌。

s203,若在本地麻将胡牌表中检索到与所述用户当前持有麻将组合相匹配的有效麻将胡牌组合,确定所述用户当前持有麻将组合为有效麻将胡牌组合。

对于用户当前持有麻将组合,若在本地麻将胡牌表中检索到与其匹配的有效麻将胡牌组合,确定所述用户当前持有麻将组合为有效麻将胡牌组合,即可判定用户当前持有麻将组合胡牌。

通过上述对本发明实施例提供的技术方案的描述,通过生成适用于不同麻将胡牌规则的麻将胡牌表,且通过在本地麻将胡牌表中检索是否存在与用户当前持有麻将组合相匹配的有效麻将胡牌组合,若在本地麻将胡牌表中检索到与用户当前持有麻将组合相匹配的有效麻将胡牌组合,确定用户当前持有麻将组合为有效麻将胡牌组合。如此对于支持带混子或者癞子玩法的虚拟麻将游戏而言,通过检索麻将胡牌表的形式来判断用户当前持有麻将组合是否为有效麻将胡牌组合,其计算量较小,判定一次耗时较短、消耗较少的cpu资源,胡牌判断算法逻辑变得简单,不易出现bug。

相对于上述方法实施例,本发明实施例还提供了一种麻将胡牌表生成装置,如图3所示,可以包括:获取模块310、麻将组合提取模块320、胡牌组合组成模块330、胡牌组合存储模块340、路径记录模块350、胡牌表生成模块360。

获取模块310,用于获取所有第一麻将组合、所有第二麻将组合以及麻将胡牌规则;

麻将组合提取模块320,用于根据所述麻将胡牌规则,提取m次所有第一麻将组合,提取n次所有第二麻将组合,所述m、n≥1;

胡牌组合组成模块330,用于根据所提取的m次所有第一麻将组合以及n次所有第二麻将组合,组合成多种麻将胡牌组合;

胡牌组合存储模块340,用于建立麻将胡牌组合树,将所述多种麻将胡牌组合存储至所述麻将胡牌组合树;

路径记录模块350,用于递归遍历所述麻将胡牌组合树,记录所述麻将胡牌组合树中根节点至任一叶子节点所形成的路径;

胡牌表生成模块360,用于从任一路径上麻将胡牌组合确定有效麻将胡牌组合,生成包含所有有效麻将胡牌组合的麻将胡牌表。

本发明实施例还提供了一种麻将胡牌判定装置,参见图4所示,可以包括:麻将组合获取模块410、检索模块420、胡牌判定模块430。

麻将组合获取模块410,用于获取用户当前持有麻将组合;

检索模块420,用于在本地麻将胡牌表中检索是否存在与所述用户当前持有麻将组合相匹配的有效麻将胡牌组合;

胡牌判定模块430,用于若在本地麻将胡牌表中检索到与所述用户当前持有麻将组合相匹配的有效麻将胡牌组合,确定所述用户当前持有麻将组合为有效麻将胡牌组合。

上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

通过上述对本发明实施例提供的技术方案的描述,通过生成适用于不同麻将胡牌规则的麻将胡牌表,且通过在本地麻将胡牌表中检索是否存在与用户当前持有麻将组合相匹配的有效麻将胡牌组合,若在本地麻将胡牌表中检索到与用户当前持有麻将组合相匹配的有效麻将胡牌组合,确定用户当前持有麻将组合为有效麻将胡牌组合。如此对于支持带混子或者癞子玩法的虚拟麻将游戏而言,通过检索麻将胡牌表的形式来判断用户当前持有麻将组合是否为有效麻将胡牌组合,其计算量较小,判定一次耗时较短、消耗较少的cpu资源,胡牌判断算法逻辑变得简单,不易出现bug。

专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1