全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JavaScript用200行代码制作打飞机小游戏实例

我去,我的图片分数被这个录屏软件的水印盖上了,扎心。

这个程序的文件以及代码全部上传到了github

程序下载链接传送门

这是自己第一次通过js写的小游戏,那个时候对象的原理跟结构体的概念不是特别的清晰,所以没用对象来写,所以直接导致后期我对这个程序进行修改的时候出现问题,太过于复杂了,我终于了解什么叫做牵一发动全身了。所以这个程序教会我一定一定要用对象的思想处理以后的问题,尤其是这种带属性明显的东西。

当然你要问我图片怎么来的我只能说都是我自己画的所以这可是原创的原创。

代码部分我是通过一个大的函数直接进行所有的封装,当然写这个的时候的我完完全全对jquery么有一丁点认识,所以自己写了渐隐渐现的函数。所以开始的代码很简单。

window.onload = function(){
  var Base = new base();
  var start = document.getElementById('start');
  start.onclick = function(){
    Base.fadehide('start');
    getId('path').style.display='block';
    Base.fadeshow('path');
    Base.createBullteAndMovePlain();

  }

}

这就是开始接入的函数。渐隐渐现的函数是这个。

   this. fadehide = function (name){
      var   i = 1;
      var odiv = document.getElementById(name);
      function show(){  
        odiv.style.opacity = i;
        i-=0.1; 
         if(i<0){odiv.style.display = 'none';clearInterval(t);
         }
      }
       var t = setInterval(show,10);
       return this;
    }

    this.fadeshow = function (name){
      var i = 0;
      var odiv = document.getElementById(name);
      function show(){  
        odiv.style.opacity = i;
        i+=0.1; 
         if(i>1){clearInterval(t);}
      }
       var t = setInterval(show,100);  
      return this;
    }

剩下的代码,懒得解释了,里面有注释。

    //生成子弹
      this.createBullteAndMovePlain = function (){
      var arr= [];
      var bulletNum=[];
      var way = path.getElementsByClassName('way');
      var play =document.getElementById('bullet');
      var flag =0;
      var score=0;

      //获取按键
      document.onkeydown = function(evt){
        var ev = evt||event;
        //left keyCode is 39
        //right keyCode is 37
        switch(ev.keyCode){
          case 39:
          flag=(flag+1)%5;
          break;
          case 37:
          if(flag==0){
          flag=Math.abs(flag-4);
          }else if(flag>0){
            flag=(flag-1)%5;
          }
          break;
        }

      //移动飞机
          function movePlain (){
            var plain = document.getElementById('player');
            switch(flag){
            case 0:player.style.left='0px';break;
            case 1: player.style.left='100px';break;
            case 2: player.style.left='200px';break;
            case 3: player.style.left='300px';break;
            case 4:player.style.left='400px';break;

          }
          }
          movePlain();
      }


      function createBulltes(){


        //生成敌人
          var newenemy = document.createElement('img');
          newenemy.src = 'img/enemy.png';
          newenemy.style.position='absolute';
          newenemy.style.zIndex='5';
          var enemyTop=0;
          var sign=0;
          var randomNum = Math.random()*5;
          sign=Math.floor(randomNum);
          newenemy.style.top='0px';
          switch(sign){
            case 0:newenemy.style.left='0px';break;
              case 1: newenemy.style.left='100px';break;
              case 2: newenemy.style.left='200px';break;
              case 3: newenemy.style.left='300px';break;
              case 4:newenemy.style.left='400px';break;

          }way[0].appendChild(newenemy);
          arr.unshift(newenemy);
      //生成子弹    
          var bullet = document.getElementById('bullet');
          var newbullet = document.createElement('img');
          var plain = document.getElementById('player');
          newbullet.className='bullet';
          newbullet.style.position='absolute';
          newbullet.style.top='560px';  
          newbullet.src='img/bullet.png';
          newbullet.style.zIndex='4';      
          var bulletTop=0;


          switch(flag){
            case 0: newbullet.style.left='45px';player.style.left='0px';;break;
            case 1: newbullet.style.left='145px';player.style.left='100px';;break;
            case 2: newbullet.style.left='245px';player.style.left='200px';break;
            case 3: newbullet.style.left='345px';player.style.left='300px';break;
            case 4: newbullet.style.left='445px';player.style.left='400px';break;

          }way[2].appendChild(newbullet);
          bulletNum.unshift(newbullet);
        //分数图片
          function scoreup(score){
            var imgs = document.getElementsByClassName('score');
            var imgsnum=score.toString().split('');

            for(var i=0; i<imgsnum.length; i++){

              imgs[4-i].src='img/'+imgsnum[i]+'.png';  
            }

        }

        //判定触碰
        function decide(){
        for(var i = 0;i<arr.length; i++){
          for(var j=0; j<bulletNum.length; j++)
        if(arr[i].offsetLeft==(bulletNum[j].offsetLeft-45)&&((arr[i].offsetTop+98)>bulletNum[j].offsetTop-10&&(arr[i].offsetTop+98)<bulletNum[j].offsetTop+10)){
          score++;
          scoreup(score);
          arr[i].parentNode.removeChild(arr[i]);
            bulletNum[j].parentNode.removeChild(bulletNum[j]);    
            }
          }
          var player=document.getElementById('player');
          for(var i=0; arr.length; i++){
            if(arr[i].offsetLeft==player.offsetLeft&&(arr[i].offsetTop+70)==player.offsetTop){
              alert('game over');location.reload();
            }
          }
        }

        //放在一起的移动
          function bulletmove (){
                  bulletTop=newbullet.offsetTop;
                    enemyTop=newenemy.offsetTop;
                //    alert('buller:'+newbullet.offsetLeft);
                  //  alert(newenemy.offsetLeft);
                function move (){
                  bulletTop-=6;
                  enemyTop+=1;
                  newbullet.style.top=bulletTop+'px';
                  newenemy.style.top=enemyTop+'px';
                   decide();
                  if(bulletTop==0&&enemyTop==560){
                        newbullet.style.opacity='0';
                          newenemy.style.opacity='0';

                          clearInterval(t);
                          }else if(bulletTop==0){
                          newbullet.parentNode.removeChild(newbullet);  
                          bulletNum.pop();
                          }else if(enemyTop==560){
                          newenemy.parentNode.removeChild(newenemy);arr.pop();
                          }


                }

                    var t = setInterval(move,20);  
          }  
                bulletmove();

          }

          var s=setInterval(createBulltes,3000);

      }
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# JavaScript打飞机游戏  # js打飞机游戏  # js猜数字小游戏的简单实现代码  # JavaScript编写连连看小游戏  # js实现贪吃蛇小游戏(容易理解)  # JavaScript实现打地鼠小游戏  # 分享自己用JS做的扫雷小游戏  # js实现九宫格拼图小游戏  # 20行js代码实现的贪吃蛇小游戏  # 用js做一个小游戏平台 (一)  # 利用原生js实现html5小游戏之打砖块(附源码)  # 如何利用JavaScript编写一个格斗小游戏  # 都是  # 这是  # 我是  # 有一  # 尤其是  # 你要  # 上了  # 这就是  # 我一  # 渐隐  # 我对  # 渐现  # 我去  # 问我  # 很简单  # 要用  # 写了  # 这可是  # 下载链接  # 大家多多 


