def moves(gcode_command):
    """
    determine if a gcode command involves movement - i.e., if it has an x, y, or z parameter
    :param gcode_command: gcode 'Command' object to analyze movement for
    :type gcode_command: Command
    :return: whether or not the command involves any movement
    :rtype: bool
    """

    if gcode_command.get_command() in ("G0", "G1"):
        if gcode_command.has_param("X") and gcode_command.get_param("X") > 0:  # there is movement in the x direction
            return True
        elif gcode_command.has_param("Y") and gcode_command.get_param("Y") > 0:  # there is movement in the y direction
            return True
        elif gcode_command.has_param("Z") and gcode_command.get_param("Z") > 0:  # there is movement in the z direction
            return True

    return False