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>