一种卡牌游戏中的文本绘制方法及装置与流程

文档序号:22797246发布日期:2020-11-04 03:51阅读:98来源:国知局
一种卡牌游戏中的文本绘制方法及装置与流程

本申请涉及计算机技术领域,尤其是涉及一种卡牌游戏中的文本绘制方法及装置。



背景技术:

随着科技与经济的快速发展,人们的精神需求逐渐提高,游戏已经成为了人们进行娱乐的热门选择。在游戏中,存在大量的文本,这些文本起到对游戏的说明作用,这些文本通常绘制在游戏中的文本框当中,对游戏起到至关重要的作用。在诸多类型的游戏中,卡牌游戏当中的文本量尤其多。在卡牌游戏当中,存在成百上千的卡牌,每张卡牌中都绘制有对应的解释文本。

目前,在卡牌上的文本通常通过人工的方式进行排版,再根据排版的结果进行绘制,由于每张卡牌的文本的内容及高度都不同,且卡牌的数量极多,会消耗极多的人力资源,且效率极低。



技术实现要素:

有鉴于此,本申请的目的在于提供一种卡牌游戏中的文本绘制方法及装置,能够实现文本的排版及绘制的自动化,提高文本绘制的效率。

本申请实施例提供了一种卡牌游戏中的文本绘制方法,包括:

获取待绘制卡牌的目标文本,并根据所述目标文本中的转义字符将所述目标文本转换为至少一个字符流;

根据字符分组规则,对所述字符流中的字符进行分组处理,其中,所述分组规则用于确定所述字符流中需要连续显示的字符;

根据所述分组处理的分组结果,以及所述待绘制卡牌中文本绘制区域的参数信息,对所述字符流进行排版处理,以得到在所述排版处理的排版结果;

根据所述排版结果,将所述字符流绘制在所述文本绘制区域中。

在一种可能的实施方式中,所述字符分组规则包括文字分组规则及符号分组规则;

所述根据字符分组规则,对所述字符流中的字符进行分组处理,包括:

按照所述文字分组规则,将所述字符流中的文字字符分组,得到至少一个文字字符组;

按照所述符号分组规则,将所述字符流中的符号字符分入与其对应的所述文字字符组中,得到所述分组结果。

在一种可能的实施方式中,所述根据所述分组处理的分组结果,以及所述待绘制卡牌中文本绘制区域的参数信息,对所述字符流进行排版处理,包括:

根据预设的排版参数、所述分组结果以及所述文本绘制区域的参数信息,在所述文本绘制区域中对所述字符流进行排版处理;

根据所述排版处理的排版结果,调整所述排版参数,并重复进行排版处理及调整所述排版参数的步骤,直到满足预设的截止条件。

在一种可能的实施方式中,所述排版参数包括如下至少一种:字体、字符的宽度及高度、字符的缩放值、行间距、段间距、初始行数。

在一种可能的实施方式中,所述根据预设的排版参数、所述分组结果以及所述文本绘制区域的参数信息,在所述文本绘制区域中对所述字符流进行排版处理,包括:

根据所述字符流的数量调整所述初始行数;

根据调整后的初始行数、所述文本绘制区域的参数信息、所述排版参数中的字符的高度、字符的缩放值、行间距以及段间距,确定所述文本绘制区域中的排版起始位置;

从所述排版起始位置起,按照所述预设的排版参数将所述字符流中的字符逐个添加至所述文本绘制区域中;当一行中的剩余位置不足以容纳下一组内的所有字符时进行换行;当一字符流中的字符全部添加完毕,且存在下一字符流时进行换段。

在一种可能的实施方式中,所述预设的截止条件包括如下至少一种:所述字符的缩放值小于或等于第一预设阈值,和实际行数小于或等于所述初始行数且不存在位于所述文本绘制区域之外的字符;其中,

所述根据所述排版处理的排版结果,调整所述排版参数,并重复进行排版处理及调整所述排版参数的步骤,直到满足预设的截止条件,包括如下至少一种:

若所述排版结果中,实际行数大于调整后的初始行数,则将所述初始行数加1,重新确定所述排版起始位置,并返回将所述字符添加至所述文本绘制区域中的步骤;

若所述排版结果中,存在位于所述文本绘制区域之外的字符,则以预设步长减小所述字符的缩放值,重新确定所述排版起始位置,并返回将所述字符添加至所述文本绘制区域中的步骤。

在一种可能的实施方式中,所述根据所述排版处理的排版结果,调整所述排版参数,并重复进行排版处理及调整所述排版参数的步骤,直到满足预设的截止条件,还包括:

若不存在位于所述文本绘制区域之外的字符,且实际行数小于或等于所述初始行数,则将当前的排版结果标记;

若所述字符的缩放值大于第二预设阈值,则在保证所述字符的缩放值大于所述第二预设阈值的前提下,以预设步长减小所述字符的缩放值,将所述实际行数作为所述初始行数,重新确定所述排版起始位置,并返回将所述字符添加至所述文本绘制区域中的步骤。

在一种可能的实施方式中,所述根据所述排版结果,将所述字符流绘制在所述文本绘制区域中,包括:

