掌桥专利:专业的专利平台
掌桥专利
首页

游戏控制方法、装置、服务器及存储介质

文献发布时间:2023-06-19 11:44:10


游戏控制方法、装置、服务器及存储介质

技术领域

本公开涉及数据处理技术,尤其涉及一种游戏控制方法、装置、服务器、存储介质及计算机程序产品。

背景技术

随着网络技术的发展,出现了基于网络技术实现如桥牌、麻将等的棋牌类游戏,通过服务器与终端的数据交互实现了各个玩家在线进行棋牌类游戏,玩家通过终端与服务器交互进行在线游戏,并由服务器控制游戏的进程。例如,对于麻将该棋牌类游戏,由服务器控制发牌、胜负判定等的操作。

然而,现有的棋牌类游戏的胜负判定方式,经常涉及到多种花色、牌值的组合,导致胜负判定方式繁琐,需要消耗大量的内存和处理器资源。

因此,现有的棋牌类游戏胜负判定方式存在着计算资源消耗较大的问题。

发明内容

本公开提供一种游戏控制方法、装置、服务器、存储介质及计算机程序产品,以至少解决相关技术中现有的胜负判定方式存在着计算资源消耗较大的问题。本公开的技术方案如下:

根据本公开实施例的第一方面,提供一种游戏控制方法,包括:

获取手牌牌型;所述手牌牌型由多个手牌组成;所述手牌具有牌值;

根据所述手牌牌型中各个所述手牌的牌值,生成所述手牌牌型的牌型数组;所述牌型数组包括数组元素;所述数组元素具有牌值索引和元素数值;所述牌值索引与所述牌值具有对应关系;所述元素数值根据目标手牌的数量生成;所述目标手牌的牌值与所述数组元素的牌值索引所对应的牌值匹配;

在所述牌型数组中,确定所述牌值索引关联的第一数组元素和第二数组元素,并根据所述第一数组元素的元素数值和所述第二数组元素的元素数值,将所述第一数组元素的元素数值转换为二进制特征值,直至遍历所述牌型数组中各个所述数组元素的二进制特征值;

根据各个所述数组元素的二进制特征值,得到手牌牌型特征值;

将所述手牌牌型特征值与预置的获胜特征值字典中各个获胜牌型特征值进行匹配,当存在有与所述手牌牌型特征值匹配的获胜牌型特征值时,生成获胜提示信息。

根据一示例性实施例,所述根据各个所述数组元素的二进制特征值,得到手牌牌型特征值,包括:

按照所述数组元素的牌值索引,组合各个所述数组元素的二进制特征值,得到特征值组合值;

将所述特征值组合值转换为十六进制特征值,作为所述手牌牌型特征值。

根据一示例性实施例,所述二进制特征值至少包括顺子特征值和非顺子特征值,所述根据所述第一数组元素的元素数值和所述第二数组元素的元素数值,将所述第一数组元素的元素数值转换为二进制特征值,包括:

当所述第一数组元素的元素数值不为零、且所述第二数组元素的元素数值为零时,将所述第一数组元素的元素数值转换为所述非顺子特征值;

当所述第一数组元素的元素数值不为零、且所述第二数组元素的元素数值也不为零时,将所述第一数组元素的元素数值转换为所述顺子特征值。

根据一示例性实施例,所述根据所述手牌牌型中各个所述手牌的牌值,生成所述手牌牌型的牌型数组,包括:

在所述牌型数组的数组元素中,确定目标元素;

确定目标牌值索引;所述目标牌值索引为所述目标元素的牌值索引;

在所述手牌牌型中,查找所述牌值与所述目标牌值索引对应的牌值匹配的手牌,作为所述目标手牌;

统计所述目标手牌的数量,作为所述目标元素的元素数值。

根据一示例性实施例,所述获取手牌牌型之前,还包括:

获取获胜牌型;所述获胜牌型由多个所述手牌组成;

根据所述获胜牌型中各个所述手牌的牌值,生成所述获胜牌型的获胜牌型数组;

在所述获胜牌型数组中,确定所述牌值索引关联的第三数组元素和第四数组元素,并根据所述第三数组元素的元素数值和所述第四数组元素的元素数值,将所述第三数组元素的元素数值转换为二进制特征值,直至遍历所述获胜牌型数组中各个所述数组元素的二进制特征值;

根据所述获胜牌型数组中各个所述数组元素的二进制特征值,得到所述获胜牌型特征值;

生成所述获胜特征值字典;所述获胜特征值字典包括所述获胜牌型特征值。

