有限状态机

它代表有限数量的状态以及各个状态之间进行跳转的动作。举个例子来说,我们现在躺在床上,然后需要关灯睡觉,那么接下来我们要穿上鞋子,当穿好鞋子之后应该走到开关前,当走到开关前面之后,最后再把灯关掉。在完成这个动作的过程中,我们有三个状态躺在床上穿鞋子走到开关前。接下来用一张流程图来进行形象的说明   流程图  


有限状态机在Task中的应用

有限状态机的应用贯穿了整个task层,接下来我就以角球的脚本进行讲解,首先来看一下task层的脚本中有限状态机的体现以及应用   task里状态机的应用  

角球1

战术示意图

角球1  

用自然语言来描述就是说守门员和后卫都是在自己半场做防守前锋到罚球点去拿球,同时中场在另外一边接球,持球装置瞄准一个特定的坐标点(我程序里设定的是(255,0)),然后使用挑射将球传到另外一边,中场使用最小二乘法拟合出高尔夫球的路径并在预定接球点等球,并且此时中场的持球装置是一直对着对方球门的,只要中场车一接到球就马上射门,这样可以最大程度上提高接球率。task层程序如下图

  有限状态机的代码实现  

这份代码对于有限状态机的实现十分清晰,蓝色框里面就是不同的状态  

switch = function()
		if A then
			B
		end
end,

这一段语句就是状态机的跳转条件,A是状态跳转条件,B是下一个要转入的状态,在每个状态开头都会有这个判断语句,用来跳出当前所在状态 最后一个状态就是finish状态,就是相当于该脚本执行结束了。  

角球2

战术示意图  

角球2  

自然语言描述:守门员和后卫都是在自己半场做防守前锋到罚球点去拿球,同时中场以阿基米德螺旋轨迹运动到另外半场,并且在公转的同时进行自传,前锋瞄准一个特定的坐标点(我程序里设定的是(255,0)),然后使用挑射将球传到另外一边,在前锋开球之后,中场马上进入接球状态,根据最小二乘法拟合出来的高尔夫球的轨迹去接球,此时中场的持球装置就一直对着对方的球门了,以提高自己的射门命中率。  

有限状态机的实现

  角球2有限状态机  

角球3

战术示意图

  角球3  

自然语言描述:守门员和后卫都是在自己半场做防守前锋到罚球点去拿球,同时中场在另外半场绕特定的圆心做圆周运动,同时也进行自转,前锋瞄准一个特定的坐标点(我程序里设定的是(255,0)),然后使用挑射将球传到另外一边,在前锋开球之后,中场马上进入接球状态,中场根据最小二乘法拟合出来的高尔夫球的轨迹去接球,此时中场的持球装置就一直对着对方的球门了,以提高自己的射门命中率。  

有限状态机的实现

  角球3有限状态机  


                                               (づ ̄3 ̄)づ╭❤~一键三连,这次一定(๑•̀ㅂ•́)و✧

QQ图片20210126200222