复制代码
代码如下:
<!-要更改此模板,请选择“工具”|“模板,然后在编辑器中打开模板。-><!DOCTYPEhtml><html><head><title>乒乓球游戏</title><metahttp-equiv=“Content-Type”content=“text/html;charset=utf-8”><脚本>varctx;varcanvas;varball_x=10;varball_y=10;varball_radius=10;varball_vx=10;varball_vy=8;varwall_x=30;varwall_y=40;varwall_width=30;varwall_height=60;varbox_x=0;varbox_y=0;varbox_width=300;varbox_height=300;varbound_left=box_x+ball_radius;
varbound_right=box_x+box_width-ball_radius;varbound_top=box_y+ball_radius;varbound_bottom=box_y+box_height-ball_radius;varunit=10;函数intersect(sx,sy,fx,fy,cx,cy,rad){vardx;vardy;vart;varrt;dx=fx-sx;dy=fy-sy;t=0.0-((((sx-cx)*dx+(sy-cy)*dy)/(dx*dx+dy*dy)));如果(t<0.0){t=0.0;}if(t>1.0)t=1.0;vardx1=(sx+t*dx)-cx;vardy1=(sy+t*dy)-cy;varrt=dx1*dx1+dy1*dy1;如果(rt<rad*rad)返回true;否则返回假;
}函数move_ball(){ball_x=ball_x+ball_vx;ball_y=ball_y+ball_vy;if(ball_x<bound_left){ball_x=bound_left;ball_vx=-ball_vx;}if(ball_x>bound_right){ball_x=bound_right;ball_vx=-ball_vx;}if(ball_y<bound_top){ball_y=bound_top;ball_vy=-ball_vy;}if(ball_y>bound_bottom){ball_y=bound_bottom;ball_vy=-ball_vy;}//撞到上边if(intersect(wall_x,wall_y,wall_x+wall_width,wall_y+wall_height,ball_x,ball_y,ball_radius)){ball_y=wall_y-ball_radius;
ball_vy=-ball_vy;}//撞到左边if(intersect(wall_x,wall_y,wall_x,wall_y+wall_height,ball_x,ball_y,ball_radius)){ball_x=wall_x-ball_radius;ball_vx=-ball_vx;}//撞到右边if(intersect(wall_x+wall_width,wall_y,wall_x+wall_width,wall_y+wall_height,ball_x,ball_y,ball_radius)){ball_x=wall_x+wall_width+ball_radius;ball_vx=-ball_vx;}//撞到下边if(intersect(wall_x,wall_y+wall_height,wall_x+wall_width,wall_y+wall_height,ball_x,ball_y,ball_radius)){ball_y=wall_y+wall_height+ball_radius;ball_vy=-ball_vy;}}函数move_wall(ev){varkeyCode;
if(event==null){keyCode=window.event.keyCode;window.event.preventDefault();}else{keyCode=event.keyCode;event.preventDefault();}switch(keyCode){case37://left;wall_x-=unit;if(wall_x<bound_left)wall_x=bound_left;打破;案例38://upwall_y-=unit;if(wall_y<bound_top)wall_y=bound_top;打破;案例39://rightwall_x+=unit;if(wall_x+wall_width>bound_right)wall_x=bound_right-wall_width;打破;案例40://downwall_y+=unit;
if(wall_y+wall_height>bound_bottom)wall_y=bound_bottom-wall_height;打破;默认值:break;}}函数draw_all(){ctx.beginPath();ctx.clearRect(box_x,box_y,box_width,box_height);ctx.fillStyle=“rgb(255,0,0)”;//ctx.lineWidth=ball_radius;ctx.arc(ball_x,ball_y,ball_radius,0,Math.PI*2,true);ctx.fill();//注意ctx.fillStyle=“rgb(0,0,0)”;ctx.fillRect(wall_x,wall_y,wall_width,wall_height);ctx.strokeRect(box_x,box_y,box_width,box_height);}函数init(){canvas=document.getElementById('canvas');ctx=canvas.getContext('2d');draw_all();
setInterval(draw_all,100);setInterval(move_ball,50);window.addEventListener('keydown',move_wall,false);//注释}</script></head><bodyonLoad=“init();”><canvasid=“canvas”width=“300”height=“300”></canvas></body></html>
如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h60711.shtml