根据本公开实施例的第二方面,提供一种游戏控制装置,包括:

牌型获取单元,被配置为执行获取手牌牌型;所述手牌牌型由多个手牌组成;所述手牌具有牌值;

数组生成单元,被配置为执行根据所述手牌牌型中各个所述手牌的牌值,生成所述手牌牌型的牌型数组;所述牌型数组包括数组元素;所述数组元素具有牌值索引和元素数值;所述牌值索引与所述牌值具有对应关系;所述元素数值根据目标手牌的数量生成;所述目标手牌的牌值与所述数组元素的牌值索引所对应的牌值匹配;

二进制转换单元,被配置为执行在所述牌型数组中,确定所述牌值索引关联的第一数组元素和第二数组元素,并根据所述第一数组元素的元素数值和所述第二数组元素的元素数值,将所述第一数组元素的元素数值转换为二进制特征值,直至遍历所述牌型数组中各个所述数组元素的二进制特征值;

特征值生成单元,被配置为执行根据各个所述数组元素的二进制特征值,得到手牌牌型特征值;

获胜提示单元,被配置为执行将所述手牌牌型特征值与预置的获胜特征值字典中各个获胜牌型特征值进行匹配,当存在有与所述手牌牌型特征值匹配的获胜牌型特征值时,生成获胜提示信息。

根据一示例性实施例,特征值生成单元,被配置为执行:

按照所述数组元素的牌值索引,组合各个所述数组元素的二进制特征值,得到特征值组合值;

将所述特征值组合值转换为十六进制特征值,作为所述手牌牌型特征值。

根据一示例性实施例,所述二进制特征值至少包括顺子特征值和非顺子特征值,二进制转换单元,被配置为执行:

当所述第一数组元素的元素数值不为零、且所述第二数组元素的元素数值为零时,将所述第一数组元素的元素数值转换为所述非顺子特征值;

当所述第一数组元素的元素数值不为零、且所述第二数组元素的元素数值也不为零时,将所述第一数组元素的元素数值转换为所述顺子特征值。

根据一示例性实施例,数组生成单元,被配置为执行:

在所述牌型数组的数组元素中,确定目标元素;

确定目标牌值索引;所述目标牌值索引为所述目标元素的牌值索引;

在所述手牌牌型中,查找所述牌值与所述目标牌值索引对应的牌值匹配的手牌,作为所述目标手牌;

统计所述目标手牌的数量,作为所述目标元素的元素数值。

根据一示例性实施例,所述装置还被配置为执行:

获取获胜牌型;所述获胜牌型由多个所述手牌组成;

根据所述获胜牌型中各个所述手牌的牌值,生成所述获胜牌型的获胜牌型数组;

在所述获胜牌型数组中,确定所述牌值索引关联的第三数组元素和第四数组元素,并根据所述第三数组元素的元素数值和所述第四数组元素的元素数值,将所述第三数组元素的元素数值转换为二进制特征值,直至遍历所述获胜牌型数组中各个所述数组元素的二进制特征值;

根据所述获胜牌型数组中各个所述数组元素的二进制特征值,得到所述获胜牌型特征值;

生成所述获胜特征值字典;所述获胜特征值字典包括所述获胜牌型特征值。

根据本公开实施例的第三方面,提供一种服务器,包括:

处理器;

用于存储所述处理器可执行指令的存储器;

其中,所述处理器被配置为执行所述指令,以实现如上述第一方面所述的游戏控制方法。

根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由服务器的处理器执行时,使得所述服务器能够实现如上述第一方面所述的游戏控制方法。

根据本公开实施例的第五方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述第一方面所述的游戏控制方法。

本公开的实施例提供的技术方案至少带来以下有益效果:

上述的游戏控制方法中,首先根据用户的手牌牌型中各个手牌的牌值,生成包含有具有牌值索引和元素数值等属性的牌型数组,然后,利用牌值索引存在关联关系的第一数组元素和第二数组元素,将第一数组元素转换为二进制特征值,直至得到各个数组元素的二进制特征值,最后根据该二进制特征值得到手牌牌型特征值,将手牌牌型特征值与获胜特征值字典中各个获胜牌型特征值进行匹配,在匹配时生成获胜提示信息,从而,在进行棋牌类游戏的胜负判定时,无须采用繁琐的胜负判定方式,而是通过手牌牌型特征值与获胜牌型特征值的单次匹配即可以判定是否获胜,减少了胜负判定的运算量,而且,由于牌值索引和牌值具有对应关系,而元素数值则记录了与牌值索引所对应的牌值的手牌的数量,由此,通过数据结构较为简单的一维数组即可记录完整的手牌牌型,然后再通过预设转换规则将数组元素转换为二进制特征值,一方面,将数据量较大的记录完整手牌牌型的相关信息的牌型数组,简化为只记录有影响胜负判定结果的关键信息的二进制特征值,另一方面,采用二进制特征值进行匹配处理,可以减少对计算机的内存资源和处理器资源的占用。因此,在保证胜负判定的准确性的前提下,减少了胜负判定处理对内存资源和处理器资源的消耗。