根据最新标记的所述排版结果,将所述字符流绘制在所述文本绘制区域中。

本申请实施例还提供了一种卡牌游戏中的文本绘制装置,包括:

转换模块,用于获取待绘制卡牌的目标文本,并根据所述目标文本中的转义字符将所述目标文本转换为至少一个字符流;

分组模块,用于根据字符分组规则,对所述字符流中的字符进行分组处理,其中,所述分组规则用于确定所述字符流中需要连续显示的字符;

排版模块,用于根据所述分组处理的分组结果,以及所述待绘制卡牌中文本绘制区域的参数信息,对所述字符流进行排版处理,以得到所述排版处理的排版结果;

绘制模块,用于根据所述排版结果,将所述字符流绘制在所述文本绘制区域中。

在一种可能的实施方式中,所述字符分组规则包括文字分组规则及符号分组规则;

所述分组模块具体用于:

按照所述文字分组规则,将所述字符流中的文字字符分组,得到至少一个文字字符组;

按照所述符号分组规则,将所述字符流中的符号字符分入与其对应的所述文字字符组中,得到所述分组结果。

在一种可能的实施方式中,所述排版模块包括:

预排版单元,用于根据预设的排版参数、所述分组结果以及所述文本绘制区域的参数信息,在所述文本绘制区域中对所述字符流进行排版处理;

循环排版单元,用于根据所述排版处理的排版结果,调整所述排版参数,并重复进行排版处理及调整所述排版参数的步骤,直到满足预设的截止条件。

在一种可能的实施方式中,所述排版参数包括如下至少一种:字体、字符的宽度及高度、字符的缩放值、行间距、段间距、初始行数。

在一种可能的实施方式中,所述预排版单元具体用于:

根据所述字符流的数量调整所述初始行数;

根据调整后的初始行数、所述文本绘制区域的参数信息、所述排版参数中的字符的高度、字符的缩放值、行间距以及段间距,确定所述文本绘制区域中的排版起始位置;

从所述排版起始位置起,按照所述预设的排版参数将所述字符流中的字符逐个添加至所述文本绘制区域中;

当一行中的剩余位置不足以容纳下一组内的所有字符时进行换行;当一字符流中的字符全部添加完毕,且存在下一字符流时进行换段。

在一种可能的实施方式中,所述预设的截止条件包括如下至少一种:所述字符的缩放值小于或等于第一预设阈值,和实际行数小于或等于所述初始行数且不存在位于所述文本绘制区域之外的字符;其中,

所述循环排版单元具体用于:

若所述排版结果中,实际行数大于调整后的初始行数,则将所述初始行数加1,重新确定所述排版起始位置,并返回将所述字符添加至所述文本绘制区域中的步骤;

若所述排版结果中,存在位于所述文本绘制区域之外的字符,则以预设步长减小所述字符的缩放值,重新确定所述排版起始位置,并返回将所述字符添加至所述文本绘制区域中的步骤。

在一种可能的实施方式中,所述循环排版单元还用于:

若不存在位于所述文本绘制区域之外的字符,且实际行数小于或等于所述初始行数,则将当前的排版结果标记;

若所述字符的缩放值大于第二预设阈值,则在保证所述字符的缩放值大于所述第二预设阈值的前提下,以预设步长减小所述字符的缩放值,将所述实际行数作为所述初始行数,重新确定所述排版起始位置,并返回将所述字符添加至所述文本绘制区域中的步骤。

在一种可能的实施方式中,所述绘制模块具体用于:

根据最新标记的所述排版结果,将所述字符流绘制在所述文本绘制区域中。

本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行以下步骤:

获取待绘制卡牌的目标文本,并根据所述目标文本中的转义字符将所述目标文本转换为至少一个字符流;

根据字符分组规则,对所述字符流中的字符进行分组处理,其中,所述分组规则用于确定所述字符流中需要连续显示的字符;

根据所述分组处理的分组结果,以及所述待绘制卡牌中文本绘制区域的参数信息,对所述字符流进行排版处理,以得到所述排版处理的排版结果;

根据所述排版结果,将所述字符流绘制在所述文本绘制区域中。

在一种可能的实施方式中,所述字符分组规则包括文字分组规则及符号分组规则;

在一种可能的实施方式中,所述处理器在执行根据字符分组规则,对所述字符流中的字符进行分组处理时,具体执行:

按照所述文字分组规则,将所述字符流中的文字字符分组,得到至少一个文字字符组;

按照所述符号分组规则,将所述字符流中的符号字符分入与其对应的所述文字字符组中,得到所述分组结果。

在一种可能的实施方式中,所述处理器在执行根据所述分组处理的分组结果,以及所述待绘制卡牌中文本绘制区域的参数信息,对所述字符流进行排版处理时,具体执行:

根据预设的排版参数、所述分组结果以及所述文本绘制区域的参数信息,在所述文本绘制区域中对所述字符流进行排版处理;

根据所述排版处理的排版结果,调整所述排版参数,并重复进行排版处理及调整所述排版参数的步骤,直到满足预设的截止条件。

