<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <script type="text/javascript"> var TimeId,x=4,y=4,vx,vy,c=0,r,e; function stop(){ clearTimeout(TimeId); } function move(){ TimeId=setTimeout("move()",100); var dx,dy,obj,a,v; a=document.getElementById("kakudo").value; v=document.getElementById("hayasa").value; e=document.getElementById("hanpatsu").value; if (c==0) { r=a*Math.PI/180; vx=v*Math.cos(r); vy=v*Math.sin(r); c=1; } vy=vy-4.9; x=x+vx; y=y+vy; obj=document.getElementById("ball"); obj.style.left=20+x; obj.style.top=50+400-10-y; hansha(x,y); if (x+10+20>=document.body.clientWidth) { vx=-e*vx; x=document.body.clientWidth-30; obj.style.left=20+x; } if (x<=-20) { vx=-e*vx; x=-20; obj.style.left=20+x; } if (50+400-y>=document.body.clientHeight) { vy=-e*vy; y=440-document.body.clientHeight+10; obj.style.top=50+400-10-y; } if (y>50+400-10) { vy=-e*vy; y=440; obj.style.top=50+400-10-y; } } function set(){ var obj; x=4; y=4; c=0; obj=document.getElementById("ball"); obj.style.left=20+4; obj.style.top=50+400-10-4; } function hansha(x1,y1){ var x0,y0,ga,gc,tatekyori,yokokyori,kabekyori,tateFrag=false,yokoFrag=false,kabeFrag=false,obj; x0=x1-vx; y0=y1-vy; ga=(y1-y0)/(x1-x0); gc=y1-(y1-y0)/(x1-x0)*x1; tatekyori=Math.sqrt(Math.pow(x0,2)+Math.pow((gc-y0),2)); yokokyori=Math.sqrt(Math.pow(((-gc/ga)-x0),2)+Math.pow(y0,2)); kabekyori=Math.sqrt(Math.pow((x0-790),2)+Math.pow(((790*ga+gc)-y0),2)); if (gc>=0 && gc<=390) { if (x0<-10 && x1>=-10 || x0>=4 && x1<4) { tateFrag=true; } } if (-gc/ga>=0 && -gc/ga<=790) { if (y0<-10 && y1>=-10 || y0>=4 && y1<4) { yokoFrag=true; } } if (790*ga+gc>=0 && 790*ga+gc<=258) { if (x0<786 && x1>=786 || x0>=800 && x1<800) { kabeFrag=true; } } if (tateFrag) { if (yokoFrag && tatekyori>yokokyori) { } else if (kabeFrag && tatekyori>kabekyori) { } else { if (x0<-10 && x1>=-10) { x=-10; y=ga*x+gc; vx=-e*vx; } else if (x0>=4 && x1<4) { x=4; y=ga*x+gc; vx=-e*vx; } } } if (yokoFrag) { if (tateFrag && yokokyori>tatekyori) { } else if (kabeFrag && yokokyori>kabekyori) { } else { if (y0<-10 && y1>=-10) { y=-10; x=(y-gc)/ga; vy=-e*vy; } else if (y0>=4 && y1<4) { y=4; x=(y-gc)/ga; vy=-e*vy; } } } if (kabeFrag) { if (tateFrag && kabekyori>tatekyori) { } else if (yokoFrag && kabekyori>yokokyori) { } else { if (x0<786 && x1>=786) { x=786; y=ga*x+gc; vx=-e*vx; } else if (x0>=800 && x1<800) { x=800; y=ga*x+gc; vx=-e*vx; } } } obj=document.getElementById("ball"); obj.style.left=20+x; obj.style.top=50+400-10-y; } </script> </head> <body> <form> 角度:<input id="kakudo" type="text" size="4">° 速さ:<input id="hayasa" type="text" size="4"> 反発係数:<input id="hanpatsu" type="text" size="4" value="0.99"> <input type="button" value="Start" onClick="move()"> <input type="button" value="Stop" onClick="stop()"> <input type="button" value="Reset" onClick="set()"> </form> <img src="image/axis3.png" style="position:absolute;left:20;top:50"> <script type="text/javascript"> document.write("<img id='ball' src='image/ball.png' style='position:absolute;top:436;left:24'>"); </script> </body> </html> |