而且,在大量用户进行在线棋牌类游戏的场景下,提升了服务器控制胜负判定的效率,无须用户长时间等待服务器的胜负判定处理。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。

图1是根据一示例性实施例示出的一种游戏控制方法的应用环境图。

图2是根据一示例性实施例示出的一种游戏控制方法的流程图。

图3是根据一示例性实施例示出的一种手牌牌型特征值的转换步骤的流程图。

图4是根据一示例性实施例示出的一种游戏控制装置的框图。

图5是根据一示例性实施例示出的一种获胜判定流程图。

图6是根据一示例性实施例示出的一种服务器的框图。

具体实施方式

为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。

需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

本公开所提供的游戏控制方法,可以应用于如图1所示的应用环境中。其中,终端110通过网络与服务器120进行交互。其中,终端110可以是但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。游戏用户通过终端110向服务器120提交游戏操作,例如,摸牌操作、获胜确认操作等。服务器120根据终端110的游戏操作控制游戏进程,例如,控制发牌并将所发的手牌信息下发至终端110、控制生成获胜提示信息并下发至终端110等。

图2是根据一示例性实施例示出的一种游戏控制方法的流程图,如图2所示,游戏控制方法用于服务器120中,包括以下步骤。

在步骤S210中,获取手牌牌型;所述手牌牌型由多个手牌组成;所述手牌具有牌值。

其中,手牌牌型可以为游戏用户在棋牌类游戏中当前所持有手牌的集合。例如,对于麻将游戏,某个手牌牌型为[一万,二万,三万,四万,四万,四万,七万,七万,一筒,二筒,三筒,四筒,五筒,六筒]。又例如,对于桥牌游戏,某个手牌牌型为[黑桃1,黑桃2,方块4,方块5,红桃J]。

其中,牌值可以为手牌所属的花色及其数值。例如,对于麻将游戏,手牌七万的牌值,为“万”花色以及数值“7”。又例如,对于桥牌游戏,手牌黑桃K的牌值,为“黑桃”花色以及数值“13”。

具体地,服务器120可以进行发牌操作,使得每个用户得到多张手牌,形成一个手牌牌型。

在步骤S220中,根据所述手牌牌型中各个所述手牌的牌值,生成所述手牌牌型的牌型数组;所述牌型数组包括数组元素;所述数组元素具有牌值索引和元素数值;所述牌值索引与所述牌值具有对应关系;所述元素数值根据目标手牌的数量生成;所述目标手牌的牌值与所述数组元素的牌值索引所对应的牌值匹配。

其中,牌型数组可以为由数组元素组成的一维数组。每个数组元素具有牌值索引和元素数值的属性。

其中,牌值索引可以为数组元素在牌型数组中的排序,每个牌值索引代表相应的牌值。例如,对于麻将游戏,牌型数组中排序第一的数组元素的牌值索引为“0”,代表牌值“一万”,牌型数组中排序第二的数组元素的牌值索引为“1”,代表牌值“二万”,如此类推。实际应用中,牌值索引“0”至“8”可以用于代表麻将花色“万”的各个牌值,牌值索引“9”至“17”可以用于代表麻将花色“筒”的各个牌值,牌值索引“18”至“26”可以用于代表麻将花色“条”的各个牌值。

其中,元素数值可以用于代表手牌牌型中牌值与牌值索引对应的牌值匹配的手牌的数量。例如,对于牌值索引为“1”的数组元素,该数组元素代表牌值“一万”,手牌牌型中有3个牌值为“一万”的手牌,因此,该数组元素的元素数值为3。

具体地,服务器120得到手牌牌型后,可以根据手牌牌型中的各个手牌的牌值,将手牌牌型转换为相应的牌型数组。

