亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > HTML > 正文

html5 乒乓球(碰撞檢測)實例二

2024-08-26 00:16:34
字體:
來源:轉載
供稿:網友

點評:小球可以在方框內部自由運動,可以通過方向鍵控制黑色磚塊上下左右移動去與小球發生碰撞,具體的實現思路及代碼如下,感興趣的朋友可以參考下,希望對大家學習html5有所幫助

html5 乒乓球(碰撞檢測)實例二

演示地址



簡單介紹

小球可以在方框內部自由運動
可以通過方向鍵控制黑色磚塊上下左右移動去與小球發生碰撞

代碼實現

復制代碼

代碼如下:


<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html>
<html>
<head>
<title>乒乓球游戲</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script>
var ctx;
var canvas;
var ball_x=10;
var ball_y=10;
var ball_radius=10;
var ball_vx=10;
var ball_vy=8;
var wall_x=30;
var wall_y=40;
var wall_width=30;
var wall_height=60;
var box_x=0;
var box_y=0;
var box_width=300;
var box_height=300;
var bound_left=box_x+ball_radius;
var bound_right=box_x+box_width-ball_radius;
var bound_top=box_y+ball_radius;
var bound_bottom=box_y+box_height-ball_radius;
var unit=10;
function intersect(sx, sy, fx, fy, cx, cy, rad)
{
var dx;
var dy;
var t;
var rt;
dx = fx - sx;
dy = fy - sy;
t = 0.0 - (((sx - cx) * dx + (sy - cy) * dy) / (dx * dx + dy * dy));
if (t < 0.0)
{
t = 0.0;
}
else if (t > 1.0)
t = 1.0;
var dx1 = (sx + t * dx) - cx;
var dy1 = (sy + t * dy) - cy;
var rt = dx1 * dx1 + dy1 * dy1;
if (rt < rad * rad)
return true;
else
return false;
}
function 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;
}
}
function move_wall(ev)
{
var keyCode;
if(event==null)
{
keyCode=window.event.keyCode;
window.event.preventDefault();
}
else
{
keyCode=event.keyCode;
event.preventDefault();
}
switch(keyCode)
{
case 37://left;
wall_x-=unit;
if(wall_x<bound_left)
wall_x=bound_left;
break;
case 38://up
wall_y-=unit;
if(wall_y<bound_top)
wall_y=bound_top;
break;
case 39://right
wall_x+=unit;
if(wall_x+wall_width>bound_right)
wall_x=bound_right-wall_width;
break;
case 40://down
wall_y+=unit;
if(wall_y+wall_height>bound_bottom)
wall_y=bound_bottom-wall_height;
break;
default:
break;
}
}
function 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();//note
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);
}
function 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);//note
}
</script>
</head>
<body>
<canvas></canvas>
</body>
</html>


難點

小球和磚塊的碰撞檢測以及碰撞處理
將磚塊分解為4條線段
分別對小球和每條線段進行碰撞檢測。

