茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    html5記憶翻牌游戲?qū)崿F(xiàn)思路及代碼
    來源:易賢網(wǎng) 閱讀:2545 次 日期:2016-07-13 13:54:33
    溫馨提示:易賢網(wǎng)小編為您整理了“html5記憶翻牌游戲?qū)崿F(xiàn)思路及代碼”,方便廣大網(wǎng)友查閱!

    小球可以在方框內(nèi)部自由運(yùn)動(dòng),可以通過方向鍵控制黑色磚塊上下左右移動(dòng)去與小球發(fā)生碰撞,具體的實(shí)現(xiàn)思路及代碼如下,感興趣的朋友可以參考下,希望對(duì)大家學(xué)習(xí)html5有所幫助

    簡(jiǎn)單介紹

    小球可以在方框內(nèi)部自由運(yùn)動(dòng)

    可以通過方向鍵控制黑色磚塊上下左右移動(dòng)去與小球發(fā)生碰撞

    代碼實(shí)現(xiàn)

    代碼如下:

    <!--

    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 onLoad="init();">

    <canvas id="canvas" width="300" height="300"></canvas>

    </body>

    </html>

    難點(diǎn)

    小球和磚塊的碰撞檢測(cè)以及碰撞處理,將磚塊分解為4條線段,分別對(duì)小球和每條線段進(jìn)行碰撞檢測(cè)。

    更多信息請(qǐng)查看網(wǎng)頁制作
    易賢網(wǎng)手機(jī)網(wǎng)站地址:html5記憶翻牌游戲?qū)崿F(xiàn)思路及代碼
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026國(guó)考·省考課程試聽報(bào)名

    • 報(bào)班類型
    • 姓名
    • 手機(jī)號(hào)
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專用圖標(biāo)