例如,某个手牌牌型为[一万,二万,三万,四万,四万,四万,七万,七万,一筒,二筒,三筒,四筒,五筒,六筒],则可以转换为一维的牌型数组[1,1,1,3,0,0,2,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],该牌型数组代表当前的手牌牌型中,牌值“一万”的手牌有1个,牌值“二万”的手牌有1个,牌值“三万”的手牌有1个,牌值“四万”的手牌有3个,如此类推。

在步骤S230中,在所述牌型数组中,确定所述牌值索引关联的第一数组元素和第二数组元素,并根据所述第一数组元素的元素数值和所述第二数组元素的元素数值,将所述第一数组元素的元素数值转换为二进制特征值,直至遍历所述牌型数组中各个所述数组元素的二进制特征值。

其中,二进制特征值可以为用二进制的“0”、“1”所表示的数值,例如,01,01111等。

具体地,服务器120可以遍历牌型数组中的各个数组元素,将各个数组元素按照预设的转换规则,逐一转换为二进制的数值,作为上述的二进制特征值。

该转换规则可以设定为:对于牌值索引所对应的牌值属于同一花色的数组元素,依据数组元素以及与其在牌值索引上关联的下一数组元素各自的元素数值,将数组元素转换为特定的二进制特征值。

在实际应用中,在牌值索引上关联,可以是指另一数组元素为牌值索引排序于当前的数组元素的牌值索引的数组元素,例如,第一数组元素的牌值索引为“5”,第二数组元素的牌值索引为“6”,第二数组元素的牌值索引与第一数组元素的牌值索引关联。服务器120在遍历牌型数组中的各个数组元素时,假设当前确定了牌值索引为“5”的第一数组元素,服务器120可以相应地确定与其关联的牌值索引为“6”的数组元素为第二数组元素。

服务器120在确定牌值索引关联的第一数组元素和第二数组元素后,根据第一数组元素的元素数值和第二数组元素的元素数值,将第一数组元素按照预设的转换规则,转换为二进制特征值。

更具体地,服务器120可以根据第一数组元素和第二数组元素各自的元素数值是否为零,将第一数组元素转换为不同的二进制特征值。例如,当第一数组元素不为零,且第二数组元素也不为零,可以将第一数组元素转换为一种二进制特征值,用于记录第一数组元素和第二数组元素之间构成顺子,当第一数组元素不为零,而第二数组元素为零,则可以将第一数组元素转换为另一种二进制特征值,用于表示第一数组元素和第二数组元素之间不构成顺子。

例如,如果第一数组元素的元素数值为1,第二数组元素的元素数值为2,则可以将第一数组元素转换为“0”;如果第一数组元素的元素数值为1,第二数组元素的元素数值为0,则可以将第一数组元素转换为“01”。

通过上述步骤将各个数组元素转换为二进制特征值,一方面,由于每个转换得到的二进制特征值,是依据牌值索引关联的两个数组元素的元素数值所生成,而牌值索引关联的两个数组元素的元素数值可以反映出手牌之间是否构成顺子关系,因此,该二进制特征值可以反映出牌型中存在顺子关系的手牌。例如,牌值索引分别对应牌值“一万”和“二万”的两个数组元素,其元素数值均为1,即牌值为“一万”和“二万”的手牌各一张,相应地,牌值索引对应“一万”的数组元素转换为二进制特征值0,然后,牌值索引分别对应牌值“二万”和“三万”的两个数组元素,其元素数值也均为1,相应地,牌值索引对应“二万”的数组元素转换为二进制特征值0。也即是说,用两个二进制特征值“0”和“0”即可以反映出手牌牌型中存在“一万”、“二万”、“三万”的顺子关系。反之,如果牌值索引对应牌值“三万”的数组元素其元素数值为0,牌值索引对应“二万”的数组元素转换为二进制特征值01,由此,用两个二进制特征值“0”和“01”即可以反映出手牌中只有“一万”、“二万”该非顺子手牌。由此可见,通过上述方式将数组元素转换为二进制特征值,使得牌值中属于不同花色的顺子手牌的相关信息省略,只保留有记录是否符合获胜条件的关键信息,从而将数据量较大的记录完整手牌牌型的相关信息的数组,简化为只记录影响胜负判定结果的关键信息的二进制特征值,在后续的将获胜牌型特征值与手牌牌型特征值进行匹配的过程中,可以占用较少的内存资源和处理器资源。

另一方面,相比起十进制的特征值之间的匹配,计算机对二进制的特征值进行匹配处理,可以占用较少的内存资源和处理器资源。

因此,通过将数组元素按照预设的转换规则转换为二进制特征值,在保证准确地进行胜负判定的同时,减少了对内存资源和处理器资源的消耗。