在一种可能的实施方式中,所述排版参数包括如下至少一种:字体、字符的宽度及高度、字符的缩放值、行间距、段间距、初始行数。

在一种可能的实施方式中,所述处理器在执行述根据预设的排版参数、所述分组结果以及所述文本绘制区域的参数信息,在所述文本绘制区域中对所述字符流进行排版处理时,具体执行:

根据所述字符流的数量调整所述初始行数;

根据调整后的初始行数、所述文本绘制区域的参数信息、所述排版参数中的字符的高度、字符的缩放值、行间距以及段间距,确定所述文本绘制区域中的排版起始位置;

从所述排版起始位置起,按照所述预设的排版参数将所述字符流中的字符逐个添加至所述文本绘制区域中;

当一行中的剩余位置不足以容纳下一组内的所有字符时进行换行;当一字符流中的字符全部添加完毕,且存在下一字符流时进行换段。

在一种可能的实施方式中,所述预设的截止条件包括如下至少一种:所述字符的缩放值小于或等于第一预设阈值,和实际行数小于或等于所述初始行数且不存在位于所述文本绘制区域之外的字符;其中,

所述处理器在执行根据所述排版处理的排版结果,调整所述排版参数,并重复进行排版处理及调整所述排版参数的步骤,直到满足预设的截止条件时,具体执行:

若所述排版结果中,实际行数大于调整后的初始行数,则将所述初始行数加1,重新确定所述排版起始位置,并返回将所述字符添加至所述文本绘制区域中的步骤;

若所述排版结果中,存在位于所述文本绘制区域之外的字符,则以预设步长减小所述字符的缩放值,重新确定所述排版起始位置,并返回将所述字符添加至所述文本绘制区域中的步骤。

在一种可能的实施方式中,所述处理器在执行根据所述排版处理的排版结果,调整所述排版参数,并重复进行排版处理及调整所述排版参数的步骤,直到满足预设的截止条件时,还执行:

若不存在位于所述文本绘制区域之外的字符,且实际行数小于或等于所述初始行数,则将当前的排版结果标记;

若所述字符的缩放值大于第二预设阈值,则在保证所述字符的缩放值大于所述第二预设阈值的前提下,以预设步长减小所述字符的缩放值,将所述实际行数作为所述初始行数,重新确定所述排版起始位置,并返回将所述字符添加至所述文本绘制区域中的步骤。

在一种可能的实施方式中,所述处理器在执行根据所述排版结果,将所述字符流绘制在所述文本绘制区域中时,具体执行:

根据最新标记的所述排版结果,将所述字符流绘制在所述文本绘制区域中。

本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上述的卡牌游戏中的文本绘制方法的步骤。

本申请实施例提供的卡牌游戏中的文本绘制方法及装置,首先获取待绘制卡牌的目标文本,并根据所述目标文本中的转义字符将所述目标文本转换为至少一个字符流;然后,根据字符分组规则,对所述字符流中的字符进行分组处理;其次,根据所述分组处理的分组结果,以及所述待绘制卡牌中文本绘制区域的参数信息,对所述字符流进行排版处理;得到所述排版处理的排版结果;最后,根据所述排版结果,将所述字符流绘制在所述文本绘制区域中。本申请通过将文本对应的字符流中的字符进行分组,并根据分组结果及文本绘制区域的参数信息对字符流进行排版处理,能够实现文本的排版及绘制的自动化,提高卡牌文本绘制的效率。

为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本申请实施例所提供的一种卡牌游戏中的文本绘制方法的流程图;

图2示出了本申请实施例所提供的另一种卡牌游戏中的文本绘制方法的流程图;

图3示出了本申请实施例所提供的一种卡牌游戏中的文本绘制方法中文本绘制区域的示意图;

图4示出了本申请实施例所提供的一种卡牌游戏中的文本绘制方法中重复进行排版处理的流程图;

图5a示出了文本绘制区域为矩形时的卡牌的示意图;

图5b示出了文本绘制区域去掉攻击力及生命值显示区域后的卡牌的示意图;

图6示出了本申请实施例所提供的一种卡牌游戏中的文本绘制装置的结构示意图;

图7示出了本申请实施例所提供的另一种卡牌游戏中的文本绘制装置的结构示意图;

图8示出了本申请实施例所提供的一种电子设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的每个其他实施例,都属于本申请保护的范围。

首先,对本申请可适用的应用场景进行介绍。本申请可应用于卡牌游戏中的对虚拟卡牌的文本绘制。在本申请实施例中,针对卡牌游戏中的对虚拟卡牌的文本绘制的情况进行说明,但其仅为一个实施例,在不付出创造性劳动的情况下,还可以本申请应用到其他场景,并且都属于本申请的保护范围内。

经研究发现,在卡牌游戏中,存在大量的卡牌,不同的卡牌上绘制有不同的文本,这些文本的内容及高度都不同,卡牌中可以进行绘制的区域也不同,若按照传统的逐个字符进行的排版标准将其绘制进卡牌当中,有些连贯的字符可能会被排版至不同的行中,绘制出的文本可读性较差,因此需要通过人工处理的方式进行排版,而由于卡牌游戏中的卡牌的数量极多,人工排版及绘制的方式会消耗大量的人力资源,且容易出错,效率极低。

