全网整合营销服务商

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

免费咨询热线: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编写一个格斗小游戏  # 都是  # 这是  # 我是  # 有一  # 尤其是  # 你要  # 上了  # 这就是  # 我一  # 渐隐  # 我对  # 渐现  # 我去  # 问我  # 很简单  # 要用  # 写了  # 这可是  # 下载链接  # 大家多多 


相关文章: MySQL查询结果复制到新表的方法(更新、插入)  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  如何零基础在云服务器搭建WordPress站点?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何选择高效可靠的多用户建站源码资源?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  再谈Python中的字符串与字符编码(推荐)  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  IOS倒计时设置UIButton标题title的抖动问题  如何实现建站之星域名转发设置?  c# 在ASP.NET Core中管理和取消后台任务  建站之星如何助力网站排名飙升?揭秘高效技巧  网站制作企业,网站的banner和导航栏是指什么?  学校建站服务器如何选型才能满足性能需求?  建站之星展会模板:智能建站与自助搭建高效解决方案  c# 在高并发下使用反射发射(Reflection.Emit)的性能  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  音乐网站服务器如何优化API响应速度?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  婚礼视频制作网站,学习*后期制作的网站有哪些?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  南平网站制作公司,2025年南平市事业单位报名时间?  网站专业制作公司有哪些,做一个公司网站要多少钱?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  linux top下的 minerd 木马清除方法  建站之星价格显示格式升级,你的预算足够吗?  网站制作员失业,怎样查看自己网站的注册者?  如何通过VPS建站无需域名直接访问?  如何获取免费开源的自助建站系统源码?  PHP正则匹配日期和时间(时间戳转换)的实例代码  如何用IIS7快速搭建并优化网站站点?  如何用AWS免费套餐快速搭建高效网站?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  如何在建站之星绑定自定义域名?  Java解压缩zip - 解压缩多个文件或文件夹实例  建站之星如何保障用户数据免受黑客入侵?  简单实现Android验证码  招贴海报怎么做,什么是海报招贴?  建站之星微信建站一键生成小程序+多端营销系统  制作农业网站的软件,比较好的农业网站推荐一下?  如何在Golang中使用replace替换模块_指定本地或远程路径  如何通过服务器快速搭建网站?完整步骤解析  如何选择高效稳定的ISP建站解决方案?  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  如何用西部建站助手快速创建专业网站?  如何用低价快速搭建高质量网站? 

您的项目需求

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