服务器120遍历牌型数组的各个数组元素,直至将牌型数组中各个数组元素均转换为二进制特征值。

在步骤S240中,根据各个所述数组元素的二进制特征值,得到手牌牌型特征值。

其中,手牌牌型特征值可以为用于表示手牌牌型的特征的数值。实际应用中,可以采用key值(一种用于代表数据特征的关键值)作为上述的手牌牌型特征值。

具体地,服务器120可以将各个数组元素的二进制特征值按照数组元素的牌值索引进行拼接,作为上述的手牌牌型特征值。服务器120还可以将各个数组元素的二进制特征值按照数组元素的牌值索引进行拼接,将拼接后的数值进行八进制或十六进制的转换,将转换后得到的数值作为上述的手牌牌型特征值。

在步骤S250中,将所述手牌牌型特征值与预置的获胜特征值字典中各个获胜牌型特征值进行匹配,当存在有与所述手牌牌型特征值匹配的获胜牌型特征值时,生成获胜提示信息。

其中,获胜牌型特征值可以为根据满足获胜判定条件的手牌牌型所计算出的手牌牌型特征值。

其中,获胜提示信息可以为提示用户当前的手牌牌型符合获胜判定条件的信息。

具体地,服务器120可以预先遍历符合获胜条件的各种手牌牌型,为了区分说明,符合获胜判定条件的手牌牌型命名为获胜牌型。然后,通过上述所示出的方式,计算各个获胜牌型的获胜牌型特征值,并利用map(一种基于映射关系构建的数据结构)生成记录各个获胜牌型特征值的获胜特征值字典。

服务器120可以将针对用户当前的手牌牌型计算得到的手牌牌型特征值与获胜特征值字典中各个获胜牌型特征值进行比较,当匹配时则可以判定当前的手牌牌型符合获胜判定条件,此时服务器120可以生成获胜提示信息并下发至终端110,由终端110向用户显示,以提示用户选择是否执行获胜确认操作。

需要说明的是,上述实施例以麻将游戏的胜负判定为例说明各个具体步骤,但本领域技术人员可以将上述实施例所提供的方案应用于包括桥牌在内的各种棋牌类游戏,例如,对于桥牌游戏,某个手牌牌型为[黑桃1,黑桃2,方块4,方块5,红桃J],同样地,可以根据手牌牌型生成牌型数组,并基于牌型数组进行后续的胜负判定步骤,在此不再赘述。

上述的游戏控制方法中,首先根据用户的手牌牌型中各个手牌的牌值,生成包含有具有牌值索引和元素数值等属性的牌型数组,然后,利用牌值索引存在关联关系的第一数组元素和第二数组元素,将第一数组元素转换为二进制特征值,直至得到各个数组元素的二进制特征值,最后根据该二进制特征值得到手牌牌型特征值,将手牌牌型特征值与获胜特征值字典中各个获胜牌型特征值进行匹配,在匹配时生成获胜提示信息,从而,在进行棋牌类游戏的胜负判定时,无须采用繁琐的胜负判定方式,而是通过手牌牌型特征值与获胜牌型特征值的单次匹配即可以判定是否获胜,减少了胜负判定的运算量,而且,由于牌值索引和牌值具有对应关系,而元素数值则记录了与牌值索引所对应的牌值的手牌的数量,由此,通过数据结构较为简单的一维数组即可记录完整的手牌牌型,然后再通过预设转换规则将数组元素转换为二进制特征值,一方面,将数据量较大的记录完整手牌牌型的相关信息的牌型数组,简化为只记录有影响胜负判定结果的关键信息的二进制特征值,另一方面,采用二进制特征值进行匹配处理,可以减少对计算机的内存资源和处理器资源的占用。因此,在保证胜负判定的准确性的前提下,减少了胜负判定处理对内存资源和处理器资源的消耗。

而且,在大量用户进行在线棋牌类游戏的场景下,提升了服务器控制胜负判定的效率,无须用户长时间等待服务器的胜负判定处理。

进一步地,当上述的游戏控制方法应用于内存资源和处理器资源相对受到限制的移动端时,有效降低胜负判定处理对移动端的资源消耗,解决了移动端由于资源不足而需要耗费大量时间进行胜负判定的问题。

在一示例性实施例中,如图3所示,在步骤S240中,手牌牌型特征值的转换具体可以通过以下步骤实现:

在步骤S241中,按照所述数组元素的牌值索引,组合各个所述数组元素的二进制特征值,得到特征值组合值。

