Я использую robo-soccer, который использует gen_fsm для представления стратегии каждого робота.
Я разработал стратегию для атакующего. Теперь я хочу использовать одну и ту же стратегию для запуска нескольких атакующих, скажем, 5 атакующих. Для этого мне нужно скопировать один и тот же код gen_fsm (200 строк) в 5 разных модулях, в результате чего получается всего 1000 строк кода.
Есть ли способ написать gen_fsm и повторно использовать в нескольких модулях?
Пример кода:
-module(planner).
-behaviour(gen_fsm).
start() ->
start_link().
start_link() ->
gen_fsm:start_link({local, ?SERVER}, ?MODULE, [], []).
init([]) ->
{ok, state1, ets:new(test,[public])}.
state1({test},State) ->
case ets:lookup(State,ball) of
[] ->
action!{turn,80},
{next_state,state1,State};
Data ->
% some code % %,
{next_state,state2,State}
end;
state2({test},State) ->
% --- some code ---%