基于此,本申请实施例提供了一种卡牌游戏中的文本绘制方法,以实现文本排版及绘制的自动化,提高卡牌文本排版及绘制的效率。

请参阅图1,图1为本申请实施例所提供的一种卡牌游戏中的文本绘制方法的流程图。如图1中所示,本申请实施例提供的卡牌游戏中的文本绘制方法,包括:

s101、获取待绘制卡牌的目标文本,并根据所述目标文本中的转义字符将所述目标文本转换为至少一个字符流。

其中,目标文本可以是需要绘制在待绘制卡牌上的文本,可以由说明字符及转义字符组成,说明字符为对卡牌的属性及效果说明的文本,通常可以包括文字、数字、符号等;转义字符可以为对目标文本格式及插入内容进行限定的文本。转义字符可以是预先约定的一些文本处理规则,以#开头进行标识。

示例性的,目标文本可以为下述形式:

使一个#cffff0000己方式神#l得5#p(img_hujia)#r响应:当兵俑被攻击时,自动对自己使用该牌。

其中,#cffff000代表后续的文本需要用红色进行显示,#1代表红色显示截至,#p(img_hujia)代表显示img_hujia路径下的图片,#r代表手动换行。

该步骤中,可以扫描目标文本中的转义字符,当扫描到转义字符后,根据预先约定好的转义规则对目标文本中的字符进行处理,若扫描的文本中的字符不是转义字符,则将其作为独立的字符,若目标文本中有进行手动换行的转义字符,则将手动换行的转义字符后的字符进行拆分,分成前后两个字符流。

示例性的,上述目标文本的示例中可以转换为下述两个字符流:

字符流1:使一个己方式神得5*

字符流2:响应:当兵俑被攻击时,自动对自己使用该牌。

其中,“己方式神”字符的颜色为红色,“*”代表img_hujia路径下的图片。

s102、根据字符分组规则,对所述字符流中的字符进行分组处理,其中,所述分组规则用于确定所述字符流中需要连续显示的字符。

该步骤中,字符分组规则的作用是将字符流中需要同行显示的字符分至同一组中,以使在后续的排版步骤中,将需要同行显示的字符排版至同一行中,进而提升绘制好的卡牌文本的可读性。

在一种可能的实施方式中,所述字符分组规则可以包括文字分组规则及符号分组规则;

所述根据字符分组规则,对所述字符流中的字符进行分组处理,包括:

按照所述文字分组规则,将所述字符流中的文字字符分组,得到至少一个文字字符组;

按照所述符号分组规则,将所述字符流中的符号字符分入与其对应的所述文字字符组中,得到所述分组结果。

其中,文字分组规则用于对字符流中的文字进行分组,比如,可以将字符流中的中文文字单独分为一组,将字符流中的外文单词分为一组;符号分组规则用于对字符流中的符号进行分组,比如,将悬挂字符与该悬挂字符的前一字符分为一组,将不能结尾字符与该不能结尾字符的后一字符分为一组。

具体的,悬挂字符指可以挂靠在句子结尾的字符,如“.”、“。”、“,”、“,”、“、”、“;”、“;”、“:”、“:”、“\”、“'”、“””、“>”、“》”、“~”、“)”、“)”、“」”、“]”等;不能结尾字符指无法放在句子结尾的字符,如“〔”、“〈”、“《”、“〖”、“[”、“「”、“『”等。

s103、根据所述分组处理的分组结果,以及所述待绘制卡牌中文本绘制区域的参数信息,对所述字符流进行排版处理,以得到所述排版处理的排版结果。

该步骤中,可以根据文本绘制区域的参数信息,对字符流进行排版处理,将字符流中的字符添加至文本绘制区域内,并且将属于同一组的字符排至同一行中,以保证排版后文本的可读性,进而得到排版处理的排版结果。

其中,文本绘制区域的参数信息,可以包括文本绘制区域的位置以及文本绘制区域的大小等信息。

在一种可能的实施方式中,所述根据所述分组处理的分组结果,以及所述待绘制卡牌中文本绘制区域的参数信息,对所述字符流进行排版处理,包括:

根据预设的排版参数、所述分组结果以及所述文本绘制区域的参数信息,在所述文本绘制区域中对所述字符流进行排版处理;

根据所述排版处理的排版结果,调整所述排版参数,并重复进行排版处理及调整所述排版参数的步骤,直到满足预设的截止条件。

该步骤中,可以先按照预设的排版参数,对字符流进行排版处理,由于排版参数是预设的,无法满足多种多样的卡牌及其对应的目标文本,得到的排版结果的可读性较差,容易导致排版效果不协调、字符超出文本绘制区域等情况,因此,需要根据第一次的排版结果,进行排版参数的调整,并在此进行排版处理。再次进行排版处理后,得到的排版结果的效果可能仍然较差,可以进行多次排版参数的调整,并按照调整后的排版参数进行排版,直到排版结果满足预设的截止条件为止。