在步骤S242中,将所述特征值组合值转换为十六进制特征值,作为所述手牌牌型特征值。

具体地,服务器120在将各个数组元素转换为二进制特征值之后,可以按照数组元素的牌值索引的升序,将各个数组元素转换得到的二进制特征值组合为特征值组合值。

例如,第一数组元素、第二数组元素、第三数组元素的牌值索引分别为“1”、“2”、“3”,转换得到的二进制特征值分别为“01”、“0111”、“0”,按照牌值索引“1”、“2”、“3”的升序组合各个二进制特征值,得到特征值组合值“0101110”。

然后,服务器120将特征值组合值转换为十六进制的数值,即上述的十六进制特征值,将该十六进制特征值作为手牌牌型的手牌牌型特征值。

上述的游戏控制方法中,通过将各个数组元素的二进制特征值按序组合为十六进制特征值作为手牌牌型特征值,由于十六进制的数值占用的内存资源更少,因此,在保证胜负判定的准确性的前提下,可以进一步减少胜负判定处理对内存资源的消耗。

在一示例性实施例中,步骤S230中的根据所述第一数组元素的元素数值和所述第二数组元素的元素数值,将所述第一数组元素的元素数值转换为二进制特征值,具体可以通过以下步骤实现:

步骤S231,当所述第一数组元素的元素数值不为零、且所述第二数组元素的元素数值为零时,将所述第一数组元素的元素数值转换为所述非顺子特征值;

步骤S232,当所述第一数组元素的元素数值不为零、且所述第二数组元素的元素数值也不为零时,将所述第一数组元素的元素数值转换为所述顺子特征值。

其中,顺子特征值可以为用于记录构成顺子关系的二进制特征值,非顺子特征值可以为用于记录不构成顺子关系的二进制特征值。例如,顺子特征值可以为“011”,非顺子特征值可以为“0111”。

具体地,服务器120可以遍历各个数组元素,在遍历至第一数组元素时,首先判断该第一数组元素的元素数值是否为0,如果第一数组元素的元素数值为0(即,手牌牌型中不存在与第一数组元素的牌值索引对应的牌值的手牌),则跳过而无须进行转换。

如果第一数组元素的元素数值不为0,则进一步确定牌值索引与其关联的第二数组元素,然后获取第二数组元素的元素数值,判断第二数组元素的元素数值是否为0。如果第二数组元素的元素数值为0,则将第一数组元素的元素数值转换为非顺子特征值。如果第二数组元素的元素数值不为0,则将第一数组元素的元素数值转换为顺子特征值。

例如,第一数组元素的元素数值为1,而第二数组元素的元素数值为0,则将第一数组元素转换为非顺子特征值“01”;如果第二数组元素的元素数值为2,则将第一数组元素转换为顺子特征值“0”。

实际应用中,还可以进一步地根据第一数组元素的元素数值的具体数值,将第一数组元素的元素数值转换为不同的非顺子特征值或顺子特征值。

以下为一个示例性的二进制特征值的转换规则:

当第一数组元素的元素数值为“1”,第二数组元素的元素数值为“0”,则将第一数组元素的元素数值“1”转换为“01”;

当第一数组元素的元素数值为“1”,第二数组元素的元素数值不为“0”,则将第一数组元素的元素数值“1”转换为“0”;

当第一数组元素的元素数值为“2”,第二数组元素的元素数值为“0”,则将第一数组元素的元素数值“2”转换为“0111”;

当第一数组元素的元素数值为“2”,第二数组元素的元素数值不为“0”,则将第一数组元素的元素数值“2”转换为“011”;

当第一数组元素的元素数值为“3”,第二数组元素的元素数值为“0”,则将第一数组元素的元素数值“3”转换为“011111”;

当第一数组元素的元素数值为“3”,第二数组元素的元素数值不为“0”,则将第一数组元素的元素数值“3”转换为“01111”;

当第一数组元素的元素数值为“4”,第二数组元素的元素数值为“0”,则将第一数组元素的元素数值“3”转换为“01111111”;

当第一数组元素的元素数值为“4”,第二数组元素的元素数值不为“0”,则将第一数组元素的元素数值“3”转换为“0111111”。

需要说明的是,同一牌值的手牌最多为4个,因此元素数值的范围为[0-4]。

需要进一步说明的是,在实际应用中,本领域技术人员可以根据实际需要设定不同的二进制特征值用于区分表示顺子特征值和非顺子特征值。例如,非顺子特征值可以为“001”,顺子特征值可以为“0011”,本实施例对非顺子特征值和顺子特征值的具体数值不作限制。

