SuperBall开发总结(三)-加入木板

有了上个物理实验SuperBall开发总结(二)-让小球动起来,其实就真正明白了这个游戏的整体框架。

以后的工作就是丰富render(), checkHit()update(),当然当代码量逐渐增多时,我们还需要将代码分块,便于阅读、扩展和维护。

现在我们要将游戏中玩家控制的木板实现出来.

完成效果

SuperBall_02-Add_A_BOARD
需要先鼠标左键点击一下效果框(Result框),获取焦点后,才会将键盘事件监听导向木板。

加入木板对象

 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;
        }            

注意这里判断标准的细节,由于木板是用一条线画出来的,所以木板的长度是board.width而宽度是board.weight

添加键盘监听

    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;            

这里的键盘监听函数主要是捕获键盘点击的代码,而向左键是37, 向右键是39.
SuperBall开发总结(四)-BOSS出场

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,252评论 4 61
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,572评论 7 249
  • 有种多情天生天养 好像旗鱼迷恋天空 平凡世界烟花易冷 去到荼蘼秋天来了。 秋天来了, 夏天去哪了。 我形单影只坐着...
    泛指烨阅读 152评论 0 3
  • 在挣扎了2个闹钟的时间之后,我还是起床了。很多话,既然说出口了就要负责;很多事情,既然做了就要坚持。为了尽快活成自...
    Super_Luna阅读 147评论 0 0
  • 早餐,好好吃,一天的效率都会高很多。 无论生活节奏多么快,都要学会把自己喂的元气满满。
    漂泊苇草阅读 157评论 0 0