<?xml version="1.0" encoding="UTF-8"?>
<scriptfile>
    <settings program="actiona" version="3.10.0" scriptVersion="1.1.0" os="Windows"/>
    <actions>
        <action name="ActionCode" version="1.0.0"/>
    </actions>
    <parameters/>
    <resources/>
    <script pauseBefore="0" pauseAfter="0">
        <action name="ActionCode" comment="trajet A =&gt; B via N points (ordre aléatoire)">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="code">
                <subParameter name="value" code="1">

// = = = = = 
mini_move = 10 // en pixels
mini_wait = 50 // en milli seconds
var souris=new Mouse()
// = = = = = 


// = = = = =
var A= new Point(); // Le point de départ
	A.x =10;A.y = 100;
var B= new Point(); // Le point d'arrivée
	B.x = 900;B.y = 600; 
var M= new Point(); // Le point calculé à chaque mini déplacement

// Les X,Y des N points choisis aléatoirement
X = [];
Y=[];

X[0] = 750;
X[1] = 650;
X[2] = 50;
X[3] = 90;


Y[0] = 325;
Y[1] = 600;
Y[2] = 750;
Y[3] = 320;
// = = = = =


if (Y.length != X.length){
Console.print(&quot;Il faut autant de X que de Y&quot;)
Execution.stop();
}


nb_segments  = X.length+1;
for (I=0;I&lt;nb_segments;I++) {

// calcul de M1
switch (I) {
case 0 :
     M1=  A.clone();
break;
default :
    M1=  M2.clone();   
} // FIN switch
       

// calcul de M2
switch (I) {
case nb_segments-1 :
     M2=  B.clone();
break;
default :
    num_alea=   Math.floor((Math. random())*X.length);
	var M2= new Point();
	M2.x = X[num_alea];
	M2.y =Y[num_alea];		
       // Virer le point qui vient d etre utilisé
	X. splice(num_alea, 1)
	Y.splice(num_alea, 1)
} // FIN switch

Console.print(M2)
lg_2 = Math.pow(M2.x-M1.x, 2) + Math.pow(M2.y-M1.y, 2)
lg  = Math.pow(lg_2,.5) 

nb_minis = Math.floor(lg / mini_move)
for (i=0;i&lt;nb_minis;i++) {
M.x =  M1.x +( M2.x-M1.x) * i  / nb_minis
M.y =  M1.y +( M2.y-M1.y) * i  / nb_minis


souris.move(M);
Execution.pause(mini_wait);

} // FIN for niveau 2
} // FIN for niveau 1




</subParameter>
            </parameter>
        </action>
    </script>
</scriptfile>
