有限状态机
它代表有限数量的状态以及各个状态之间进行跳转的动作。举个例子来说,我们现在躺在床上,然后需要关灯睡觉,那么接下来我们要穿上鞋子,当穿好鞋子之后应该走到开关前,当走到开关前面之后,最后再把灯关掉。在完成这个动作的过程中,我们有三个状态,躺在床上,穿鞋子,走到开关前。接下来用一张流程图来进行形象的说明
有限状态机在Task中的应用
有限状态机的应用贯穿了整个task层,接下来我就以角球的脚本进行讲解,首先来看一下task层的脚本中有限状态机的体现以及应用
角球1
战术示意图
用自然语言来描述就是说守门员和后卫都是在自己半场做防守,前锋到罚球点去拿球,同时中场在另外一边接球,持球装置瞄准一个特定的坐标点(我程序里设定的是(255,0)),然后使用挑射将球传到另外一边,中场使用最小二乘法拟合出高尔夫球的路径并在预定接球点等球,并且此时中场的持球装置是一直对着对方球门的,只要中场车一接到球就马上射门,这样可以最大程度上提高接球率。task层程序如下图
这份代码对于有限状态机的实现十分清晰,蓝色框里面就是不同的状态
switch = function()
if A then
B
end
end,
这一段语句就是状态机的跳转条件,A是状态跳转条件,B是下一个要转入的状态,在每个状态开头都会有这个判断语句,用来跳出当前所在状态 最后一个状态就是finish状态,就是相当于该脚本执行结束了。
角球2
战术示意图
自然语言描述:守门员和后卫都是在自己半场做防守,前锋到罚球点去拿球,同时中场以阿基米德螺旋轨迹运动到另外半场,并且在公转的同时进行自传,前锋瞄准一个特定的坐标点(我程序里设定的是(255,0)),然后使用挑射将球传到另外一边,在前锋开球之后,中场马上进入接球状态,根据最小二乘法拟合出来的高尔夫球的轨迹去接球,此时中场的持球装置就一直对着对方的球门了,以提高自己的射门命中率。
有限状态机的实现
角球3
战术示意图
自然语言描述:守门员和后卫都是在自己半场做防守,前锋到罚球点去拿球,同时中场在另外半场绕特定的圆心做圆周运动,同时也进行自转,前锋瞄准一个特定的坐标点(我程序里设定的是(255,0)),然后使用挑射将球传到另外一边,在前锋开球之后,中场马上进入接球状态,中场根据最小二乘法拟合出来的高尔夫球的轨迹去接球,此时中场的持球装置就一直对着对方的球门了,以提高自己的射门命中率。
有限状态机的实现
(づ ̄3 ̄)づ╭❤~一键三连,这次一定(๑•̀ㅂ•́)و✧