SuperBall開發(fā)總結(jié)(三)-加入木板

有了上個(gè)物理實(shí)驗(yàn)SuperBall開發(fā)總結(jié)(二)-讓小球動(dòng)起來,其實(shí)就真正明白了這個(gè)游戲的整體框架。

以后的工作就是豐富render(), checkHit()update(),當(dāng)然當(dāng)代碼量逐漸增多時(shí),我們還需要將代碼分塊,便于閱讀、擴(kuò)展和維護(hù)。

現(xiàn)在我們要將游戲中玩家控制的木板實(shí)現(xiàn)出來.

完成效果

SuperBall_02-Add_A_BOARD
需要先鼠標(biāo)左鍵點(diǎn)擊一下效果框(Result框),獲取焦點(diǎn)后,才會(huì)將鍵盤事件監(jiān)聽導(dǎo)向木板。

加入木板對(duì)象

 var board = { 
               x : 100, 
               y : 200 -10, 
               weight : 4, 
               height : 5, c
               olor : "grey"
               }                  

添加木板渲染代碼

    //render the board
    context.beginPath();
    context.moveTo(board.x, board.y);
    context.lineTo(board.x + board.width, board.y);
    context.lineWidth = board.weight;
    context.strokeStyle = board.color;
    context.stroke();
    context.closePath();

添加小球碰撞木板的檢測代碼

   //check the ball hit the board
    if(ball.x >= board.x && ball.x <= board.x + board.width)
        if(ball.y >= board.y - board.weight/2 - ball.r){
             
            ball.y = board.y - board.weight/2 - ball.r;
            ball.vy *= -1;
        }            

注意這里判斷標(biāo)準(zhǔn)的細(xì)節(jié),由于木板是用一條線畫出來的,所以木板的長度是board.width而寬度是board.weight

添加鍵盤監(jiān)聽

    document.onkeydown = checkKeyDown;

    function checkKeyDown(event){
            switch (event.keyCode) {
                case 37: //left
                    board.x -= 20;
                    break;

                case 39: //right
                    board.x += 20;
                    break;

            }
        }

別讓木板跑出去

    //ensure the board is in the canvas
    if(board.x <= 0)
        board.x = 0;
    
    if(board.x >= 300 - board.width)
        board.x = 300 - board.width;            

這里的鍵盤監(jiān)聽函數(shù)主要是捕獲鍵盤點(diǎn)擊的代碼,而向左鍵是37, 向右鍵是39.
SuperBall開發(fā)總結(jié)(四)-BOSS出場

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,358評(píng)論 4 61
  • Swift版本點(diǎn)擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 26,120評(píng)論 7 249
  • 有種多情天生天養(yǎng) 好像旗魚迷戀天空 平凡世界煙花易冷 去到荼蘼秋天來了。 秋天來了, 夏天去哪了。 我形單影只坐著...
    泛指燁閱讀 170評(píng)論 0 3
  • 在掙扎了2個(gè)鬧鐘的時(shí)間之后,我還是起床了。很多話,既然說出口了就要負(fù)責(zé);很多事情,既然做了就要堅(jiān)持。為了盡快活成自...
    Super_Luna閱讀 167評(píng)論 0 0
  • 早餐,好好吃,一天的效率都會(huì)高很多。 無論生活節(jié)奏多么快,都要學(xué)會(huì)把自己喂的元?dú)鉂M滿。
    漂泊葦草閱讀 183評(píng)論 0 0

友情鏈接更多精彩內(nèi)容