弹弹乐小游戏

游戏效果图如下:

简易说明:

小球开始会在方框正中间,点击方框任意位置,小球会向前任意方向发射

当小球往回弹的时候通过用键盘操纵蓝色方框使小球弹回去

当操控蓝色方块未接到小球时,小球运动暂停,显示游戏结束。

主要代码如下:

    <script>
        //获取板子的对象
        let borad=document.getElementById('borad')
        let a=400,da=20,db=20
        document.onkeydown=function(e){
            switch(e.keyCode){
            case 65:
                if(a>=40){
                    a-=db
                borad.style.left=a-20+'px';
                }
                
            break;
            case 68:
                if(a<=970){
                    a+=da
                    borad.style.left=a+20+'px';
                }
                
            break;
            } 
        }
        //生成0-1200的随机整数
        let r=Math.floor(Math.random()*1200)
        // alert(r)
        //小球的球心随机着落点的坐标(r,50)
        //小球球心的坐标(x,y)
        let x=600,y=400
        //计算x和y之间运动距离的倍数关系
        let x_y=(x-r)/(y-50)
        let dy=-1       //表示单位时间沿着y轴向上运动一个单位
        let dx=x_y*dy   //表示单位时间 沿着x轴的位移


        //获取小球的dom对象
        let ball=document.getElementById('ball')
        //点击父元素任意位置开始游戏
        function startGame(){
            //alert("游戏开始")
            let game=setInterval(()=>{
                //上下碰撞
                if(y<=50){
                    dy=-dy
                }else if(y>=750){
                    if(x>=a&&x<=a+200){
                        dy=-dy
                    }
                }
                //左右碰撞
                if(x<=50||x>=1150){
                    dx=-dx
                }
                //把单位时间的位移作用在坐标上
                x+=dx
                y+=dy
                //把坐标作用在实际定位上
                ball.style.left=x-50+'px'
                ball.style.top=y-50+'px'
                if(y>800){
                    clearInterval(game)
                    alert("游戏结束!")
                }
            },1)
        }
    </script>

重难点:

1、需要获取小球发射的方向

2、需要计算出小球移动时x轴和y轴运动的比例

3、小球撞到边框时如何进行反弹以及反弹的方向

4、如何计算更改小球的left和top值

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值