应用程序人工智能的实现方法及装置的制作方法

文档序号:6584778阅读:181来源:国知局
专利名称:应用程序人工智能的实现方法及装置的制作方法
技术领域
本发明涉及计算机技术领域,尤其涉及应用程序人工智能的实现方法及装置。
背景技术
随着技术的进步,应用程序需要控制产品能够完成一系列人工智能行为。例如 网络游戏中非玩家控制的角色需要多种人工智能进行支持,以模拟出更多复杂的智能状态 机。为了不断提高用户对产品的体验,人工智能行为需要不断升级。仍以网络游戏为 例,现有网络游戏中人工智能的实现常采用传统的编程技术,为了使玩家保持对网络游戏 的兴趣,非玩家控制的角色要时常升级人工智能行为,为此,就必须对原有程序进行重新编 译,对编译后的程序进行调试,再对调试后的程序进行测试,均无问题后,最后更新服务器 或者客户端程序。也就是说,现有应用程序人工智能的实现要经过重新编译、调试以及测试的过程, 因此实现过程复杂,实现成本较高。

发明内容
有鉴于此,本发明实施例提供了应用程序人工智能的实现方法及装置,实现简单, 节约成本。一种应用程序人工智能的实现方法,所述方法包括向应用程序注册至少一个事件触发器,并设置分别对应于所述至少一个事件触发 器的原状态,所述原状态是一组完成人工智能行为的最小状态集合,所述事件触发器是一 组触发条件及与所述触发条件对应的触发事件的集合,或一组触发事件的集合;所述应用程序触发注册的一个事件触发器;当被触发的事件触发器的触发事件执行结束后,人工智能行为进入对应于所述被 触发的事件触发器的原状态。可选地,在所述人工智能行为进入对应于所述被触发的事件触发器的原状态之 后,所述方法还包括删除已注册的所述至少一个事件触发器。可选地,在所述向应用程序注册至少一个事件触发器的过程中,所述方法还包 括设置所述人工智能行为下一次移动的坐标。优选地,所述原状态包括站立状态、巡逻状态、攻击状态、跟随状态、寻路状态或 者防御状态。优选地,所述事件触发器包括目标触发器、时间触发器、攻击触发器、受伤触发器 或者寻路触发器。一种应用程序人工智能的实现装置,所述装置包括
注册单元,用于向应用程序注册至少一个事件触发器,所述事件触发器是一组触 发条件及与所述触发条件对应的触发事件的集合,或一组触发事件的集合;第一设置单元,用于设置分别对应于所述至少一个事件触发器的原状态,所述原 状态是一组完成人工智能行为的最小状态集合;接受触发单元,用于接受所述应用程序的触发,所述应用程序触发了注册单元注 册的一个事件触发器;执行单元,用于执行所述应用程序触发的一个事件触发器的触发事件,以使人工 智能行为进入对应于被触发的事件触发器的原状态。可选地,所述装置还包括删除单元,用于在所述执行单元执行操作之后,删除已注册的所述至少一个事件 触发器。可选地,所述装置还包括第二设置单元,用于在所述注册单元执行操作的过程中,设置所述人工智能行为 下一次移动的坐标。优选地,所述第一设置单元包括第三设置子单元,用于设置站立状态;或者,第四设置子单元,用于设置巡逻状态;或者,第五设置子单元,用于设置攻击状态;或者,第六设置子单元,用于设置跟随状态;或者,第七设置子单元,用于设置寻路状态;或者,第八设置子单元,用于设置防御状态。优选地,所述注册单元包括第一注册子单元,用于向所述应用程序注册目标触发器;或者,第二注册子单元,用于向所述应用程序注册时间触发器;或者,第三注册子单元,用于向所述应用程序注册攻击触发器;或者,第四注册子单元,用于向所述应用程序注册受伤触发器;或者,第五注册子单元,用于向所述应用程序注册寻路触发器。可以看出,在本发明实施例中,通过向应用程序注册至少一个事件触发器,并设置 分别对应于至少一个事件触发器的原状态,应用程序触发注册的一个事件触发器以及当被 触发的事件触发器的触发事件执行结束后,人工智能行为进入对应于被触发的事件触发器的原状态这些步骤,无需对应用程序进行重新编译、调试以及测试,就可以实现应用程序的 人工智能,实现简单,节约成本。


