CN112807691B - 一种寻路方法、系统及存储介质和终端设备 - Google Patents
一种寻路方法、系统及存储介质和终端设备 Download PDFInfo
- Publication number
- CN112807691B CN112807691B CN202110198167.3A CN202110198167A CN112807691B CN 112807691 B CN112807691 B CN 112807691B CN 202110198167 A CN202110198167 A CN 202110198167A CN 112807691 B CN112807691 B CN 112807691B
- Authority
- CN
- China
- Prior art keywords
- node
- current
- path
- current node
- neighbor
- 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.)
- Active
Links
Images
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
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
- A63F13/56—Computing the motion of game characters with respect to other game characters, game objects or elements of the game scene, e.g. for simulating the behaviour of a group of virtual soldiers or for path finding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明实施例公开了一种寻路方法、系统及存储介质和终端设备,应用于信息处理技术领域。寻路系统会在接收到当前应用的应用界面上对寻路触发接口的操作后,确定当前节点,并基于当前节点所在面是由六边形网格组成的,确定搜索当前节点的后继节点的搜索方向,然后根据搜索方向在当前节点的邻居节点中,搜索当前节点的后继节点,进而根据搜索的后继节点确定起始节点到终止节点之间的路径,并将相应的路径信息显示到应用界面。本实施例的寻路方法可以适用于在起始节点和终止节点所在面是六边形网格的情况下确定路径,且在应用界面显示的路径信息是起始节点到终止节点之间的合理路径,为用户提供较合理的行径路径。
Description
技术领域
本发明涉及信息处理技术领域,特别涉及一种寻路方法、系统及存储介质和终端设备。
背景技术
在现有的游戏或其它应用中,经常需要计算在一个面内,如何从一个点用最短时间(或距离)达到另一个点,从而实现应用中的某些功能,比如在游戏应用确定用户的虚拟人物在游戏地图中当前所在位置到目标位置之间的路径,从而指导虚拟人物在游戏地图中的走向。
现有的一种寻路方法主要包括:根据起点位置搜寻后继节点,然后再根据后继节点确定起点位置到目标位置之间的最短路径,其中,在根据起点位置搜寻后继节点时,可以从起点位置周围的相邻节点中来搜寻后继节点,但是起点位置周围的相邻节点较多,在搜寻后继节点时花费时间较多,从而使得寻路过程所花费时间也比较多。
发明内容
本发明实施例提供一种寻路方法、系统及存储介质和终端设备,实现了一种六边形网格所组成的面上的寻路方法。
本发明实施例一方面提供一种寻路方法,包括:
显示当前应用的应用界面,所述应用界面包括:寻路触发接口;
响应于对所述寻路触发接口的操作,确定当前节点为起始节点,或为所述起始节点到终止节点之间的任一节点;
基于所述当前节点所在面的单元网格为六边形网格,确定搜索所述当前节点的后继节点的搜索方向;
根据所述确定的搜索方向,在与所述当前节点对应的邻居节点中,搜索所述当前节点的后继节点;
根据所述搜索的后继节点,确定所述起始节点到终止节点之间的路径;
将所述起始节点到终止节点之间路径的路径信息显示到所述应用界面。
本发明另一方面提供一种寻路系统,包括:
显示单元,用于显示当前应用的应用界面,所述应用界面包括:寻路触发接口;
节点确定单元,用于响应于对所述寻路触发接口的操作,确定当前节点为起始节点,或为所述起始节点到终止节点之间的任一节点;
方向确定单元,用于基于所述当前节点所在面的单元网格为六边形网格,确定搜索所述当前节点的后继节点的搜索方向;
搜索单元,用于根据所述确定的搜索方向,在与所述当前节点对应的邻居节点中,搜索所述当前节点的后继节点;
路径确定单元,用于根据所述搜索的后继节点,确定所述起始节点到终止节点之间的路径;
路径显示单元,用于将所述起始节点到终止节点之间路径的路径信息显示到所述应用界面。
本发明实施例另一方面还提供一种计算机可读存储介质,所述计算机可读存储介质储存多个计算机程序,所述计算机程序适于由处理器加载并执行如本发明实施例一方面所述的寻路方法。
本发明实施例另一方面还提供一种终端设备,包括处理器和存储器;
所述存储器用于储存多个计算机程序,所述计算机程序用于由处理器加载并执行如本发明实施例一方面所述的寻路方法;所述处理器,用于实现所述多个计算机程序中的各个计算机程序。
可见,在本实施例的方法中,寻路系统会在接收到当前应用的应用界面上对寻路触发接口的操作后,确定当前节点,并基于当前节点所在面是由六边形网格组成的,确定搜索当前节点的后继节点的搜索方向,然后根据搜索方向在当前节点的邻居节点中,搜索当前节点的后继节点,进而根据搜索的后继节点确定起始节点到终止节点之间的路径,并将相应的路径信息显示到应用界面。可见,本实施例的寻路方法可以适用于在起始节点和终止节点所在面是六边形网格的情况下确定路径,且由于在搜索后继节点的过程中考虑到了各个节点所在六边形网格是否是被阻挡,使得应用界面显示的路径信息并不是起始节点到终止节点之间的直线距离,而是起始节点到终止节点之间的合理路径,为用户提供较合理的行径路径。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种寻路方法的示意图;
图2a是本发明一个实施例提供的一种寻路方法的流程图;
图2b是本发明一个实施例中一种确定方向优先级的示意图;
图2c是本发明一个实施例中另一种确定方向优先级的示意图;
图3a到图3c是本发明一个实施例中当前节点与自然邻居节点之间的示意图;
图4a到图4c是本发明一个实施例中当前节点与强迫邻居节点之间的示意图;
图5是本发明应用实施例提供的一种寻路方法的流程图;
图6是本发明另一应用实施例中寻路方法所应用于的分布式系统的示意图;
图7是本发明另一应用实施例中区块结构的示意图;
图8是本发明实施例提供的一种寻路系统的结构示意图;
图9是本发明实施例提供的一种终端设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排它的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例提供一种寻路方法,如图1所示,寻路系统可以按照如下方法确定起始节点与终止节点之间的路径:
显示当前应用的应用界面,所述应用界面包括:寻路触发接口;响应于对所述寻路触发接口的操作,确定当前节点为起始节点,或为所述起始节点到终止节点之间的任一节点;基于所述当前节点所在面的单元网格为六边形网格,确定搜索所述当前节点的后继节点的搜索方向;根据所述确定的搜索方向,在与所述当前节点对应六边形网格相邻的六边形网格对应邻居节点中,搜索所述当前节点的后继节点;根据所述搜索的后继节点,确定所述起始节点到终止节点之间的路径;将所述起始节点到终止节点之间路径的路径信息显示到所述应用界面。
在实际的应用中,上述寻路系统可以应用于终端设备,这样,当终端设备在显示应用界面后,直接由终端设备来搜索后继节点并确定起始节点到终止节点之间的路径,并显示路径信息。
另一种情况下,上述寻路系统还可以应用于终端设备和服务器中,这样,当终端设备在显示应用界面后,用户通过应用界面的寻路触发接口触发对起始节点到终止节点之间的路径确定,终端设备会响应于对寻路触发接口的操作,发送寻路请求给服务器,由服务器搜索后继节点并确定起始节点到终止节点之间的路径,然后将相应的路径信息发送给终端设备,再由终端设备在应用界面显示该路径信息。
可见,本实施例的寻路方法可以适用于在起始节点和终止节点所在面是六边形网格的情况下确定路径,且由于在搜索后继节点的过程中考虑到了各个节点所在六边形网格是否是被阻挡,使得应用界面显示的路径信息并不是起始节点到终止节点之间的直线距离,而是起始节点到终止节点之间的合理路径,为用户提供较合理的行径路径。
本发明实施例提供一种寻路方法,主要是寻路系统所执行的方法,流程图如图2a所示,包括:
步骤101,显示当前应用的应用界面,在应用界面包括寻路触发接口。
可以理解,在某些应用比如游戏应用中,需要确定在一个面上,从一个点(即起始节点)到达另一个点(即终止节点)的路径,而从起始节点到终止节点的路径会经历多个节点,本实施例的寻路方法就是确定从起始节点到终止节点所经历过的多个节点的信息。
其中,一个节点对应面上的一个位置点,而从起始节点到终止节点之间的路径是指:在将起始节点和终止节点所在面设置为多个单元网格组成的情况下,每个单元网格表示面上的一个位置点,则每个单元网格对应一个节点,从起始节点出发,每次选取与该起始节点对应单元网格相邻的所有单元网格中某一单元网格走一格,经过多次走动,可以达到终止节点所在的单元网格,这样,将起始节点所在单元网格、多次走动所经过的单元网格及终止节点所在单元网格连接起来,即为从起始节点到终止节点之间的路径,根据选择单元网格走动的方向不同,从起始节点到终止节点会有多种路径,其中会有一个或多个路径是最短的,即为最短路径。
具体地,当寻路系统在当前应用的应用界面显示寻路触发接口后,用户可以通过该寻路触发接口输入起始节点和终止节点的信息,并触发寻路系统确定起始节点到终止节点之间的路径。
步骤102,响应于对上述寻路触发接口的操作,确定当前节点为起始节点,或为起始节点到终止节点之间的任一节点。
当寻路系统接收到用户对寻路触发接口的操作后,会从起始节点开始,在搜索到其后继节点1后,再进一步搜索后继节点1的后继节点2,以此类推,可以逐个地搜索后继节点,直到终止节点为止,即分别针对不同的节点,重复执行本实施例的步骤103到104,以完成从起始节点到终止节点之间的所有节点的搜索。其中,一个节点的后继节点可以包括一个或多个节点。
这里当前节点可以是起始节点,也可以是起始节点与终止节点之间的任一节点。
步骤103,基于当前节点所在面的单元网格为六边形网格,确定搜索当前节点的后继节点的搜索方向。
其中,单元网格是组成一个面的最小单位,每个单元网格对应一个节点,在本实施例中,单元网络具体为六边形网格,即当前节点所在面是由多个相同大小和方向的正六边形平铺覆盖的面。而搜索当前节点的后继节点的搜索方向是指当前节点对应六边形网格到其相邻六边形网格的方向,为了简化对后继节点的搜索,需要选择其中某些方向,而不是将当前节点对应六边形网格到其相邻六边形网格的所有方向作为搜索方向。
具体地,寻路系统所确定的搜索方向具体可以包括:当前节点的自然邻居节点方向,当前节点的强迫邻居节点方向,当前节点的前置节点到当前节点的方向。
其中,在当前节点所在面的单元网格是六边形网格的情况下,当前节点的自然邻居节点可以包括但不限于如下两种情况:
(1)如果当前节点p的所有邻居节点都不是障碍点,假设节点n是当前节点p的某一邻居节点,且当前节点的前置节点parent(p)->当前节点p->邻居节点n的路径是:当前节点的前置节点parent(p)到邻居节点n的所有路径中的最短且唯一路径,则邻居节点n即为当前节点p的自然邻居节点。
这里障碍点是指单元网格中某些不允许出现在路径上的单元网格,即不允许走动的单元网格,在实际应用中,该单元网格可以对应实际的障碍物,比如山、河水等。
(2)如果当前节点的前置节点parent(p)->当前节点p->某一邻居节点n的路径是:当前节点的前置节点parent(p)到某一邻居节点n的所有路径中的最短但非唯一路径,且当前节点的前置节点parent(p)到当前节点p的方向优先级大于当前节点p到某一邻居节点n的方向优先级,则某一邻居节点n即为当前节点p的自然邻居节点。
其中,一般情况下,从某一六边形网格到另一六边形网格的方向可以包括六个方向即水平的两个方向、左上、右下、左下和右上方向,每个方向的方向优先级是不同的,可以设置水平方向的方向优先级>左上和右下方向的方向优先级>左下和右上方向的方向优先级,也可以设置其他方向优先级,在这里不进行限制。其中,水平的两个方向的方向优先级相同,右上和左下两个方向的方向优先级相同,左上和右下两个方向的方向优先级相同。
例如图3a到3c中所示的,当前节点、当前节点的前置节点及当前节点的自然邻居节点分别对应的六边形网格。
其中,在当前节点所在面的单元网格是六边形网格的情况下,当前节点的强迫邻居节点可以包括:假设节点n是当前节点p的某一邻居节点,并且邻居节点n的邻居节点中有障碍点,且当前节点的前置节点parent(p)->当前节点p->邻居节点n的路径是:当前节点的前置节点parent(p)到邻居节点n的所有路径中的最短且唯一路径,则邻居节点n为当前节点p的强迫邻居节点,这里,允许一个自然邻居节点同时又是强迫邻居节点。
例如图4a到4c中所示的,当前节点、当前节点的前置节点及当前节点的强迫邻居节点分别对应的六边形网格。
需要说明的是,在本实施例中,为了实现基于六边形网格来确定搜索方向,需要在确定了起始节点和终止节点之后,事先设置六边形网格在各个方向的方向优先级,具体地,可以根据终止节点到起始节点所在三个方向轴的距离,设置六边形网格在各个方向的方向优先级,其中,三个方向可以包括:水平方向,左上方向或右下方向,及左下或右上方向,或者三个方向包括:竖直方向,左上方向或右下方向,及左下或右上方向。
具体地,寻路系统会以起始节点为中心,在起始节点对应六边形网格的三个方向分别创建轴线,得到三个轴线,计算终止节点分别到三个轴线的距离,将距离最短对应轴线的方向的方向优先级设置为最低,将距离最大对应轴线的方向的方向优先级设置为最高。
例如图2b所示的一种由六边形网格组成的面,以起始节点S为中心,在起始节点S对应六边形网格的三个方向(即水平方向、右上方向和右下方向)分别创建x、y和z轴线,然后得到从终点节点分别到x、y和z轴线的距离a、b和c,可见,距离c大于距离b大于距离c,则右下方向的方向优先级最大,右上方向的方向优先级次之,水平方向的方向优先级最小。
例如图2c所示的另一种由六边形网格组成的面,以起始节点S为中心,在起始节点S对应六边形网格的三个方向(即竖直方向、右上方向和右下方向)分别创建x、y和z轴线,然后得到从终点节点分别到x、y和z轴线的距离a、b和c,可见,距离a大于距离c大于距离b,则竖直方向的方向优先级最大,右下方向的方向优先级次之,右上方向的方向优先级最小。
步骤104,根据上述步骤103确定的搜索方向,在与当前节点对应的邻居节点中,搜索当前节点的后继节点。
具体地,在搜索后继节点时,寻路系统会在搜索方向确定与当前节点对应六边形网格在预置范围内的第一六边形网格,当第一六边形网格满足预置的第一条件,确定第一六边形网格对应节点为当前节点的后继节点;当第一六边形网格不满足预置的第一条件或是障碍点时,第一六边形网格对应节点不是当前节点的后继节点。
可以理解的是,在具体实现时,寻路系统可以在一个搜索方向上确定一个第一六边形网格,当确定该第一六边形网格满足预置的第一条件时,则确定对应节点为后继节点,然后转向另一搜索方向确定另一第一六边形网格;当确定该第一六边形网格是障碍点时,对应节点不是后继节点,然后转向另一搜索方向确定另一第一六边形网格;当确定该第一六边形网格不满足预置的第一条件时,对应节点不是后继节点,并继续在该搜索方向确定另一第一六边形网格,针对另一六边形网格进行是否满足第一条件或障碍点的判定及相应处理。
其中,预置的第一条件包括如下任一条件:第一六边形网格对应节点为第一类型跳点或第二类型跳点;当当前节点对应六边形网格到第一六边形网格的方向是当前节点的强迫邻居节点方向,或者当当前节点对应六边形网格到第一六边形网格的方向是当前节点的前置节点到当前节点的方向,且第一六边形网格对应节点属于第三类型跳点。
具体地,当某一节点为起始节点或终止节点,则某一节点属于第一类型跳点;当某一节点有强迫邻居节点,则某一节点属于第二类型跳点;当当前节点的前置节点到某一节点的方向为第一方向,第二方向为第一方向顺时针旋转60度方向或者逆时针旋转60度方向,且第一方向的方向优先级大于第二方向的方向优先级,且从某一节点沿着第二方向能找到一个第一类型跳点或第二类型跳点,则某一节点属于第三类型跳点。
步骤105,根据上述步骤104搜索的后继节点,确定起始节点到终止节点之间的路径。
需要说明的是,在从起始节点开始,搜索后继节点的过程中,最初始的循环中,起始节点作为当前节点,并通过上述步骤103和104确定了起始节点的后继节点后,再以确定的后继节点作为当前节点,然后再通过上述步骤103和104确定相应的后继节点,这样,循环执行多次上述步骤103和104,即可确定从起始节点到终止节点之间的所有后继节点。
进一步地,为了简化搜索后继节点的流程,且为了能确定出起始节点到终止节点之间的较短的路径,当寻路系统每次在搜索到当前节点的后继节点之后,还需要确定该后继节点是否满足预置的第二条件,如果满足,才会将搜索的后继节点实际作为起始节点到终止节点之间的后继节点,并设置当前节点为后继节点的前置节点。
具体地,预置的第二条件可以包括:该后继节点的第三距离值不大于系统中已储存的该后继节点的第三距离值等。其中,后继节点的第三距离值f为第一距离值g与第二距离值h之和,而第一距离值g用于表示起始节点到后继节点之间的路径距离,具体为当前节点的第一距离值g与当前节点到后继节点之间的距离之和;第二距离值h为后继节点到终止节点之间的期望距离。这样,当寻路系统在搜索到后继节点后,需要确保该后继节点的第三距离值比之前计算的该后继节点的第三距离值要小,才能保证最终查找的起始节点到终止节点的路径是最短路径。
另外需要说明的是,在这种情况下,当寻路系统在针对当前节点得到实际的多个后继节点P0后,会从其中选择第三距离值最小的后继节点P0作为当前节点,并按照上述步骤103和104可以得到实际的多个后继节点P1,对于第三距离值非最小值的后继节点P0则不再进行处理;然后再继续从多个后继节点P1中选择第三距离值最小的后继节点P1作为当前节点进行处理,以此类推,直到得到的后继节点是终止节点为止,这样即可得到从起始节点到终止节点之间的最短路径,且花费时间较少。
步骤106,将起始节点到终止节点之间路径的路径信息显示到应用界面。其中,路径信息可以包括起始节点到终止节点之间的各个节点的信息,还可以包括起始节点到终止节点之间路径的距离信息等。
可见,在本实施例的方法中,寻路系统会在接收到当前应用的应用界面上对寻路触发接口的操作后,确定当前节点,并基于当前节点所在面是由六边形网格组成的,确定搜索当前节点的后继节点的搜索方向,然后根据搜索方向在当前节点的邻居节点中,搜索当前节点的后继节点,进而根据搜索的后继节点确定起始节点到终止节点之间的路径,并将相应的路径信息显示到应用界面。可见,本实施例的寻路方法可以适用于在起始节点和终止节点所在面是六边形网格的情况下确定路径,且由于在搜索后继节点的过程中考虑到了各个节点所在六边形网格是否是被阻挡,使得应用界面显示的路径信息并不是起始节点到终止节点之间的直线距离,而是起始节点到终止节点之间的合理路径,为用户提供较合理的行径路径。
以下以一个具体的应用实例来说明本发明实施例中的寻路算法,本实施例中的寻路方法可以应用在游戏应用中,确定虚拟人物在游戏地图中某一位置点到另一位置点之间的路径,则寻路系统具体为游戏应用终端,具体地,如图5所示,本实施例的寻路方法可以包括如下步骤:
步骤201,用户可以操作游戏应用终端,使得游戏应用终端显示应用界面,即游戏界面,在应用界面上包括寻路触发接口,这样,用户可以操作寻路触发接口输入起始节点和终止节点的信息,具体为起始位置和终止位置,并触发寻路流程。
步骤202,游戏应用终端响应于对触发寻路接口的操作,先创建一个六边形网格对应节点的集合,即open_set,并将起始节点放置在集合中。
步骤203,游戏应用终端从集合中取一个节点作为当前节点P,并将该点标记为已处理。初始开始处理时,起始节点会作为当前节点,随着对后继节点的搜索,在集合中会放置搜索出的多个后继节点,则游戏应用终端还会将其中某些后继节点作为当前节点,继续搜索对应的后继节点。
步骤204,游戏应用终端基于游戏界面是由六边形网格组成的,确定搜索当前节点P的后继节点Q的搜索方向,具体为当前节点P的自然邻居节点方向,当前节点P的强迫邻居节点方向及当前节点P的前置节点到当前节点P的方向。
步骤205,游戏应用终端根据上述确定的搜索方向,在当前节点P的邻居节点中搜索当前节点的后继节点Q,之后对搜索的后继节点Q,执行如下步骤206,或执行步骤207和208。
具体地,游戏应用终端会从当前节点P对应六边形网格出发,在上述搜索方向上,确定与当前节点P对应六边形网格相邻的第一六边形网格,如果该第一六边形网格为障碍点,则该第一六边形网格不是后继节点Q,并不在该搜索方向进行后继节点的搜索;如果第一六边形网格满足预置的第一条件,则该第一六边形网格是后继节点Q,且不在该搜索方向进行后继节点的搜索;如果第一六边形网格既不是障碍点,也不满足预置的第一条件,则在该搜索方向进行继续后继节点的搜索。其中,预置的第一条件具体见上述实施例中所述,在此不进行赘述。
步骤206,游戏应用终端确定后继节点Q是终止节点,则转到步骤209。
步骤207,游戏应用终端计算当前节点P的第一距离值g、第二距离值h和第三距离值f,其中,第一距离值g用于表示起始节点到后继节点Q之间的路径距离,具体为当前节点P的第一距离值g与当前节点P到后继节点Q之间的距离之和;第二距离值h为后继节点Q到终止节点之间的期望距离,第三距离值f为第一距离值g与第二距离值h之和。
步骤208,如果后继节点Q不在上述集合中,则将后继节点Q加入到集合中,将当前节点P设置为后继节点Q的前置节点;
如果后继节点Q已经存在于集合中,说明后继节点Q是在针对当前节点P进行处理的流程之前,对其它节点的后继节点搜索的过程中加入到集合中的,因此,当前系统中已经储存了在之前的流程中已经计算的该后继节点Q的第三距离值f,如果上述步骤205中计算的第三距离值f大于已有的该后继节点Q的第三距离值f,则不进行任何处理,也不会将该后继节点Q作为当前节点P实际的后继节点P;
如果上述步骤207中计算的第三距离值f不大于已有的该后继节点Q的第三距离值f,则更新已储存的该后继节点Q的第一距离值、第二距离值和第三距离值分别为上述步骤207中计算的值,并将当前节点P设置为后继节点Q的前置节点。
这样重复执行步骤206到步骤208,直到上述在步骤205中搜索的所有后继节点Q都处理完。然后游戏应用终端会返回执行上述步骤203,具体地,从上述集合中放置的当前节点P的多个后继节点Q中,选择第三距离值最小的一个后继节点Q作为当前节点,并将该节点标记为已处理;对于其它后继节点Q不进行处理,这样,循环执行上述步骤203到208,直到集合中的所有节点都被标记为已处理。
步骤209,游戏应用终端确定最后确定的终止节点Q1的前置节点Q2,确定节点Q2的前置节点Q3,依次类推,直到得到一个没有前置节点的节点Qn,则该节点Qn即为起始节点,这样,路径Qn,Q(n-1),…,Q2,Q1即为起始节点到终止节点的最短路径。
步骤210,游戏应用终端将确定上述步骤209确定的路径的路径信息显示到应用界面,即游戏界面。
本实施例中,通过上述步骤确定起始节点到终止节点之间的路径时所花费的时间比较少,对于那些对时间要求比较苛刻的应用是一个不错的选择.且本实施例的方法中,游戏应用终端会将确定的路径信息显示到应用界面,显示的路径信息可以表示起始节点到终止节点之间比较合理的路径,而不是直线路径的信息。
可以理解,本发明实施例的寻路方法还可以应用于模拟仿真、机器人移动等需要路径规划的应用中,比如在游戏应用中,需要模拟己方单位自动绕过各种实时的阻碍,到达指定地点等场景下,在这里不进行限制。
以下以另一具体的应用实例来说明本发明中寻路方法,本发明实施例中的寻路系统主要为分布式系统100,该分布式系统可以包括客户端300及多个节点200(接入网络中的任意形式的计算设备,如服务器、用户终端),客户端300与节点200之间通过网络通信的形式连接。
以分布式系统为区块链系统为例,参见图6是本发明实施例提供的分布式系统100应用于区块链系统的一个可选的结构示意图,由多个节点200(接入网络中的任意形式的计算设备,如服务器、用户终端)和客户端300形成,节点之间形成组成的点对点(P2P,Peer ToPeer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议。在分布式系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。
参见图6示出的区块链系统中各节点的功能,涉及的功能包括:
1)路由,节点具有的基本功能,用于支持节点之间的通信。
节点除具有路由功能外,还可以具有以下功能:
2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其它节点,供其它节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
例如,应用实现的业务包括实现寻路功能的代码,该寻路功能主要包括:
显示当前应用的应用界面,所述应用界面包括:寻路触发接口;响应于对所述寻路触发接口的操作,确定当前节点为起始节点,或为所述起始节点到终止节点之间的任一节点;基于所述当前节点所在面的单元网格为六边形网格,确定搜索所述当前节点的后继节点的搜索方向;根据所述确定的搜索方向,在与所述当前节点对应六边形网格相邻的六边形网格对应邻居节点中,搜索所述当前节点的后继节点;根据所述搜索的后继节点,确定所述起始节点到终止节点之间的路径;将所述起始节点到终止节点之间路径的路径信息显示到所述应用界面。
3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。
参见图7为本发明实施例提供的区块结构(Block Structure)一个可选的示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
本发明实施例还提供一种寻路系统,其结构示意图如图8所示,具体可以包括:
显示单元10,用于显示当前应用的应用界面,所述应用界面包括:寻路触发接口。
节点确定单元11,用于响应于对所述显示单元10显示的寻路触发接口的操作,确定当前节点为起始节点,或为所述起始节点到终止节点之间的任一节点。
方向确定单元12,用于基于所述当前节点所在面的单元网格为六边形网格,确定搜索所述节点确定单元11确定的当前节点的后继节点的搜索方向。
该方向确定单元12,具体用于确定所述搜索方向包括:所述当前节点的自然邻居节点方向,所述当前节点的强迫邻居节点方向,所述当前节点的前置节点到所述当前节点的方向。
其中,当前节点的自然邻居节点包括:如果所述当前节点的所有邻居节点都不是障碍点,且当前节点的前置节点到当前节点再到某一邻居节点的路径是:所述当前节点的前置节点到某一邻居节点的所有路径中最短且唯一的路径,则所述某一邻居节点为所述当前节点的自然邻居节点;如果所述当前节点的前置节点到当前节点再到某一邻居节点的路径是:所述当前节点的前置节点到某一邻居节点的所有路径中的最短但非唯一路径,且所述当前节点的前置节点到当前节点的方向优先级大于所述当前节点到某一邻居节点的方向优先级,则某一邻居节点为当前节点的自然邻居节点。
所述当前节点的强迫邻居节点包括:所述当前节点的某一邻居节点的邻居节点中有障碍点,且所述当前节点的前置节点到当前节点再到某一邻居节点的路径是:所述当前节点的前置节点到某一邻居节点的所有路径中的最短且唯一路径,则所述某一邻居节点为当前节点的强迫邻居节点。
搜索单元13,用于根据所述方向确定单元12确定的搜索方向,在与所述当前节点对应六边形网格相邻的六边形网格对应邻居节点中,搜索所述当前节点的后继节点。
该搜索单元13,具体用于在所述搜索方向确定与所述当前节点对应六边形网格在预置范围内的第一六边形网格;当所述第一六边形网格满足预置的第一条件,确定所述第一六边形网格对应节点为所述当前节点的后继节点。
其中,所述预置的第一条件包括如下任一条件:所述第一六边形网格对应节点为第一类型跳点或第二类型跳点;当所述当前节点对应六边形网格到第一六边形网格的方向是所述当前节点的强迫邻居节点方向,或者当所述当前节点对应六边形网格到第一六边形网格的方向是所述当前节点的前置节点到当前节点的方向,且所述第一六边形网格对应节点属于第三类型跳点。
其中,当某一节点为起始节点或终止节点,则所述某一节点属于第一类型跳点;当所述某一节点有强迫邻居节点,则所述某一节点属于第二类型跳点;当所述当前节点的前置节点到某一节点的方向为第一方向,第二方向为所述第一方向顺时针旋转60度方向或者逆时针旋转60度方向,且所述第一方向的方向优先级大于第二方向的方向优先级,且从所述某一节点沿着第二方向能找到一个所述第一类型跳点或第二类型跳点,则所述某一节点属于第三类型跳点。
路径确定单元14,用于根据所述搜索单元13搜索的后继节点,确定所述起始节点到终止节点之间的路径。
路径显示单元15,用于将所述路径确定单元14确定的起始节点到终止节点之间路径的路径信息显示到所述应用界面。
进一步地,本实施例中的寻路系统还可以包括:优先级单元16,用于根据所述终止节点到起始节点所在三个方向轴的距离,设置所述六边形网格在各个方向的方向优先级,其中,所述三个方向包括:水平方向,左上方向或右下方向,及左下或右上方向。具体地,该优先级单元16,具体用于以所述起始节点为中心,在所述起始节点对应六边形网格的三个方向分别创建轴线,得到三个轴线,计算所述终止节点分别到所述三个轴线的距离,将距离最短对应轴线的方向的方向优先级设置为最低。
在本实施例的系统中,节点确定单元11会在接收到当前应用的应用界面上对寻路触发接口的操作后,确定当前节点,并由方向确定单元12基于当前节点所在面是由六边形网格组成的,确定搜索当前节点的后继节点的搜索方向,然后搜索单元13根据搜索方向在当前节点的邻居节点中,搜索当前节点的后继节点,进而路径确定单元14根据搜索的后继节点确定起始节点到终止节点之间的路径,并由路径显示单元15将相应的路径信息显示到应用界面。主要适用于在起始节点和终止节点所在面是六边形网格的情况下确定路径,且由于在搜索后继节点的过程中考虑到了各个节点所在六边形网格是否是被阻挡,使得应用界面显示的路径信息并不是起始节点到终止节点之间的直线距离,而是起始节点到终止节点之间的合理路径,为用户提供较合理的行径路径。
本发明实施例还提供一种终端设备,其结构示意图如图9所示,该终端设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessing units,CPU)20(例如,一个或一个以上处理器)和存储器21,一个或一个以上存储应用程序221或数据222的存储介质22(例如一个或一个以上海量存储设备)。其中,存储器21和存储介质22可以是短暂存储或持久存储。存储在存储介质22的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对终端设备中的一系列指令操作。更进一步地,中央处理器20可以设置为与存储介质22通信,在终端设备上执行存储介质22中的一系列指令操作。
具体地,在存储介质22中储存的应用程序221包括寻路的应用程序,且该程序可以包括上述寻路系统中的显示单元10,节点确定单元11,方向确定单元12,搜索单元13,路径确定单元14,路径显示单元15及优先级单元16,在此不进行赘述。更进一步地,中央处理器20可以设置为与存储介质22通信,在终端设备上执行存储介质22中储存的寻路的应用程序对应的一系列操作。
终端设备还可以包括一个或一个以上电源23,一个或一个以上有线或无线网络接口24,一个或一个以上输入输出接口25,和/或,一个或一个以上操作系统223,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述方法实施例中所述的由寻路系统所执行的步骤可以基于该图9所示的终端设备的结构。
本发明实施例另一方面还提供一种计算机可读存储介质,所述计算机可读存储介质储存多个计算机程序,所述计算机程序适于由处理器加载并执行如上述寻路系统所执行的寻路方法。
本发明实施例另一方面还提供一种终端设备,包括处理器和存储器;
所述存储器用于储存多个计算机程序,所述计算机程序用于由处理器加载并执行如上述寻路系统所执行的寻路方法;所述处理器,用于实现所述多个计算机程序中的各个计算机程序。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的寻路方法。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM)、随机存取存储器(RAM)、磁盘或光盘等。
以上对本发明实施例所提供的一种寻路方法、系统及存储介质和终端设备进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (13)
1.一种寻路方法,其特征在于,包括:
显示当前应用的应用界面,所述应用界面包括:寻路触发接口;
响应于对所述寻路触发接口的操作,确定当前节点为起始节点,或为所述起始节点到终止节点之间的任一节点;
以所述起始节点为中心,在所述起始节点对应六边形网格的三个方向分别创建轴线,得到三个轴线,计算所述终止节点分别到所述三个轴线的距离,将距离最短对应轴线的方向的方向优先级设置为最低;
基于所述当前节点所在面的单元网格为六边形网格,确定搜索所述当前节点的后继节点的搜索方向;所述搜索方向包括所述当前节点的自然邻居节点方向,其中,如果所述当前节点的前置节点到当前节点再到某一邻居节点的路径是:所述当前节点的前置节点到某一邻居节点的所有路径中的最短但非唯一路径,且所述当前节点的前置节点到当前节点的方向优先级大于所述当前节点到某一邻居节点的方向优先级,则某一邻居节点为当前节点的自然邻居节点;
根据确定的搜索方向,在与所述当前节点对应的邻居节点中,搜索所述当前节点的后继节点;
根据所述搜索的后继节点,确定所述起始节点到终止节点之间的路径;
将所述起始节点到终止节点之间路径的路径信息显示到所述应用界面。
2.如权利要求1所述的方法,其特征在于,所述基于所述当前节点所在面的单元网格为六边形网格,确定搜索所述当前节点的后继节点的搜索方向,具体包括:
确定所述搜索方向还包括:所述当前节点的强迫邻居节点方向,所述当前节点的前置节点到所述当前节点的方向。
3.如权利要求2所述的方法,其特征在于,所述当前节点的自然邻居节点还包括:
如果所述当前节点的所有邻居节点都不是障碍点,且当前节点的前置节点到当前节点再到某一邻居节点的路径是:所述当前节点的前置节点到某一邻居节点的所有路径中最短且唯一的路径,则所述某一邻居节点为所述当前节点的自然邻居节点。
4.如权利要求2所述的方法,其特征在于,所述当前节点的强迫邻居节点包括:
所述当前节点的某一邻居节点的邻居节点中有障碍点,且所述当前节点的前置节点到当前节点再到某一邻居节点的路径是:所述当前节点的前置节点到某一邻居节点的所有路径中的最短且唯一路径,则所述某一邻居节点为当前节点的强迫邻居节点。
5.如权利要求2所述的方法,其特征在于,
所述三个方向包括:水平方向,左上方向或右下方向,及左下或右上方向。
6.如权利要求5所述的方法,其特征在于,所述计算所述终止节点分别到所述三个轴线的距离之后,还包括:
将距离最大对应轴线的方向的方向优先级设置为最高。
7.如权利要求1至6任一项所述的方法,其特征在于,所述根据所述确定的搜索方向,在与所述当前节点对应六边形网格相邻的六边形网格中,搜索所述当前节点的后继节点,具体包括:
在所述搜索方向确定与所述当前节点对应六边形网格在预置范围内的第一六边形网格;
当所述第一六边形网格满足预置的第一条件,确定所述第一六边形网格对应节点为所述当前节点的后继节点。
8.如权利要求7所述的方法,其特征在于,所述预置的第一条件包括如下任一条件:
所述第一六边形网格对应节点为第一类型跳点或第二类型跳点;
当所述当前节点对应六边形网格到第一六边形网格的方向是所述当前节点的强迫邻居节点方向;或者当所述当前节点对应六边形网格到第一六边形网格的方向是所述当前节点的前置节点到当前节点的方向,且所述第一六边形网格对应节点属于第三类型跳点。
9.如权利要求8所述的方法,其特征在于,
当某一节点为起始节点或终止节点,则所述某一节点属于第一类型跳点;
当所述某一节点有强迫邻居节点,则所述某一节点属于第二类型跳点。
10.如权利要求8所述的方法,其特征在于,
当所述当前节点的前置节点到某一节点的方向为第一方向,第二方向为所述第一方向顺时针旋转60度方向或者逆时针旋转60度方向,且所述第一方向的方向优先级大于第二方向的方向优先级,且从所述某一节点沿着第二方向能找到一个所述第一类型跳点或第二类型跳点,则所述某一节点属于第三类型跳点。
11.一种寻路系统,其特征在于,包括:
显示单元,用于显示当前应用的应用界面,所述应用界面包括:寻路触发接口;
节点确定单元,用于响应于对所述寻路触发接口的操作,确定当前节点为起始节点,或为所述起始节点到终止节点之间的任一节点;
优先级单元,用于以所述起始节点为中心,在所述起始节点对应六边形网格的三个方向分别创建轴线,得到三个轴线,计算所述终止节点分别到所述三个轴线的距离,将距离最短对应轴线的方向的方向优先级设置为最低;
方向确定单元,用于基于所述当前节点所在面的单元网格为六边形网格,确定搜索所述当前节点的后继节点的搜索方向;所述搜索方向包括所述当前节点的自然邻居节点方向,其中,如果所述当前节点的前置节点到当前节点再到某一邻居节点的路径是:所述当前节点的前置节点到某一邻居节点的所有路径中的最短但非唯一路径,且所述当前节点的前置节点到当前节点的方向优先级大于所述当前节点到某一邻居节点的方向优先级,则某一邻居节点为当前节点的自然邻居节点;
搜索单元,用于根据确定的搜索方向,在与所述当前节点对应的邻居节点中,搜索所述当前节点的后继节点;
路径确定单元,用于根据所述搜索的后继节点,确定所述起始节点到终止节点之间的路径;
路径显示单元,用于将所述起始节点到终止节点之间路径的路径信息显示到所述应用界面。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质储存多个计算机程序,所述计算机程序适于由处理器加载并执行如权利要求1至10任一项所述的寻路方法。
13.一种终端设备,其特征在于,包括处理器和存储器;
所述存储器用于储存多个计算机程序,所述计算机程序用于由处理器加载并执行如权利要求1至10任一项所述的寻路方法;所述处理器,用于实现所述多个计算机程序中的各个计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110198167.3A CN112807691B (zh) | 2021-02-22 | 2021-02-22 | 一种寻路方法、系统及存储介质和终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110198167.3A CN112807691B (zh) | 2021-02-22 | 2021-02-22 | 一种寻路方法、系统及存储介质和终端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112807691A CN112807691A (zh) | 2021-05-18 |
CN112807691B true CN112807691B (zh) | 2022-07-29 |
Family
ID=75864723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110198167.3A Active CN112807691B (zh) | 2021-02-22 | 2021-02-22 | 一种寻路方法、系统及存储介质和终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112807691B (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5101480A (en) * | 1989-05-09 | 1992-03-31 | The University Of Michigan | Hexagonal mesh multiprocessor system |
DE102009057583A1 (de) * | 2009-09-04 | 2011-03-10 | Siemens Aktiengesellschaft | Vorrichtung und Verfahren zur Erzeugung einer zielgerichteten realitätsnahen Bewegung von Teilchen entlang kürzester Wege bezüglich beliebiger Abstandsgewichtungen für Personen- und Objektstromsimulationen |
US10948918B2 (en) * | 2018-02-23 | 2021-03-16 | Tata Consultancy Services Limited | Context based path planning for vector navigation in hexagonal spatial maps |
CN111046542B (zh) * | 2019-11-29 | 2022-09-02 | 中国人民解放军国防科技大学 | 一种评估二十面体的le网格计算特性方法及离散方法 |
CN111811514B (zh) * | 2020-07-03 | 2023-06-09 | 大连海事大学 | 一种基于正六边形栅格跳点搜索算法的路径规划方法 |
-
2021
- 2021-02-22 CN CN202110198167.3A patent/CN112807691B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112807691A (zh) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7537523B2 (en) | Dynamic player groups for interest management in multi-character virtual environments | |
WO2020142906A1 (zh) | 基于结构化有向无环图的交易分配方法和装置 | |
CN110543354B (zh) | 任务调度方法、装置、设备及存储介质 | |
CN104539681A (zh) | 分布式gis加速系统和gis服务的处理方法 | |
CN104613976A (zh) | 确定路径的方法及装置 | |
CN109104464A (zh) | 一种边缘计算环境下面向协同存储的分布式数据更新方法 | |
CN112417001B (zh) | 基于区块链网络的数据处理方法及相关设备 | |
CN105630800A (zh) | 一种节点重要性排序的方法和系统 | |
CN108737569A (zh) | 一种面向移动边缘计算环境的服务选择方法 | |
CN109995580A (zh) | 5g网络切片中基于ga_pso混合算法的vn映射方法 | |
CN111258958A (zh) | 一种数据获取方法、数据提供方法及装置 | |
Moy et al. | Contact multigraph routing: Overview and implementation | |
CN111773717A (zh) | 对象控制方法和装置、存储介质和电子装置 | |
CN105786618B (zh) | 加速器网络中路由报文的方法和装置 | |
CN112807691B (zh) | 一种寻路方法、系统及存储介质和终端设备 | |
CN108268493A (zh) | 基于地理位置的最近站点搜索方法及装置 | |
CN113689270A (zh) | 黑产设备的确定方法、电子设备、存储介质及程序产品 | |
CN111491020B (zh) | 数据处理方法、装置、计算机设备以及存储介质 | |
CN110958178A (zh) | 一种确定系统间最短路径的方法和装置 | |
CN111340623A (zh) | 一种数据存储方法及装置 | |
CN115879329A (zh) | 用于电力网络安全仿真的多靶场同步方法及系统 | |
CN103064872B (zh) | 使用数据结构处理搜索查询 | |
CN115511457A (zh) | 一种基于元宇宙及区块链的活动运营方法 | |
CN111680376B (zh) | 线要素构建多边形的方法、装置及系统 | |
CN113393009A (zh) | 传输管线的路径规划方法、装置及计算设备 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40043887 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |