Sbagli a ricalcolare ogni volta dy su dx invece di cambiare solo il segno.
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;
var alfa=angolo.value;
dy=dx*Math.tan(alfa*3.14159/180);
intervallo=window.setInterval("muovi()",velo);
}
function muovi()
{
oggetto=document.getElementById("para1");
x=x+dx;
y=y+dy;
if (x>=1290 || x<=200){dx=-dx}
if (y>= 550 || y<=10){dy=-dy}
oggetto.style.position="absolute";
oggetto.style.top =y;
oggetto.style.left =x;
testo2.value=y;
testo3.value= (y>= 550 || y<=10);
} 
function ferma1()
{
clearInterval(intervallo);
}
</script
</head>
<body>
controllo valori di y (top)<input type="text" name="testo2" id="testo2" size=25>
controlollo condizione (y>= 550 || 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>
</html>