需要说明的是,上述的转换规则适用于为花色“万”“筒”“条”的非风牌(即牌值索引为0至26的数值元素),对于东南西北等风牌(即牌值索引为27至33的数值元素),由于风牌之间不存在顺子关系,则可以直接根据第一数组元素的元素数值转换为相应的二进制特征值,而无须通过上述转换规则进行转换。例如,如果牌值索引27(对应于牌值“东”)的数组元素的元素数值为1,则转换为二进制特征值“01”,元素数值为2,则转换为“0111”,如此类推。

上述的游戏控制方法中,通过根据第二数组元素是否为零的判断结果相应将第一数组元素转换为非顺子特征值或顺子特征值,从而通过少量的信息即可以区分记录手牌是否构成顺子关系,简化了影响胜负判定结果的相关数据的数据结构,从而在消耗较少内存资源和处理器资源的情况下即可以完成胜负判定处理。

在一示例性实施例中,步骤S220可以具体通过以下步骤实现。

在步骤S221中,在所述牌型数组的数组元素中,确定目标元素;

在步骤S222中,确定目标牌值索引;所述目标牌值索引为所述目标元素的牌值索引;

在步骤S223中,在所述手牌牌型中,查找所述牌值与所述目标牌值索引对应的牌值匹配的手牌,作为所述目标手牌;

在步骤S224中,统计所述目标手牌的数量,作为所述目标元素的元素数值。

具体地,服务器120可以首先确定目标元素,然后根据该目标元素的目标牌值索引,在手牌牌型的各个手牌中,查找牌值与目标牌值索引对应的牌值相匹配的手牌,作为上述的目标手牌。最后统计手牌牌型中的目标手牌的数量,根据该数量对数组元素进行赋值,得到该数组元素的元素数值。

上述的游戏控制方法中,通过根据数组元素的牌值索引所对应的牌值,在手牌牌型中查找出牌值匹配的手牌并统计其数量,从而通过简单的运算处理即可以得到数组元素的元素数值,减少了胜负判定处理所耗费的时间,提升了胜负判定处理的效率。

在一示例性实施例中,在步骤S210之前,可以还包括以下步骤。

获取获胜牌型;所述获胜牌型由多个所述手牌组成;根据所述获胜牌型中各个所述手牌的牌值,生成所述获胜牌型的获胜牌型数组;在所述获胜牌型数组中,确定所述牌值索引关联的第三数组元素和第四数组元素,并根据所述第三数组元素的元素数值和所述第四数组元素的元素数值,将所述第三数组元素的元素数值转换为二进制特征值,直至遍历所述获胜牌型数组中各个所述数组元素的二进制特征值;根据所述获胜牌型数组中各个所述数组元素的二进制特征值,得到所述获胜牌型特征值;生成所述获胜特征值字典;所述获胜特征值字典包括所述获胜牌型特征值。

具体地,服务器120可以预先生成代表符合获胜条件的获胜牌型的获胜牌型特征值,并根据获胜牌型特征值生成获胜特征值字典。由于获胜牌型特征值的处理过程与上述实施例的手牌牌型特征值的处理过程基本相同,在此不再赘述。

上述的游戏控制方法中,采用获胜特征值字典中的获胜牌型特征值进行获胜判定的依据,通过数据结构较为简单的一维数组即可记录完整的获胜牌型,然后再通过预设转换规则将数组元素转换为二进制特征值,一方面,将数据量较大的记录完整获胜牌型的相关信息的牌型数组,简化为只记录有影响获胜判定结果的关键信息的二进制特征值,另一方面,采用二进制特征值进行匹配处理,可以减少对计算机的内存资源占用,因此,在加载获胜特征值字典时,可以有效减少对内存资源的消耗。

应该理解的是,虽然图2至3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2至3中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或其它步骤中的步骤或者阶段至少一部分轮流或者交替地执行。

图4是根据一示例性实施例示出的一种游戏控制装置框图。参照图4,该装置包括以下单元。

牌型获取单元402,被配置为执行获取手牌牌型;所述手牌牌型由多个手牌组成;所述手牌具有牌值;

数组生成单元404,被配置为执行根据所述手牌牌型中各个所述手牌的牌值,生成所述手牌牌型的牌型数组;所述牌型数组包括数组元素;所述数组元素具有牌值索引和元素数值;所述牌值索引与所述牌值具有对应关系;所述元素数值根据目标手牌的数量生成;所述目标手牌的牌值与所述数组元素的牌值索引所对应的牌值匹配;

