打砖块游戏

#div1 {
                width:600px;
                height:600px;
                border:1px solid black;
                position:relative;
                margin:100px auto;
            }
            #ball {
                width:20px;
                height:20px;
                background-color: red;
                border-radius: 50%;
                position: absolute;
                left:290px;
                bottom: 30px;
            }
            #bat{
                width:100px;
                height:30px;
                background-color: blue;
                position:absolute;
                bottom:0px;
                left:250px;
            }
            #brick div {
                width:98px;
                height:18px;
                border:1px solid black;
                float:left;
            }

在这里插入图片描述

window.onload = function(){
                var oDiv = document.getElementById("div1");
                var oBall = document.getElementById("ball");
                var oBat = document.getElementById("bat");
                var oBrick = document.getElementById("brick");
                var aBricks = oBrick.getElementsByTagName("div");
                dragX(oBat);
                createBrick(60);

                //让小球可以水平方向运动,随机一个水平方向的速度
                var speedX = parseInt(Math.random() * 4) + 3;
                //随机一个垂直方向的速度
                var speedY =  -(parseInt(Math.random() * 3) + 5);
                
                // alert(speedY);
                // alert(oDiv.offsetWidth-oBall.offsetWidth);
                // alert(oDiv.offsetHeight-oBall.offsetHeight);
                setInterval(function(){
                    oBall.style.left = oBall.offsetLeft + speedX + "px";
                    oBall.style.top = oBall.offsetTop + speedY + "px";
                    //限制出界
                    if(oBall.offsetLeft>=oDiv.offsetWidth-oBall.offsetWidth || oBall.offsetLeft<=0){
                        speedX *= -1;
                    }
                    if(oBall.offsetTop<=0){
                        speedY *= -1;
                    }
                    if(oBall.offsetTop>=oDiv.offsetHeight-oBall.offsetHeight){
                        alert("Game Over !");
                        window.location.reload();
                        // continue;
                    }

                    /*
                      进行碰撞检测
                    */
                    //1、小球和拍子的碰撞检测
                    if(knock(oBall,oBat)){
                        speedY *=-1 ;
                        
                    }
                    //2、小球和砖块的碰撞检测
                    for(var i=0;i<aBricks.length;i++){
                        if(knock(aBricks[i],oBall)){
                           speedY *=-1;
                           // 砖块要被删除
                           oBrick.removeChild(aBricks[i]);
                           break;
                        }
                    }
                    
                },30);
            }

            function dragX(node){
                var oDiv = document.getElementById("div1");
                var oBat = document.getElementById("bat");
                node.onmousedown = function(ev){
                    var e = ev || windown.event;
                    var offsetX = e.clientX - node.offsetLeft;

                    document.onmousemove = function(ev){
                        var e = ev || windown.event;
                        var l = e.clientX - offsetX;
                        //
                        if(l<=0){
                            l = 0;
                        }
                        if(l>=oDiv.offsetWidth-oBat.offsetWidth){
                            l = oDiv.offsetWidth-oBat.offsetWidth;
                        }
                        node.style.left = l + "px";
                    }
                }
                document.onmouseup = function(){
                    document.onmousemove = null;
                }
            }

            //创建砖块,n的意思是创建n个砖块
            /*
              文档流转换
              相对定位 转 绝对定位
            */
            function createBrick(n){
                var oBrick = document.getElementById("brick");
                for(var i=0;i<n;i++){
                    var node = document.createElement("div");
                    node.style.backgroundColor = randomColor();
                    oBrick.appendChild(node);
                }
                var aBricks = oBrick.getElementsByTagName("div");
                for(var i=0;i<aBricks.length;i++){
                    aBricks[i].style.left = aBricks[i].offsetLeft + "px";
                    aBricks[i].style.top = aBricks[i].offsetTop + "px";
                }
                for(var i=0;i<aBricks.length;i++){
                    aBricks[i].style.position = "absolute";
                }

            }
            //获取随机颜色
            function randomColor(){
                var str = "rgb(" + parseInt(Math.random()*255) + "," + parseInt(Math.random()*255) + "," + parseInt(Math.random()*255) + ",1)";
                return str;
            };

            /* 
              思路:找到如何是绝对碰不上的。
            */
           function knock(node1,node2){
               var l1 = node1.offsetLeft;
               var r1 = node1.offsetLeft + node1.offsetWidth;
               var t1 = node1.offsetTop;
               var b1 = node1.offsetTop + node1.offsetHeight;

               var l2 = node2.offsetLeft;
               var r2 = node2.offsetLeft + node2.offsetWidth;
               var t2 = node2.offsetTop;
               var b2 = node2.offsetTop + node2.offsetHeight;

               if(l2>r1 || r2<l1 || t2>b1 || b2<t1){
                   return false;
               }else{
                   return true;
               } 
           }

在这里插入图片描述

Stkcd [股票代码] ShortName [股票简称] Accper [统计截止日期] Typrep [报表类型编码] Indcd [行业代码] Indnme [行业名称] Source [公告来源] F060101B [净利润现金净含量] F060101C [净利润现金净含量TTM] F060201B [营业收入现金含量] F060201C [营业收入现金含量TTM] F060301B [营业收入现金净含量] F060301C [营业收入现金净含量TTM] F060401B [营业利润现金净含量] F060401C [营业利润现金净含量TTM] F060901B [筹资活动债权人现金净流量] F060901C [筹资活动债权人现金净流量TTM] F061001B [筹资活动股东现金净流量] F061001C [筹资活动股东现金净流量TTM] F061201B [折旧摊销] F061201C [折旧摊销TTM] F061301B [公司现金流1] F061302B [公司现金流2] F061301C [公司现金流TTM1] F061302C [公司现金流TTM2] F061401B [股权现金流1] F061402B [股权现金流2] F061401C [股权现金流TTM1] F061402C [股权现金流TTM2] F061501B [公司自由现金流(原有)] F061601B [股权自由现金流(原有)] F061701B [全部现金回收率] F061801B [营运指数] F061901B [资本支出与折旧摊销比] F062001B [现金适合比率] F062101B [现金再投资比率] F062201B [现金满足投资比率] F062301B [股权自由现金流] F062401B [企业自由现金流] Indcd1 [行业代码1] Indnme1 [行业名称1] 季度数据,所有沪深北上市公司的 分别包含excel、dta数据文件格式及其说明,便于不同软件工具对数据的分析应用 数据来源:基于上市公司年报及公告数据整理,或相关证券交易所、各部委、省、市数据 数据范围:基于沪深北证上市公司 A股(主板、中小企业板、创业板、科创板等)数据整理计算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值