在一种可能的实施方式中,所述排版参数包括如下至少一种:字体、字符的宽度及高度、字符的缩放值、行间距、段间距、初始行数。

其中,字符的缩放值指排版时对字符进行缩放的比例;行间距指当一个字符流在排版过程中存在多行时,每个行之间的间距;段间距指两个不同的字符流在排版过程中的间距;初始行数可以设置为1。

在一种可能的实施方式中,所述根据预设的排版参数、所述分组结果以及所述文本绘制区域的参数信息,在所述文本绘制区域中对所述字符流进行排版处理,包括:

根据所述字符流的数量调整所述初始行数;

根据调整后的初始行数、所述文本绘制区域的参数信息、所述排版参数中的字符的高度、字符的缩放值、行间距以及段间距,确定所述文本绘制区域中的排版起始位置;

从所述排版起始位置起,按照所述预设的排版参数将所述字符流中的字符逐个添加至所述文本绘制区域中;

当一行中的剩余位置不足以容纳下一组内的所有字符时进行换行;当一字符流中的字符全部添加完毕,且存在下一字符流时进行换段。

该步骤中,可以先确定目标文本转换后的字符流的数量,并将初始行数的值设置为字符流的数量。比如,在上述字符流的示例当中,共包括两个字符流,则可以将初始行数调整为2。

在调整初始行数之后,可以根据初始行数、所述文本绘制区域的参数信息、所述排版参数中的字符的高度、字符的缩放值、行间距以及段间距,确定所述文本绘制区域中的排版起始位置。

具体的,为了卡牌的美观及可读性,可以尽量将目标文本绘制在文本绘制区域的中间位置,为了实现上述效果,可以先预估目标文本在文本绘制区域中的行数,再根据预估的行数确定排版起始位置,而初始行数即为预估的目标文本在文本绘制区域中的行数。

在调整初始行数之后,可以根据字符的高度、字符的缩放值、行间距、段间距以及文本绘制区域的高度,确定纵向的排版起始位置,再根据纵向的排版起始位置处文本绘制区域的宽度,确定横向的排版起始位置。

在确定排版起始位置之后,可以从排版起始位置,按照在目标文本中的顺序,逐个将字符添加至文本绘制区域内,在排版的过程中,若一行中最后一个字符所属的组中的所有字符未在同一行中,则将该组中的所有字符放入下一行中,当一个字符流中的字符全部排版完成,且还有其他的剩余字符流时,进行换段,从新的段落开始继续进行排版。

值得注意的是,文本绘制区域的形状可能是不规则的,比如,在法术卡牌中,文本绘制区域的形状可以为矩形,但在角色卡牌或仆从卡牌中,文本绘制区域则在法术卡牌的基础上,去掉了攻击力显示区域及生命值显示区域,变成了不规则的形状,因此,每次换行时,每行的横向起始位置需要根据该行文本绘制区域的宽度设置。

在一种可能的实施方式中,所述预设的截止条件包括如下至少一种:所述字符的缩放值小于或等于第一预设阈值,和实际行数小于或等于所述初始行数且不存在位于所述文本绘制区域之外的字符;其中,

所述根据所述排版处理的排版结果,调整所述排版参数,并重复进行排版处理及调整所述排版参数的步骤,直到满足预设的截止条件,包括如下至少一种:

若所述排版结果中,实际行数大于调整后的初始行数,则将所述初始行数加1,重新确定所述排版起始位置,并返回将所述字符添加至所述文本绘制区域中的步骤;和

若所述排版结果中,存在位于所述文本绘制区域之外的字符,则以预设步长减小所述字符的缩放值,重新确定所述排版起始位置,并返回将所述字符添加至所述文本绘制区域中的步骤。

其中,实际行数是排版处理后,目标文本所实际占用的行数,若实际行数大于初始行数,则说明整体上排版后的文本不在文本绘制区域的居中部位,需要重新确定排版起始位置,并再次进行排版。第一预设阈值可以设置为0。

若存在位于文本绘制区域之外的字符,则可以说明目标文本的文本量较大,文本绘制区域无法容纳所有的目标文本,则可以降低字符的缩放值,使文本的体积变小,进而使文本全部处于文本绘制区域之内。

在一种可能的实施方式中,所述根据所述排版处理的排版结果,调整所述排版参数,并重复进行排版处理及调整所述排版参数的步骤,直到满足预设的截止条件,还包括:

若不存在位于所述文本绘制区域之外的字符,且实际行数小于或等于所述初始行数,则将当前的排版结果标记;

若所述字符的缩放值大于第二预设阈值,则在保证所述字符的缩放值大于所述第二预设阈值的前提下,以预设步长减小所述字符的缩放值,将所述实际行数作为所述初始行数,重新确定所述排版起始位置,并返回将所述字符添加至所述文本绘制区域中的步骤。

该步骤中,若不存在位于所述文本绘制区域之外的字符,且实际行数小于或等于所述初始行数,则可以判断该排版结果符合了进行绘制的标准,将该排版结果标记。