二进制转换单元406,被配置为执行在所述牌型数组中,确定所述牌值索引关联的第一数组元素和第二数组元素,并根据所述第一数组元素的元素数值和所述第二数组元素的元素数值,将所述第一数组元素的元素数值转换为二进制特征值,直至遍历所述牌型数组中各个所述数组元素的二进制特征值;

特征值生成单元408,被配置为执行根据各个所述数组元素的二进制特征值,得到手牌牌型特征值;

获胜提示单元410,被配置为执行将所述手牌牌型特征值与预置的获胜特征值字典中各个获胜牌型特征值进行匹配,当存在有与所述手牌牌型特征值匹配的获胜牌型特征值时,生成获胜提示信息。

在一示例性实施例中,特征值生成单元408,被配置为执行:

按照所述数组元素的牌值索引,组合各个所述数组元素的二进制特征值,得到特征值组合值;

将所述特征值组合值转换为十六进制特征值,作为所述手牌牌型特征值。

在一示例性实施例中,所述二进制特征值至少包括顺子特征值和非顺子特征值,二进制转换单元406,被配置为执行:

当所述第一数组元素的元素数值不为零、且所述第二数组元素的元素数值为零时,将所述第一数组元素的元素数值转换为所述非顺子特征值;

当所述第一数组元素的元素数值不为零、且所述第二数组元素的元素数值也不为零时,将所述第一数组元素的元素数值转换为所述顺子特征值。

在一示例性实施例中,数组生成单元404,被配置为执行:

在所述牌型数组的数组元素中,确定目标元素;

确定目标牌值索引;所述目标牌值索引为所述目标元素的牌值索引;

在所述手牌牌型中,查找所述牌值与所述目标牌值索引对应的牌值匹配的手牌,作为所述目标手牌;

统计所述目标手牌的数量,作为所述目标元素的元素数值。

在一示例性实施例中,所述装置还被配置为执行:

获取获胜牌型;所述获胜牌型由多个所述手牌组成;

根据所述获胜牌型中各个所述手牌的牌值,生成所述获胜牌型的获胜牌型数组;

在所述获胜牌型数组中,确定所述牌值索引关联的第三数组元素和第四数组元素,并根据所述第三数组元素的元素数值和所述第四数组元素的元素数值,将所述第三数组元素的元素数值转换为二进制特征值,直至遍历所述获胜牌型数组中各个所述数组元素的二进制特征值;

根据所述获胜牌型数组中各个所述数组元素的二进制特征值,得到所述获胜牌型特征值;

生成所述获胜特征值字典;所述获胜特征值字典包括所述获胜牌型特征值。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

图5是根据一示例性实施例示出的一种获胜判定流程图。参考图5,当用户通过终端110连接服务器120以参与游戏,服务器120可以加载基于map数据结构构建的获胜key字典,该获胜key字典包含多个key,该key由根据对符合获胜条件的手牌牌型通过上述实施例的方法所生成。游戏开始后,服务器120根据用户的手牌牌型中的手牌生成Key,然后,在获胜key字典中查找是否存在与Key匹配的key,如果不存在则判定当前的手牌牌型不符合获胜条件,如果存在,则判定满足获胜条件,并生成获胜提示反馈给用户。

图6是根据一示例性实施例示出的一种用于执行一种游戏控制方法的设备600的框图。例如,设备600可以为一服务器。参照图6,设备600包括处理组件620,其进一步包括一个或多个处理器,以及由存储器622所代表的存储器资源,用于存储可由处理组件620的执行的指令,例如应用程序。存储器622中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件620被配置为执行指令,以执行上述游戏控制方法。

设备600还可以包括一个电源组件624被配置为执行设备600的电源管理,一个有线或无线网络接口626被配置为将设备600连接到网络,和一个输入输出(I/O)接口628。设备600可以操作基于存储在存储器622的操作系统,例如Windows Server,Mac OS X,Unix,Linux,FreeBSD或类似。

在一示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器622,上述指令可由设备600的处理器执行以完成上述方法。存储介质可以是计算机可读存储介质,例如,所述计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。

在一示例性实施例中,还提供一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现上述的游戏控制方法。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

相关技术
  • 游戏系统、服务器、游戏系统控制方法、服务器控制方法,以及存储介质
  • 游戏终端、云服务器、云游戏控制方法和存储介质
技术分类

06120113029727