Grazie KillerWorm! Farò tesoro di tutte le tue correzioni e suggerimenti un po' alla volta.
Intanto ho usato per la prima volta console.log(dy) e ho constato che effettivamente dy cambia segno al verificarsi delle condizioni. Questo fatto mi ha spinto a provarle tutte! Ho, tra l'altro, usato i valori assoluti Math.round(y) e ho spostato le condizioni prima di y=y+dy;
x=x+dx;
var alfa=angolo.value;
dy=dx*Math.tan(alfa*3.14159/180);
if (x==1290 || x==200){dx=-dx}
if (Math.round(y)==550 || Math.round(y)==10){dy=-dy}
y=y+dy;
ottenendo che il punto mobile strisci lungo la linea in alto e quella in basso, perché, logicamente, la condizione diventa alternativamente True e False.
Ho poi notato che se, come mi suggerisci, tolgo PUBLIC in <!DOCTYPE html PUBLIC> non vengono eseguite alcune istruzioni come
<P style="background:yellow; width:1100; height:550; border:3px red double; position:absolute; left:200px; top:10px;"></P>
e scompare il rettangolo giallo.
Penso che convenga tralasciare questo mio esercizio e studiare il programma che tu gentilmente mi hai inviato.
Ma ho ancora bisogno del tuo aiuto perché quando copio il tuo programma e poi lo incollo viene "sdentato" nel senso che perde la indentatura. C'è qualche modo che, incollando, permetta di conservare la indentatura? O c'è per caso anche il modo di provarlo direttamente nel Forum? Grazie
lanvoel
codice:<!DOCTYPE html PUBLIC> <html> <head> <script language=JavaScript> var oggetto; var intervallo; var x=200;var y=250; var dx=1;var dy=1; function avvia() { velo=testo1.value; intervallo=window.setInterval("muovi()",velo); } function muovi() { oggetto=document.getElementById("para1"); x=x+dx; var alfa=angolo.value; dy=dx*Math.tan(alfa*3.14159/180); if (x==1290 || x==200){dx=-dx} if (Math.round(y)==550 || Math.round(y)==10){dy=-dy} y=y+dy; oggetto.style.position="absolute"; oggetto.style.top =y; oggetto.style.left =x; testo2.value=Math.round(y); testo3.value= (Math.round(y)==550 || Math.round(y)==10); } function ferma1() { clearInterval(intervallo); } </script </head> <body> controllo valori di y (top)<input type="text" name="testo2" id="testo2" size=25> controllo condizione (Math.round(y)==550 || Math.round(y)==10)<input type="text" name="testo3" id="testo3" size=15><br><br> <input type="button" name="pulsanre1" id="pulsante1" value="avvia" onclick="avvia()"><br> <br> velocità (alta:1 bassa:200)<br> <input type="text" name="testo1" id="testo1" size=20><br><br> angolo di partenza in gradi:<br> <input type="text" name="angolo" id="angolo" size=10><br><br> <input type="button" name="pulsante2" id="pulsante2" value="ferma" onclick="ferma1()"> <P style="background:yellow; width:1100; height:550; border:3px red double; position:absolute; left:200px; top:10px;"></P> <P Style="background:red; width:10px; height:10px; border:3px blue solid; position:absolute; left:200px; top:250px;" id="para1"> </body> </htm>

Rispondi quotando