def handle_command(robot_name, command, silent=False): """ Handles a command by asking different functions to handle each command. :param robot_name: the name given to robot :param command: the command entered by user :return: `True` if the robot must continue after the command, or else `False` if robot must shutdown """ (command_name, arg) = split_command_input(command) if command_name == 'off': return False elif command_name == 'help': (do_next, command_output) = do_help() elif command_name == 'forward': (do_next, command_output) = do_forward(robot_name, int(arg)) elif command_name == 'back': (do_next, command_output) = do_back(robot_name, int(arg)) elif command_name == 'right': (do_next, command_output) = do_right_turn(robot_name) elif command_name == 'left': (do_next, command_output) = do_left_turn(robot_name) elif command_name == 'sprint': (do_next, command_output) = do_sprint(robot_name, int(arg)) elif command_name == 'replay': (do_next, command_output) = do_replay(robot_name, arg) elif command_name == 'mazerun': (do_next, command_output) = do_mazerun(robot_name, arg) if not silent: print(command_output) world.show_position(robot_name) return do_next
def handle_command(robot_name, command): """ Handles a command by asking different functions to handle each command. :param robot_name: the name given to robot :param command: the command entered by user :return: `True` if the robot must continue after the command, or else `False` if robot must shutdown """ (command_name, arg) = split_command_input(command) if command_name == 'off': return False else: (do_next, command_output) = call_command(command_name, arg, robot_name) print(command_output) world.show_position(robot_name) add_to_history(command) return do_next
def do_replay(robot_name, arguments): """ Replays historic commands :param robot_name: :param arguments a string containing arguments for the replay command :return: True, output string """ silent = arguments.lower().find('silent') > -1 reverse = arguments.lower().find('reversed') > -1 range_args = arguments.lower().replace('silent', '').replace('reversed', '') range_start = None range_end = None if len(range_args.strip()) > 0: if is_int(range_args): range_start = -int(range_args) else: range_args = range_args.split('-') range_start = -int(range_args[0]) range_end = -int(range_args[1]) commands_to_replay = get_commands_history(reverse, range_start, range_end) for (command_name, command_arg) in commands_to_replay: (do_next, command_output) = call_command(command_name, command_arg, robot_name) if not silent: print(command_output) world.show_position(robot_name) return True, ' > ' + robot_name + ' replayed ' + str( len(commands_to_replay)) + ' commands' + (' in reverse' if reverse else '') + (' silently.' if silent else '.')