打砖块游戏

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

在这里插入图片描述

【多变量输入超前多步预测】基于CNN-BiLSTM的光伏功率预测研究(Matlab代码实现)内容概要:本文介绍了基于CNN-BiLSTM模型的多变量输入超前多步光伏功率预测方法,并提供了Matlab代码实现。该研究结合卷积神经网络(CNN)强大的特征提取能力与双向长短期记忆网络(BiLSTM)对时间序列前后依赖关系的捕捉能力,构建了一个高效的深度学习预测模型。模型输入包含多个影响光伏发电的气象与环境变量,能够实现对未来多个时间步长的光伏功率进行精确预测,适用于复杂多变的实际应用场景。文中详细阐述了数据预处理、模型结构设计、训练流程及实验验证过程,展示了该方法相较于传统模型在预测精度和稳定性方面的优势。; 适合人群:具备一定机器学习和深度学习基础,熟悉Matlab编程,从事新能源预测、电力系统分析或相关领域研究的研发人员与高校研究生。; 使用场景及目标:①应用于光伏电站功率预测系统,提升电网调度的准确性与稳定性;②为可再生能源并网管理、能量存储规划及电力市场交易提供可靠的数据支持;③作为深度学习在时间序列多步预测中的典型案例,用于科研复现与教学参考。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注数据归一化、CNN特征提取层设计、BiLSTM时序建模及多步预测策略的实现细节,同时可尝试引入更多外部变量或优化网络结构以进一步提升预测性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值