Striker
进入上篇文章提到的Options下的Roles。发现其中自带一个Striker.h文件
下面我们模拟一下比赛的过程
首先返回Options目录
进入GameControl。比赛开始进入ready状态执行ReadyState.h
/** behavior for the ready state */
option(ReadyState)
{
/* position has been reached -> stand and wait */
initial_state(stand)
{
action
{
theHeadControlMode = HeadControl::lookForward;
Stand();
}
}
}
此时机器人头朝前且站立,play状态时执行PlayingState.h
option(PlayingState)
{
initial_state(demo)
{
action
{
Demo();
}
}
}
我们找到option(Demo),发现它直接跳转到Striker.h(分析见代码注释)
/** A test striker option without common decision */
option(Striker)
{
initial_state(start) //初始化状态start
{
transition
{
if(state_time > 1000) //当此状态停留时间超过1000ms,跳到turnToBall状态
goto turnToBall;
}
action
{
theHeadControlMode = HeadControl::lookForward; //状态跳转之前头朝前站立
Stand();
}
}
state(turnToBall)
{
transition //调用相关representations接口进行判断然后跳转状态
{
if(theLibCodeRelease.timeSinceBallWasSeen > theBehaviorParameters.ballNotSeenTimeOut)