小球和線段的碰撞檢測在另一篇文章中有介紹。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕日韩在线播放| 成人在线视频网| 97视频色精品| 午夜伦理精品一区| 中文字幕精品—区二区| 国模视频一区二区三区| 中文字幕在线看视频国产欧美| 欧美色道久久88综合亚洲精品| 亚洲www永久成人夜色| 性色av一区二区三区在线观看| 91精品在线观看视频| 亚洲视频一区二区| 日韩高清av在线| 国产激情久久久| 国产欧美一区二区三区视频| 久久免费国产视频| 九九热精品视频在线播放| 国产精品视频专区| 91tv亚洲精品香蕉国产一区7ujn| 成人黄色午夜影院| 九九久久久久久久久激情| 欧美成人黑人xx视频免费观看| 97久久精品视频| 久久国产精品久久久久久久久久| 国产欧美va欧美va香蕉在| 国产精品久久久久aaaa九色| 国产精品白丝jk喷水视频一区| 日韩免费看的电影电视剧大全| 欧洲美女免费图片一区| 91精品国产99久久久久久| 精品欧美激情精品一区| 亚洲第一精品夜夜躁人人躁| 国产精品99久久99久久久二8| 97精品视频在线播放| 国产精品视频地址| 欧美电影免费观看| 国产精品一区二区三区毛片淫片| 一本一本久久a久久精品牛牛影视| 一个人看的www久久| 成人激情视频在线观看| 国产精品青草久久久久福利99| 亚洲精品视频中文字幕| 欧美日本国产在线| 精品久久久久久久久久国产| 91在线观看免费高清完整版在线观看| 欧美日韩国产在线看| 精品久久久一区| 成人中文字幕+乱码+中文字幕| 一区二区三区无码高清视频| 国产99视频在线观看| 中文字幕欧美日韩在线| 欧美日韩在线观看视频小说| 亚洲精品欧美一区二区三区| 55夜色66夜色国产精品视频| 91经典在线视频| 欧美极品少妇全裸体| 狠狠色狠狠色综合日日小说| 久久久国产成人精品| 亚洲人av在线影院| 精品国产一区二区三区在线观看| 亚洲人成电影在线| 久久久视频精品| 欧美午夜精品久久久久久久| 中文字幕一区日韩电影| 奇门遁甲1982国语版免费观看高清| 国产日产亚洲精品| 69久久夜色精品国产69| 亚洲xxxx做受欧美| 国产一区深夜福利| 欧洲午夜精品久久久| 中文字幕成人精品久久不卡| 亚洲高清久久网| 国内精品小视频| 久久资源免费视频| 欧美高清在线视频观看不卡| 成人网欧美在线视频| 日本91av在线播放| 日韩欧美国产高清91| 日韩有码在线视频| 国产精品久久久精品| 欧美大片在线看免费观看| 26uuu另类亚洲欧美日本一| 亚洲性xxxx| 日韩美女在线播放| 欧美日韩在线免费观看| 国产精品96久久久久久| 日韩性生活视频| 91在线中文字幕| 欧美区二区三区| 国产精品一区二区三区久久| 成人精品一区二区三区电影黑人| 九九热r在线视频精品| 狠狠色狠狠色综合日日小说| 中文字幕9999| 日韩中文字幕在线视频播放| 国产成人精品日本亚洲| 97超碰国产精品女人人人爽| 一区二区三区四区视频| 国产精品91在线| 日韩av一区在线观看| 亚洲xxx大片| 欧美尤物巨大精品爽| 欧美高清不卡在线| 国产91露脸中文字幕在线| 亚洲欧洲av一区二区| 欧美激情一级精品国产| 日韩免费av一区二区| 日韩暖暖在线视频| 69视频在线播放| 伦伦影院午夜日韩欧美限制| 国产男女猛烈无遮挡91| 欧美电影在线观看网站| 日韩国产高清视频在线| 欧美中文字幕在线视频| 国产精品嫩草影院久久久| 清纯唯美亚洲综合| 成人网在线观看| 国产精品wwww| 亚洲第一综合天堂另类专| 亚洲视频网站在线观看| 欧美三级免费观看| 另类天堂视频在线观看| 日韩中文有码在线视频| 欧美午夜精品伦理| 欧美日韩国产123| 午夜精品三级视频福利| 亚洲精品www久久久久久广东| 成人欧美一区二区三区黑人| 国产精品高潮粉嫩av| 成人性生交大片免费观看嘿嘿视频| 欧美精品激情blacked18| 日韩在线精品一区| 成人欧美在线视频| 亚洲精品视频中文字幕| 精品久久久久国产| 久久久亚洲精品视频| 亚洲a区在线视频| 日本一本a高清免费不卡| 日韩av一区在线| 国产亚洲免费的视频看| 69av在线播放| 亚洲欧美色图片| 国产91亚洲精品| 国产精品一区二区三区免费视频| 亚洲国产日韩精品在线| 日韩成人激情视频| 国产精品网站视频| 久久久久亚洲精品成人网小说| 欧美另类高清videos| 久久国产加勒比精品无码| 美日韩丰满少妇在线观看| 尤物yw午夜国产精品视频明星| 欧美精品激情视频| 久久97久久97精品免视看| 亚洲第一男人天堂| 亚洲在线免费观看| 欧美激情乱人伦| 日韩高清有码在线| 国产欧美一区二区白浆黑人| 亚洲视频在线观看| 亚洲成人av片| 欧美另类精品xxxx孕妇| 国产成人亚洲综合91精品| 欧美老妇交乱视频|