但为了进一步优化文本的观赏性及可读性,还可以再次调整字符的缩放值,以求减少文本整体的行数。在字符的缩放值大于第二预设阈值的情况下,在减少字符的缩放值后,再次进行排版处理,若此时的实际行数小于或等于初始行数,则可以确定当前的排版结果优于前一次标记的排版结果,将利用当前的排版结果替换上一次标记的排版结果,使标记的排版结果更新。

当循环结束时,标记的排版结果即可认为是最优的排版结果。

s104、根据所述排版结果,将所述字符流绘制在所述文本绘制区域中。

在一种可能的实施方式中,所述根据所述排版结果,将所述字符流绘制在所述文本绘制区域中,包括:

根据最新标记的所述排版结果,将所述字符流绘制在所述文本绘制区域中。

该步骤中,在结束循环排版之后,可以使用最新标记的排版结果进行文本绘制,这样,能够使绘制效果达到最佳。

本申请实施例提供的卡牌游戏中的文本绘制方法,首先获取待绘制卡牌的目标文本,并根据所述目标文本中的转义字符将所述目标文本转换为至少一个字符流;然后,根据字符分组规则,对所述字符流中的字符进行分组处理;其次,根据所述分组处理的分组结果,以及所述待绘制卡牌中文本绘制区域的参数信息,对所述字符流进行排版处理;在所述排版处理的排版结果中,属于同一分组的字符位于同一行中;最后,根据所述排版结果,将所述字符流绘制在所述文本绘制区域中。本申请通过将文本对应的字符流中的字符进行分组,并根据分组结果及文本绘制区域的参数信息对字符流进行排版处理,能够实现文本的排版及绘制的自动化,提高卡牌文本绘制的效率。

请参阅图2,图2为本申请另一实施例提供的卡牌游戏中的文本绘制方法的流程图。如图2中所示,本申请实施例提供的卡牌游戏中的文本绘制方法,包括:

s201、解析文本。

该步骤与步骤s101的原理相同。其中,解析文本是对待绘制卡牌的目标文本进行解析的步骤,可以将目标文本按照其中的转义字符拆分成至少一个字符流。

s202、计算同行信息。

该步骤与步骤s102的原理相同。其中,计算同行信息指利用同行正则表达式及其他特殊规则,对字符流中的字符进行分组处理,位于同一组内的字符可以储存自身位置和同组首个字符位置的映射关系,进而实现在排版时将其与同组的字符添加至同一行中。

s203、自适应大小处理。

该步骤与步骤s103原理相同。其中,自适应大小处理实在文本绘制区域中,找到合适的排版起始位置与合适的字符的缩放值,并记录排版效果,排版效果可以包括行高、行宽、包含的字符等行信息,以及字符的状态、大小等字符信息。

请参阅图3,图3为本申请实施例所提供的一种卡牌游戏中的文本绘制方法中文本绘制区域的示意图。如图3所示,文本绘制区域可以为不规则的矩形,文本绘制区域上设置有平面直角坐标系,平面直角坐标系的x轴与文本绘制区域的底边重合,y轴与文本绘制区域的一侧边重合,文本绘制区域的高为h,宽为w,文本绘制区域的左下角与右下角各有一个矩形的缺口,用于显示卡牌的攻击力及生命值,矩形缺口的高为h,宽为w

示例性的,可以设段落数为pn,普通的文字字符的宽为gw、高为gh,当前的行数为ln,当前的字符缩放值为s;在步骤s203可以具体使用如下步骤:

步骤1、尝试以指定字体和s(初始为1)进行首次排版;将ln的值设为pn的值,由段落造成的y轴偏移mo=(pn-1)*段间隔/2。

步骤2、排版起始位置的y坐标(lp)为min(h,h/2+mo+ln*gh/2)。

步骤3、从排版起始位置开始,在当前缩放值s下进行排版处理,将字符逐个添加至文本绘制区域中,当前行宽度可容纳下该字符,则继续;若为悬挂字符且上一个字符不为悬挂字符,添加该字符继续;若为同行字符,也先放进去该行;对超出行宽的,需要进行换行处理,若是强制同行和悬挂字符或者连续两个悬挂字符,则需要将超行的结尾字符和前一个字符移出该行,否则只需要将超行的结尾字符移出该行;对于移出去的字符,还需要将前面的同行字符或者不能结尾字符也一并移出去放到下一行。

其中,对于换行,新一行的y坐标(lp)需要从前一行的y坐标减去行间距以及gh;对于换段,新一段的y坐标(lp)需要从前一行的y坐标减去段间距及gh;每一行的行宽需要通过判断lp是否与[0,h]相交确定。

步骤4、通过进行排版处理的排版结果,进行重复排版,直到满足预设条件。

请参阅图4,图4为本申请实施例提供的一种卡牌游戏中的文本绘制方法中重复进行排版处理(步骤4)的流程图。

