最近开发一个机器人程序,其主要功能是模拟玩家在地图上跑动用来测试地图压力。主要功能代码如下:
loop(State) ->
#state{robot_state = RobotState} = State,
case RobotState of
born ->
NewState = robot_born(State),
NextRobotState = get_next_robot_state(),
erlang:send_after(random:uniform(3000), self(), loop),
NewState#state{robot_state = NextRobotState};
move ->
robot_move(State),
State;
move_to_npc ->
robot_move_to_npc(State),
State;
_ ->
todo
end.
robot_move_to_npc(State) ->
#state{robot_player_id = RobotPlayerID, send_socket = _SendSocket} = State,
{CurMapDataID, CX, CY} = get_cur_robot_pos(State),
{TX, TY} = get_a_npc_point(CurMapDataID, CX, CY),
PathList = aStar:find_path(CurMapDataID, CX div 100, CY div 100, TX, TY),
case PathList of
[] ->
erlang:send_after(5000, self(), loop)