图1为本发明实施例提供的一种应用程序人工智能的实现方法流程图;图2为本发明实施例提供的一种网络游戏人工智能的实现方法流程图;图3为具体实例中护送任务的原状态示意图;图4为本发明实施例提供的另一种网络游戏人工智能的实现方法流程图;图5为自动清洁机器人人工智能行为的原状态示意图;图6为本发明实施例提供的一种应用程序人工智能的实现装置结构示意图;图7为本发明实施例提供的另一种网络游戏人工智能的实现装置结构示意图。
具体实施例方式为了使本发明实施例的上述特征、优点更加明显易懂,下面结合具体实施方式
进 行详细说明。首先介绍如下几个概念原状态是一组完成人工智能行为的最小状态集合,例如站立状态、巡逻状态、 攻击状态、跟随状态、寻路状态以及防御状态。事件触发器是一组触发条件以及与触发条件对应的触发事件的集合,或者,是一 组触发事件的集合,脚本通过接口可以向网络游戏程序注册触发条件以及触发事件,当满 足脚本注册的触发条件时,网络游戏程序调用事件触发器中定义的触发事件。本发明实施例提供的方法通过脚本与网络游戏程序的交互实现了网络游戏的人 工智能。请参考图1,为本发明实施例提供的一种应用程序人工智能的实现方法流程图,可 以包括以下步骤步骤101 :向应用程序注册至少一个事件触发器,并设置分别对应于所述至少一 个事件触发器的原状态,所述原状态是一组完成人工智能行为的最小状态集合,所述事件 触发器是一组触发条件及与所述触发条件对应的触发事件的集合,或一组触发事件的集 合;步骤102 所述应用程序触发注册的一个事件触发器;步骤103 当被触发的事件触发器的触发事件执行结束后,人工智能行为进入对 应于所述被触发的事件触发器的原状态。可以看出,在本发明实施例中,通过向应用程序注册至少一个事件触发器,并设置 分别对应于至少一个事件触发器的原状态,应用程序触发注册的一个事件触发器以及当被 触发的事件触发器的触发事件执行结束后,人工智能行为进入对应于被触发的事件触发器 的原状态这些步骤,无需对应用程序进行重新编译、调试以及测试,就可以实现应用程序的 人工智能,实现简单,节约成本。本发明实施例提供的方法可以应用于网络游戏程序,还可以应用于自动清洁机器 人。下面结合一个实施例先对网络游戏程序进行说明,在该实施例中,假设网络游戏程序中人工智能行为的原状态包括第一原状态、第二原状态以及第三原状态。请参考图2,为本发明实施例提供的一种网络游戏人工智能的实现方法流程图,可 以包括以下步骤步骤201 脚本向应用程序注册第一事件触发器,并设置在第一事件触发器的触 发事件结束后,人工智能行为的原状态为第一原状态;步骤202 应用程序触发第一事件触发器;步骤203 第一事件触发器的触发事件执行结束后,人工智能行为进入第一原状 态;步骤204:脚本向应用程序注册第二事件触发器,并设置在第二事件触发器的触 发事件结束后,人工智能行为的原状态为第二原状态;步骤205 应用程序触发第二事件触发器;步骤206 第二事件触发器的触发事件执行结束后,人工智能行为进入第二原状 态;步骤207 脚本向应用程序注册第三事件触发器,并设置在第三事件触发器的触 发事件结束后,人工智能行为的原状态为第三原状态;步骤208 应用程序触发第三事件触发器;步骤209 第三事件触发器的触发事件执行结束后,人工智能行为进入第三原状 态。通过步骤201至步骤209,人工智能行为完成了由第一原状态向第三原状态的迁移。下面以一个具体实例对本发明实施例进行详细说明。在具体实例中,人工智能行 为是一次护送任务,在这次护送任务中,有一个具备人工智能的Npc :A,玩家需要将Npc =A 从地图的一点PO护送到另一点P1。玩家获取这次护送任务后,Npc =A将会对玩家说一句 话,然后开始沿着指定路线移动到Pl。途中玩家必须一直在Npc :A附近,Npc :A会随机与 玩家聊天。如果途中有怪物攻击Npc :A, Npc =A要向玩家求救,并主动反击怪物,直至消灭 怪物。请参考图3,为具体实例中护送任务的原状态示意图。其中,301为站立状态,302 为寻路状态,303为防御状态。Sl表示Npc =A开始进入站立状态,S2表示Npc =A从站立状 态迁移至寻路状态,S3表示Npc =A仍然处于寻路状态,S4表示Npc =A从寻路状态迁移至防 御状态,S5表示从防御状态迁移至寻路状态,S6表示Npc =A仍然处于防御状态。当Npc :A处于寻路状态时,若Npc :A受到了攻击,Npc :A迁移至防御状态,若Npc A未受到攻击,Npc :A仍然处于寻路状态,继续移动位置。当Npc :A处于防御状态时,若不 再受到攻击,Npc =A迁移至寻路状态,继续移动位置,若仍然受到攻击,Npc :A仍然处于防御 状态。请参考图4,为本发明实施例提供的另一种网络游戏人工智能的实现方法流程图, 可以包括以下步骤步骤401 脚本向网络游戏程序注册初始事件触发器,并设置在初始触发事件结 束后,护送任务的原状态为站立状态;初始事件触发器的初始触发条件是延时1秒钟,初始触发事件是Npc =A向玩家说一句话。在具体实例中,Npc =A向玩家说的话是“我们出发吧。”。步骤402 网络游戏程序触发脚本注册的初始事件触发器;初始事件触发器被触发后,Npc :A将在1秒钟后在计算机显示屏上向玩家提示“我 们出发吧。”。步骤403 初始触发事件执行结束后,Npc =A进入站立状态;步骤404 脚本向网络游戏程序注册一个寻路触发器以及一个被怪物攻击的触发 器;若网络游戏程序触发寻路触发器,护送任务的原状态为寻路状态,若网络游戏程 序触发被怪物攻击的触发器,护送任务的原状态为防御状态。步骤405 网络游戏程序触发寻路触发器的触发事件;步骤406 当步骤405中的触发事件执行结束后,Npc =A进入寻路状态;Npc :A在寻路状态中,将按照脚本在注册寻路触发器时设置的坐标进行寻路。 Npc =A在寻路过程中完成位置切换,并与玩家随机说一些话。步骤407 脚本删除已注册的寻路触发器,重新注册一个寻路触发器,并设置在重 新注册的寻路触发器的触发事件结束后,护送任务的原状态仍然为寻路状态;步骤408 网络游戏程序触发重新注册的寻路触发器的触发事件;步骤409 重新注册的寻路触发器的触发事件执行结束后,Npc =A仍然保持寻路状 态;此时,Npc =A将会按照脚本在重新注册寻路触发器时设置的坐标进行寻路。步骤410 脚本删除已注册的所有触发器,向网络游戏程序注册一个时间触发器 以及一个被怪物攻击的触发器;若网络游戏程序触发时间触发器,时间触发器的触发事件是每5秒钟检查一次是 否受到攻击,若是,进入步骤411,否则,返回步骤404。若网络游戏程序触发被怪物攻击的触发器,护送任务的原状态为防御状态,进入 步骤411。步骤411 =Npc =A进入防御状态;步骤412 脚本删除已注册的触发器,向网络游戏程序注册一个新的寻路触发器 以及一个被怪物攻击的触发器;若网络游戏程序触发寻路触发器,护送任务的原状态为寻路状态,返回步骤405。 若网络游戏程序触发被怪物攻击的触发器,护送任务的原状态为防御状态,返回步骤411。需要指出的是,在上述具体实例中,一旦Npc :A寻路后移动到了位置P1,上述过程 将会结束,脚本退出代码空间,从而完成了整个人工智能的护送任务。下面给出一个上述具体实例的Lua脚本具体实例。function AIStart()
Clear AICondition(-1,-1 )-删除已注册的所有触发器 SetGuardLevel( AiNpcIdx, 2)--设置当前 Npc 为无敌状态 SetTimeCondition(AI ACT TIME PERIOD, "eventBirthTalk", 1 ) 一设置 1 秒
延时触发器
SetAIState( AI STATE NONE )-设置当前状态为站立
end
function eventBirthTalk() Clear AICondition(-1,-1 ) PlayerIndex = checkGuardPlayer() if ( PlayerIndex > 0 ) then
NpcSay( AiNpcIdx, GetName().·"我们出发吧。“)-Npc 对玩家 说话activateplayer(Playerlndex)
local nWorldld, nX, nY = GetNpcWorldPos( AiNpcIdx ) local nNpcType = GetNpcTask( AiNpcIdx, 1 ) SetGuardLevel( AiNpcIdx, 0 )-取消 Npc 的无敌状态 SetNpcTask( AiNpcIdx, 2, 0 )
--设置寻路触发器
SetRouteCondition( AI ACT ROUTE DES, "eventAckStatelnWorldld, NPC—ROUTE—POS[nNpcType][ 1 ].x*32,NPC ROUTE POS[nNpcType][l].y*32, 1)
--设置被其他Npc攻击的触发器
SetAttackCondition(AI_ACT_ATTACK_NPC,
"eventFreeMonsterAttack")
SetAIState( AI_STATE_ROUTE )-设置当前状态为寻路状态
else
SetAIState( AI_STATE—NONE)
end
end
function eventAckState 1 (step)
PlayerIndex = checkGuardPlayer() if ( PlayerIndex > O ) then
local nNpcType = GetNpcTask( AiNpcIdx, 1 )
if ( step < getn(NPC_ROUTE_POS [nNpcType]) ) then -判断还没有走到
最终点
ClearAICondition( AI_CONDITION_ROUTE, -1 )-删除原有寻路条

local nRank = random( 1, 100 )
if ( nRank <= 50 ) then —随机说一句话nRank = random( 1’ getn(NPC—FREE—SAY)) NpcSay( AiNpcIdx5 NPC FREE SAY[nRank])
end
activateplayer(Playerlndex)
local nWorldld, nX, nY = GetNpcWorldPos( AiNpcIdx) SetNpcTask( AiNpcIdx, 2, step )
--设置寻路触发器
SetRouteCondition( AI_ACT_ROUTE_DES, " event AckState 1", nWorldld,NPC—ROUTE POS[nNpcType][step+l].x*32,
NPC_ROUTE_POS[nNpcType][step + l].y*32, step + 1 )
SetAIState( AI_STATE_ROUTE ) -设置当前状态为寻路状态 else-判断走到了最终点 ClearAICondition(-1, -1 )
--对玩家说感谢的话
NpcSay( AiNpcIdx,"过了 这座桥我就安全了 "..GetName().."谢谢你!
“)
awardPlayer( PlayerIndex)
--设置10秒钟后消失的触发器
SetTimeCondition( AI ACT TIME PERIOD, "eventResetNpc", 10 ) SetAIState( AI—STATE—NONE ) -设置当前状态为站立状态
end
else
SetAIState( AI STATE NONE )
end
_. 6 d O η⑴ efunction eventFreeMonsterAttack()
ClearAICondition(-1, -1 )-删除所有触发器 PlayerIndex = checkGuardPlayer() if (PlayerIndex > 0 ) then
NpcSay( AiNpcIdx, GetName().·"救命啊,我要反击!“)-向玩家求救 activateplayer(Playerlndex)
--设置了时间触发器,每5秒检查是否任然受到攻击 SetTimeCondition(AI_ACT_TIME_PERIOD,
"eventCheckFreeMonsterAttack", 5 )
-设置了一个被怪物攻击的触发器
SetAttackCondition(AI_ACT_ATTACK_NPC,
"eventFreeMonsterAttackRefresh")
_-SetTargetCondition( Al—TARGET—LOSE—PLAYER, "eventLostTarget") local nWorldld, nX, nY = GetNpcWorldPos( AiNpcIdx ) SetNpcOriPos( AiNpcIdx, nX, nY )
SetAIState( AI_STATE_DEFEND )-设置当前状态为防御状态
else
SetAIState( AI STATE NONE)
end
end
function eventCheckFreeMonsterAttack() ClearAICondition(-1, -1 ) PlayerIndex = checkGuardPlayer() if (PlayerIndex > 0 ) then
NpcSay(AiNpcIdx, ’1 终于安全了,”..GetName().."我得救了!“) activateplayer(Playerlndex)local nWorldld, nX, nY = GetNpcWorldPos( AiNpcIdx) local nNpcType = GetNpcTask( AiNpcIdx, 1 ) local step = GetNpcTask( AiNpcIdx, 2 )
SetRouteCondition( AI ACT ROUTE DES, "eventAckStatelnWorldld, NPC_ROUTE_POS [nNpcType] [step+l].x*32,
NPC_ROUTE_POS[nNpcType][step + l].y*32,step + 1 )
SetAttackCondition(Al—ACT_ATTACK_NPC,
"eventFreeMonsterAttack")
SetAIState( Al—STATE_ROUTE)
else
SetAIState( AI_STATE_NONE)
end
end
function eventFreeMonsterAttackRefresh() ClearAICondition(-1,-1 ) PlayerIndex = checkGuardPlayer() if ( PlayerIndex > 0 ) then
NpcSay( AiNpcIdx, GetName().."还在攻击我! ’’)-Npc 向玩家求救
--设置5秒延时时间触发器
SetTimeCondition(AIACTTIMEPERIOD,
"eventCheckFreeMonsterAttack", 5 )
-设置被攻击触发器
SetAttackCondition(Al—ACT—ATTACK—NPC,
"eventFreeMonsterAttackRefresh")
SetAIState( AI STATE DEFEND)
else
SetAIState( AI_STATE_NONE)
end
end 在上述Lua脚本具体实例中,原状态可以包括AI__STATE__N0NE = 0--站立状态
AI__STATE__FREE = 1--巡逻状态
AI__STATE_,ATTACK =2—攻击状态
AI__STATE__FELL0ff =3—跟随状态
AI__STATE__R0UTE = ^t —寻路状态
AI__STATE_,DEFEND =5—防御状态其中,站立状态、巡逻状态、攻击状态、跟随状态以及寻路状态设置的方式与上代 码中的SetAIState (AI_STATE_DEFEND)相同,不再赘述。注册的事件触发器可以包括目标触发器、时间触发器、攻击触发器、受伤触发器 或者寻路触发器。其中,注册的触发条件分别为目标触发条件、时间触发条件、攻击触发条 件、受伤触发条件以及寻路触发条件。在Lua脚本语言的具体实例中,各触发条件的实现如
__Param2 :PlayerID (0 any) —NoParam
__Param2 :PlayerID(0:any)Param3 :Distance
—Param2 :Year Param3 :Month :Minte Param7 :Second ——Param2 :Second

(1)目标触发条件
AI-TARGET_FIND-PLAYER ==0
AI_TARGET_L0SE_PLAYER ==1
AI_TARGET_NEAR_PLAYER ==2
(2)时间触发条件
AI_ACT_TIME_P0INT = 0
Param4 :Day Param5 :HourParam6
AI_ACT_TIME_PERI0D = 1
(3)攻击触发条件
AI_ACT_ATTACK_PLAYER =0
AI_ACT_ATTACK_NPC = 1
(4)受伤触发条件
AI_ACT_DAMAGE_VALUE_PLAYER = 0
__Param2 :PlayerID(0:any) ——NoParam
value)Param3 :PlayerID(O:any)Al—ACT—DAMAGE—LOW—BLOOD—PLAYER = 1 —Param2 :LifeValue (must low this value) Param3 :PlayerID (O:any)(5)寻路触发条件Al—ACT_R0UTE—DES = O —Param2 :WorldID Param3 :WorldPosX Param4 WorldPosY Param5 :FeedBackParam其中,目标触发条件、攻击触发条件、受伤触发条件以及寻路触发条件的注册与上 述代码中 SetTimeCondition (AI_ACT_TIME_PERI0D,“ eventCheckFreeMonsterAttack", 5)相同,不再赘述。
需要指出的是,本发明实施例可以使用的脚本语言还可以是python或者java。应 用程序除了网络游戏之外,还可以是自动清洁机器人的应用程序。此时,其人工智能行为的 原状态可以包括充电状态、移动清洁状态以及卸载垃圾状态。请参考图5,为自动清洁机 器人人工智能行为的原状态示意图。其中,501为充电状态,502为移动清洁状态,503为卸 载状态。可以看出,在本发明实施例中,通过向网络游戏程序注册至少一个事件触发器,并 设置分别对应于至少一个事件触发器的原状态,网络游戏程序触发注册的一个事件触发器 以及当被触发的事件触发器的触发事件执行结束后,人工智能行为进入对应于被触发的事 件触发器的原状态这些步骤,无需对网络游戏程序进行重新编译、调试以及测试,就可以实 现网络游戏的人工智能,实现简单,节约成本。此外,本发明实施例提供的方法可以在各种应用程序上实现复杂的人工智能行 为,实现灵活,同时兼顾了应用程序的运行效率,可扩展,易用性强,易于维护。请参考图6,为本发明实施例提供的一种应用程序人工智能的实现装置结构示意 图,可以包括注册单元601,用于向应用程序注册至少一个事件触发器,所述事件触发器是一组 触发条件及与所述触发条件对应的触发事件的集合,或一组触发事件的集合;第一设置单元602,用于设置分别对应于所述至少一个事件触发器的原状态,所述 原状态是一组完成人工智能行为的最小状态集合;接受触发单元603,用于接受所述应用程序的触发,所述应用程序触发了注册单元 注册的一个事件触发器;执行单元604,用于执行所述应用程序触发的一个事件触发器的触发事件,以使人 工智能行为进入对应于被触发的事件触发器的原状态。可以看出,在本发明实施例中,通过注册单元601、第一设置单元602、接受触发单 元603以及执行单元604执行的操作,无需对应用程序进行重新编译、调试以及测试,就可 以实现应用程序的人工智能,实现简单,节约成本。请参考图7,为本发明实施例提供的另一种网络游戏人工智能的实现装置结构示 意图,在图6的基础上,还可以包括删除单元701,用于在所述执行单元604执行操作之后,删除已注册的所述至少一 个事件触发器。第二设置单元702,用于在所述注册单元601执行操作的过程中,设置所述人工智 能行为下一次移动的坐标。所述第一设置单元602可以包括第三设置子单元602-1,用于设置站立状态;或者,第四设置子单元602-2,用于设置巡逻状态;或者,第五设置子单元602-3,用于设置攻击状态;或者,第六设置子单元602-4,用于设置跟随状态;
或者,第七设置子单元602-5,用于设置寻路状态;或者,第八设置子单元602-6,用于设置防御状态。所述注册单元601可以包括第一注册子单元601-1,用于向所述应用程序注册目标触发器;或者,第二注册子单元601-2,用于向所述应用程序注册时间触发器;或者,第三注册子单元601-3,用于向所述应用程序注册攻击触发器;或者,第四注册子单元601-4,用于向所述应用程序注册受伤触发器;或者,第五注册子单元601-5,用于向所述应用程序注册寻路触发器。可以看出,在本发明实施例中,通过向应用程序注册至少一个事件触发器,并设置 分别对应于至少一个事件触发器的原状态,应用程序触发注册的一个事件触发器以及当被 触发的事件触发器的触发事件执行结束后,人工智能行为进入对应于被触发的事件触发器 的原状态这些步骤,无需对应用程序进行重新编译、调试以及测试,就可以实现应用程序的 人工智能,实现简单,节约成本。此外,本发明实施例提供的方法可以在各种应用程序上实现复杂的人工智能行 为,实现灵活,同时兼顾了应用程序的运行效率,可扩展,易用性强,易于维护。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将 一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作 之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体 意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括 那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或
者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......,”限定的要素,
并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借 助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施,但很多情况下 前者是更佳的实施方式。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部 或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如 ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务 器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。以上对本发明进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方 式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对 于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变 之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种应用程序人工智能的实现方法,其特征在于,所述方法包括向应用程序注册至少一个事件触发器,并设置分别对应于所述至少一个事件触发器的 原状态,所述原状态是一组完成人工智能行为的最小状态集合,所述事件触发器是一组触 发条件及与所述触发条件对应的触发事件的集合,或一组触发事件的集合;所述应用程序触发注册的一个事件触发器;当被触发的事件触发器的触发事件执行结束后,人工智能行为进入对应于所述被触发 的事件触发器的原状态。
2.根据权利要求1所述的方法,其特征在于,在所述人工智能行为进入对应于所述被 触发的事件触发器的原状态之后,所述方法还包括删除已注册的所述至少一个事件触发器。
3.根据权利要求1所述的方法,其特征在于,在所述向应用程序注册至少一个事件触 发器的过程中,所述方法还包括设置所述人工智能行为下一次移动的坐标。
4.根据权利要求1所述的方法,其特征在于,所述原状态包括站立状态、巡逻状态、攻 击状态、跟随状态、寻路状态或者防御状态。
5.根据权利要求1所述的方法,其特征在于,所述事件触发器包括目标触发器、时间 触发器、攻击触发器、受伤触发器或者寻路触发器。
6.一种应用程序人工智能的实现装置,其特征在于,所述装置包括注册单元,用于向应用程序注册至少一个事件触发器,所述事件触发器是一组触发条 件及与所述触发条件对应的触发事件的集合,或一组触发事件的集合;第一设置单元,用于设置分别对应于所述至少一个事件触发器的原状态,所述原状态 是一组完成人工智能行为的最小状态集合;接受触发单元,用于接受所述应用程序的触发,所述应用程序触发了注册单元注册的 一个事件触发器;执行单元,用于执行所述应用程序触发的一个事件触发器的触发事件,以使人工智能 行为进入对应于被触发的事件触发器的原状态。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括删除单元,用于在所述执行单元执行操作之后,删除已注册的所述至少一个事件触发器。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括第二设置单元,用于在所述注册单元执行操作的过程中,设置所述人工智能行为下一 次移动的坐标。
9.根据权利要求6所述的装置,其特征在于,所述第一设置单元包括第三设置子单元,用于设置站立状态;或者,第四设置子单元,用于设置巡逻状态;或者,第五设置子单元,用于设置攻击状态;或者,第六设置子单元,用于设置跟随状态; 或者,第七设置子单元,用于设置寻路状态; 或者,第八设置子单元,用于设置防御状态。
10.根据权利要求6所述的装置,其特征在于,所述注册单元包括 第一注册子单元,用于向所述应用程序注册目标触发器; 或者,第二注册子单元,用于向所述应用程序注册时间触发器; 或者,第三注册子单元,用于向所述应用程序注册攻击触发器; 或者,第四注册子单元,用于向所述应用程序注册受伤触发器; 或者,第五注册子单元,用于向所述应用程序注册寻路触发器。
全文摘要
本发明公开了应用程序人工智能的实现方法及装置,所述方法包括向应用程序注册至少一个事件触发器,并设置分别对应于所述至少一个事件触发器的原状态,所述原状态是一组完成人工智能行为的最小状态集合,所述事件触发器是一组触发条件及与所述触发条件对应的触发事件的集合,或一组触发事件的集合;所述应用程序触发注册的一个事件触发器;当被触发的事件触发器的触发事件执行结束后,人工智能行为进入对应于所述被触发的事件触发器的原状态。本发明实现简单,节约成本。
文档编号G06F9/44GK102073487SQ20091023870
公开日2011年5月25日 申请日期2009年11月20日 优先权日2009年11月20日
发明者马亦宁 申请人:北京金山数字娱乐科技有限公司, 北京金山软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1