如图4所示,在步骤4中,若实际行数大于当前行数,则将ln+1,继续步骤2,即排版起始位置的y坐标(lp)为min(h,h/2+mo+ln*gh/2);若lp<0(文本超出限定区域下限),则将s减去缩放步长值,若s小于等于0,则采用s=1进行排版(没有合适的排版结果,即没有目标,未进行排版结果的标记),否则继续步骤1,即尝试以指定字体和s(进行首次排版;将ln的值设为pn的值,由段落造成的y轴偏移mo=(pn-1)*段间隔/2;若lp>=0,则判定找到目标(目标即为当前的排版结果,并对排版结果进行标记),当找到目标时,在不超过缩放字体下限阈值的情况下,尝试进一步减少字体缩放,看是否能找到缩减行数的情形,若存在则认为效果更优,更新标记的排版结果,否则采用之前标记的排版结果。

s204、进行文本绘制。

该步骤中,可以按照标记的排版结果(即找到的目标)进行文本绘制。

请同时参阅图5a以及图5b,图5a示出了文本绘制区域51为矩形时的卡牌的示意图,在图5a中,中文词汇中的每个字符都位于同一行,且悬挂符号都与前一字符位于同一行;图5b示出了文本绘制区域52去掉攻击力及生命值显示区域后的卡牌的示意图,在图5b中,文本仅显示于文本绘制区域52中,其中,53为卡牌。

请参阅图6、图7,图6为本申请实施例所提供的一种卡牌游戏中的文本绘制装置的结构示意图,图7为本申请实施例所提供的另一种卡牌游戏中的文本绘制装置的结构示意图。如图6中所示,所述卡牌游戏中的文本绘制装置600包括:

转换模块610,用于获取待绘制卡牌的目标文本,并根据所述目标文本中的转义字符将所述目标文本转换为至少一个字符流;

分组模块620,用于根据字符分组规则,对所述字符流中的字符进行分组处理,其中,所述分组规则用于确定所述字符流中需要连续显示的字符;

排版模块630,用于根据所述分组处理的分组结果,以及所述待绘制卡牌中文本绘制区域的参数信息,对所述字符流进行排版处理,以得到在所述排版处理的排版结果;

绘制模块640,用于根据所述排版结果,将所述字符流绘制在所述文本绘制区域中。

如图7所示,所述卡牌游戏中的文本绘制装置700包括转换模块710、分组模块720、排版模块730以及绘制模块740;

在一种可能的实施方式中,所述字符规则包括文字分组规则及符号分组规则;

所述分组模块720具体用于:

按照所述文字分组规则,将所述字符流中的文字字符分组,得到至少一个文字字符组;

按照所述符号分组规则,将所述字符流中的符号字符分入与其对应的所述文字字符组中,得到所述分组结果。

在一种可能的实施方式中,所述排版模块730包括:

预排版单元731,用于根据预设的排版参数、所述分组结果以及所述文本绘制区域的参数信息,在所述文本绘制区域中对所述字符流进行排版处理;

循环排版单元732,用于根据所述排版处理的排版结果,调整所述排版参数,并重复进行排版处理及调整所述排版参数的步骤,直到满足预设的截止条件。

在一种可能的实施方式中,所述排版参数包括如下至少一种:字体、字符的宽度及高度、字符的缩放值、行间距、段间距、初始行数。

在一种可能的实施方式中,所述预排版单元731具体用于:

根据所述字符流的数量调整所述初始行数;

根据调整后的初始行数、所述文本绘制区域的参数信息、所述排版参数中的字符的高度、字符的缩放值、行间距以及段间距,确定所述文本绘制区域中的排版起始位置;

从所述排版起始位置起,按照所述预设的排版参数将所述字符流中的字符逐个添加至所述文本绘制区域中;当一行中的剩余位置不足以容纳下一组内的所有字符时进行换行;当一字符流中的字符全部添加完毕,且存在下一字符流时进行换段。

在一种可能的实施方式中,所述预设的截止条件包括如下至少一种:所述字符的缩放值小于或等于第一预设阈值,和实际行数小于或等于所述初始行数且不存在位于所述文本绘制区域之外的字符;其中,

所述循环排版单元732具体用于:

若所述排版结果中,实际行数大于调整后的初始行数,则将所述初始行数加1,重新确定所述排版起始位置,并返回将所述字符添加至所述文本绘制区域中的步骤;

若所述排版结果中,存在位于所述文本绘制区域之外的字符,则以预设步长减小所述字符的缩放值,重新确定所述排版起始位置,并返回将所述字符添加至所述文本绘制区域中的步骤。

在一种可能的实施方式中,所述循环排版单元732还用于:

若不存在位于所述文本绘制区域之外的字符,且实际行数小于或等于所述初始行数,则将当前的排版结果标记;

若所述字符的缩放值大于第二预设阈值,则在保证所述字符的缩放值大于所述第二预设阈值的前提下,以预设步长减小所述字符的缩放值,将所述实际行数作为所述初始行数,重新确定所述排版起始位置,并返回将所述字符添加至所述文本绘制区域中的步骤。

在一种可能的实施方式中,所述绘制模块740具体用于:

根据最新标记的所述排版结果,将所述字符流绘制在所述文本绘制区域中。

本申请实施例提供的卡牌游戏中的文本绘制装置,首先获取待绘制卡牌的目标文本,并根据所述目标文本中的转义字符将所述目标文本转换为至少一个字符流;然后,根据字符分组规则,对所述字符流中的字符进行分组处理;其次,根据所述分组处理的分组结果,以及所述待绘制卡牌中文本绘制区域的参数信息,对所述字符流进行排版处理;在所述排版处理的排版结果中,属于同一分组的字符位于同一行中;最后,根据所述排版结果,将所述字符流绘制在所述文本绘制区域中。本申请通过将文本对应的字符流中的字符进行分组,并根据分组结果及文本绘制区域的参数信息对字符流进行排版处理,能够实现文本的排版及绘制的自动化,提高卡牌文本绘制的效率。

请参阅图8,图8为本申请实施例所提供的一种电子设备的结构示意图。如图8中所示,所述电子设备800包括处理器810、存储器820和总线830。

所述存储器820存储有所述处理器810可执行的机器可读指令,当电子设备800运行时,所述处理器810与所述存储器820之间通过总线830通信,所述机器可读指令被所述处理器810执行时,可以执行以下步骤:

获取待绘制卡牌的目标文本,并根据所述目标文本中的转义字符将所述目标文本转换为至少一个字符流;

根据字符分组规则,对所述字符流中的字符进行分组处理,其中,所述分组规则用于确定所述字符流中需要连续显示的字符;

根据所述分组处理的分组结果,以及所述待绘制卡牌中文本绘制区域的参数信息,对所述字符流进行排版处理,以得到所述排版处理的排版结果;

根据所述排版结果,将所述字符流绘制在所述文本绘制区域中。

在一种可能的实施方式中,所述字符设的分组规则包括文字分组规则及符号分组规则;

在一种可能的实施方式中,所述处理器810在执行根据字符分组规则,对所述字符流中的字符进行分组处理时,具体执行:

按照所述文字分组规则,将所述字符流中的文字字符分组,得到至少一个文字字符组;

按照所述符号分组规则,将所述字符流中的符号字符分入与其对应的所述文字字符组中,得到所述分组结果。

在一种可能的实施方式中,所述处理器810在执行根据所述分组处理的分组结果,以及所述待绘制卡牌中文本绘制区域的参数信息,对所述字符流进行排版处理时,具体执行:

根据预设的排版参数、所述分组结果以及所述文本绘制区域的参数信息,在所述文本绘制区域中对所述字符流进行排版处理;

根据所述排版处理的排版结果,调整所述排版参数,并重复进行排版处理及调整所述排版参数的步骤,直到满足预设的截止条件。

在一种可能的实施方式中,所述排版参数包括如下至少一种:字体、字符的宽度及高度、字符的缩放值、行间距、段间距、初始行数。

在一种可能的实施方式中,所述处理器810在执行述根据预设的排版参数、所述分组结果以及所述文本绘制区域的参数信息,在所述文本绘制区域中对所述字符流进行排版处理时,具体执行:

根据所述字符流的数量调整所述初始行数;

根据调整后的初始行数、所述文本绘制区域的参数信息、所述排版参数中的字符的高度、字符的缩放值、行间距以及段间距,确定所述文本绘制区域中的排版起始位置;

从所述排版起始位置起,按照所述预设的排版参数将所述字符流中的字符逐个添加至所述文本绘制区域中;当一行中的剩余位置不足以容纳下一组内的所有字符时进行换行;当一字符流中的字符全部添加完毕,且存在下一字符流时进行换段。

在一种可能的实施方式中,所述预设的截止条件包括如下至少一种:所述字符的缩放值小于或等于第一预设阈值,和实际行数小于或等于所述初始行数且不存在位于所述文本绘制区域之外的字符;其中,

所述处理器810在执行根据所述排版处理的排版结果,调整所述排版参数,并重复进行排版处理及调整所述排版参数的步骤,直到满足预设的截止条件时,具体执行:

若所述排版结果中,实际行数大于调整后的初始行数,则将所述初始行数加1,重新确定所述排版起始位置,并返回将所述字符添加至所述文本绘制区域中的步骤;

若所述排版结果中,存在位于所述文本绘制区域之外的字符,则以预设步长减小所述字符的缩放值,重新确定所述排版起始位置,并返回将所述字符添加至所述文本绘制区域中的步骤。

在一种可能的实施方式中,所述处理器810在执行根据所述排版处理的排版结果,调整所述排版参数,并重复进行排版处理及调整所述排版参数的步骤,直到满足预设的截止条件时,还执行:

若不存在位于所述文本绘制区域之外的字符,且实际行数小于或等于所述初始行数,则将当前的排版结果标记;

若所述字符的缩放值大于第二预设阈值,则在保证所述字符的缩放值大于所述第二预设阈值的前提下,以预设步长减小所述字符的缩放值,将所述实际行数作为所述初始行数,重新确定所述排版起始位置,并返回将所述字符添加至所述文本绘制区域中的步骤。

在一种可能的实施方式中,所述处理器810在执行根据所述排版结果,将所述字符流绘制在所述文本绘制区域中时,具体执行:

根据最新标记的所述排版结果,将所述字符流绘制在所述文本绘制区域中。

本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时可以执行如上述图1以及图2所示方法实施例中的卡牌游戏中的文本绘制方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

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