CABSL——BHuman自创语言

函数的命名

当我们创建新的文件(新函数)时,文件中可同时包含多个函数(option),但其中一个函数的命名必须与文件名相同,如:Striker.h中包含了Striker(即option(Striker))函数。

函数的描述

在BHuman中,函数的描述必须被写于option以内

创建无参函数(可参照LookForward())

option(函数名)

创建带参函数(可参照WalkToTarget())

option(函数名,(形参1类型)形参1名称,(形参2类型)形参2名称,...)

函数的描述

state

BHuman中,创建的函数大多为了实现某个行为,
如扭头、踢球等。例如,扭头又可以分为细致的几个动作:
向左80°->向前看->向右80°->向前...
根据这样特点,我们可以把扭头这个动作分为几个State

initial_state

第一个执行的"state"

target_state

最后一个执行的"state"

aborted_state

action

在把一个动作分为细致的几个动作并建立相应的state后,需要把每个state要求作出的动作函数写在以"action"开头的复合语句中。

transition

一个"state"中需要把条件语句写在以"transition"开头的复合语句中,进行"state"的跳转;
若每个"state"都需要执行相同的条件语句,可以把这些条件语句新建一个"common_transition"的复合语句。

action & transition

在执行action中复合语句同时,transition中复合语句也在执行;
当transition中某个条件满足时,就会跳入此条件语句指定的state。

transition&action的对话

action的执行情况可用以下关键字告知transition进行转换:
option_time        整型数据,表示当前option执行了多长时间;
state_time        整型数据,表示当前state执行了多长时间
!以上二者单位为ms,即1000=1s
action_done        bool型数据,默认为false,表示action中最后一个调用的函数语句是否已经执行到target_state;
△ 若不涉及target_state,则无法跳出!
action_absorted        bool型数据,与aborted_state对应。
aborted_state应用于当一个state执行的函数的行为受到干扰,则可添加aborted_state提供相应的措施。


common_transition判断需要一定的时间!

注:13~15行处,使得5s后跳转到turnToBall,而非20s后。即在函数(option)中存在target_state且转入target_state则调用的action中直接跳出当前state。