相关文章: 建站之星官网登录失败?如何快速解决?  如何用搬瓦工VPS快速搭建个人网站?  如何通过cPanel快速搭建网站?  制作网站怎么制作,*游戏网站怎么搭建?  高防服务器如何保障网站安全无虞?  音响网站制作视频教程,隆霸音响官方网站?  如何通过商城免费建站系统源码自定义网站主题?  电商网站制作公司有哪些,1688网是什么意思?  如何在景安云服务器上绑定域名并配置虚拟主机?  Swift开发中switch语句值绑定模式  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  建站之家VIP精选网站模板与SEO优化教程整合指南  七夕网站制作视频,七夕大促活动怎么报名?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  如何快速搭建虚拟主机网站?新手必看指南  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  学校免费自助建站系统:智能生成+拖拽设计+多端适配  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  建站之星后台密码遗忘如何找回?  招商网站制作流程,网站招商广告语?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  教学论文网站制作软件有哪些,写论文用什么软件 ?  网站制作难吗安全吗,做一个网站需要多久时间?  python的本地网站制作,如何创建本地站点?  建站之星代理费用多少?最新价格详情介绍  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  建站主机如何安装配置?新手必看操作指南  高防服务器:AI智能防御DDoS攻击与数据安全保障  建站之星如何开启自定义404页面避免用户流失?  在线教育网站制作平台,山西立德教育官网?  如何用低价快速搭建高质量网站?  如何用wdcp快速搭建高效网站?  制作营销网站公司,淘特是干什么用的?  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  建站之星代理商如何保障技术支持与售后服务?  建站之星安装提示数据库无法连接如何解决?  怀化网站制作公司,怀化新生儿上户网上办理流程?  如何快速上传建站程序避免常见错误?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  盘锦网站制作公司,盘锦大洼有多少5G网站?  专业网站建设制作报价,网页设计制作要考什么证?  长沙企业网站制作哪家好,长沙水业集团官方网站?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  网站制作网站,深圳做网站哪家比较好?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  建站VPS选购需注意哪些关键参数? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。