首页 > php教程 > php手册 > 正文

js坦克大战以实现炮弹击中目标消失并且记分

php中文网
发布: 2016-09-15 11:14:47
原创
2045人浏览过

js坦克大战以实现炮弹击中目标消失并且记分
话不多说
下载下面的代码包就能看到效果,
效果图:
js坦克大战以实现炮弹击中目标消失并且记分
js代码如下:/**初始化*/
var shell=document.getElementById('tk');
shell.innerHTML='

';
var w=shell.offsetWidth;h=shell.offsetHeight;
/**初始化*/
function keyDown(e) {  
         var keycode = e.which; 
         remove(keycode,2);//坦克移动
       if(keycode=='32'){//发射子弹
             zidan();
       }
      }

function keyUp(e){//键位弹起时候记录最后按下方向键,并将其储存到class中去
     var keycode = e.which; shell_1=document.getElementById('shell_1');
     
     if(keycode=='37' || keycode=='38' || keycode=='39' || keycode=='40'){
        shell_1.className='qin'+keycode;
     }
    
}
  /**键位监听*/
   document.onkeydown = keyDown;
   document.onkeyup = keyUp;
   /**键位监听*/
function remove(code,su){//玩家坦克移动函数
    var shell_1=document.getElementById('shell_1');
    var l;
    if(code=='37'){//左移
        l=shell_1.style.marginLeft;
        l=parseInt(l);
        if(l>0){
           shell_1.style.marginLeft=(l-su)+'px';
        }
    }
    
    if(code=='38'){//上移
        l=shell_1.style.marginTop;
        l=parseInt(l);
        if(l>0){
           shell_1.style.marginTop=(l-su)+'px';
        }
    }
    
    if(code=='39'){//右移
        l=shell_1.style.marginLeft;
        l=parseInt(l);
        if(l            shell_1.style.marginLeft=(l+su)+'px';
        }
    }

    if(code=='40'){//下移
        l=shell_1.style.marginTop;
        l=parseInt(l);
        if(l            shell_1.style.marginTop=(l+su)+'px';
        }
    }
    
}

function zidan(){//玩家坦克子弹函数
    /**获取子弹初始位置*/
    var che=document.getElementById('shell_1');
    var l=che.style.marginLeft;
    var t=che.style.marginTop;
    var html=shell.innerHTML;//获取原有html
    /**获取子弹初始位置*/
    
    var myDate = new Date();
    var myid=myDate.getTime(); 
    
    /**创建初始子弹*/
       shell.innerHTML=html+'
';
    /**创建初始子弹*/
    
    /**获取子弹的运行方向*/
      var fx=che.className;//子弹方向只能在子弹初始的时候获取
    /**获取子弹的运行方向*/
      
      
      
    
    var set=setInterval(function(){
        
        var zd=document.getElementById(myid);//获取子弹
        
        if(fx=='qin39'){//子弹向右
            var ls=zd.style.marginLeft;
            ls=parseInt(ls);
             
            if(ls                zd.style.marginLeft=(ls+1)+'px';
            }else{
                rezidan(myid);
                clearInterval(set);
            }
        }
        if(fx=='qin37'){//子弹向左
            var ls=zd.style.marginLeft;
            ls=parseInt(ls);
            if(ls>0){ 
              zd.style.marginLeft=(ls-1)+'px';
            }else{
                rezidan(myid);
                clearInterval(set);
            }
        }
        if(fx=='qin38'){//子弹向上
            var ls=zd.style.marginTop;
            ls=parseInt(ls);
            if(ls>0){ 
              zd.style.marginTop=(ls-1)+'px';
            }else{
                rezidan(myid);
                clearInterval(set);
            }
        }
        if(fx=='qin40'){//子弹向下
            var ls=zd.style.marginTop;
            ls=parseInt(ls);
            if(ls               zd.style.marginTop=(ls+1)+'px';
            }else{
                rezidan(myid);
                clearInterval(set);
            }
        }
        
    },10);
    
}


function rezidan(id){//删除子弹函数或者坦克
    var child=document.getElementById(id);
    if(child){
       shell.removeChild(child);
    }
}


//**电脑坦克*/

function ran(){//随机1到4的方位函数
  var kwc=Math.ceil(Math.random()*10);
  var kwv;
  if(kwc%4==0){kwv=1;}
  if(kwc%4==1){kwv=2;}
  if(kwc%4==2){kwv=3;}
  if(kwc%4==3){kwv=4;}
  return kwv;
}



function rantanke(){//随机创建敌方坦克
    
    
    
    /**初始坦克随机出现位置*/
    var html=shell.innerHTML;//获取原有html
    var t=Math.random()*1000;
    var l=Math.random()*1000;
    
    if(t>h){t=(t-h)+'px';}else{t=t+'px';}//判断坦克不会超出边界太远
    if(l>w){l=(l-w)+'px';}else{l=l+'px';}//判断坦克不会超出边界太远
    /**初始坦克随机出现位置*/
    
    
    
    var myDate = new Date();
    var myid=myDate.getTime();
    /**创建坦克*/
       shell.innerHTML=html+'
';
    /**创建坦克*/
    
       var setz=setInterval(function(){
           /**被击中*/  
           var ztk=document.getElementById(myid);dt=ztk.style.marginTop;dl=ztk.style.marginLeft;
           dt=parseInt(dt);dl=parseInt(dl);           
           var zidanob=document.getElementsByClassName('zidan');
            if(zidanob.length!=0){                 
                 for(i=0;i              var zt=zidanob[i].style.marginTop;
             var zl=zidanob[i].style.marginLeft;
             zt=parseInt(zt);zl=parseInt(zl);
                if(zt>dt && ztdl && zl                     zidanob[i].style.display='none';//隐藏子弹
                    zidanob[i].className='';//当子弹碰撞后删除子弹的class以防止下次继续击中敌方坦克
                    rezidan(myid);//删除被击中坦克
                    clearInterval(setz);  //删除被击中坦克的时间函数
                    fensu();//记录分数
                }                    
            }
            }
           /**被击中*/          
              var clasz=ztk.className;
              var oArr = clasz.split(" ");
              var fwz;//每次执行这段代码FWZ就清空,fwz是方向判断变量
              
              
              if(clasz){//判断是否是创建坦克后第一次移动
             
                    if(oArr[0]=='qinr'){//持续向右移动50次
                        if(parseInt(oArr[1])                          var lz=ztk.style.marginLeft;
                       lz=parseInt(lz);
                       if(lz                          ztk.style.marginLeft=(lz+2)+'px';
                       }else{
                           fwz=ran();//撞墙重新选定方位
                       }
                       var clsaa=parseInt(oArr[1])+1;
                       ztk.className='qinr '+clsaa;
                      }else{
                        fwz=ran();//重新选定方位
                    }
                    }
                    
                    
                    if(oArr[0]=='qinl'){//持续向左移动50次
                        if(parseInt(oArr[1])                          var lz=ztk.style.marginLeft;
                       lz=parseInt(lz);
                       if(lz>0){
                          ztk.style.marginLeft=(lz-2)+'px'; 
                       }else{
                           fwz=ran();//撞墙重新选定方位 
                       }
                       var clsaa=parseInt(oArr[1])+1;
                       ztk.className='qinl '+clsaa;
                      }else{
                        fwz=ran();//重新选定方位
                    }
                    }
                    
                    
                    if(oArr[0]=='qint'){//持续向上移动50次
                        if(parseInt(oArr[1])                          var lz=ztk.style.marginTop;
                       lz=parseInt(lz);
                       if(lz>0){ 
                         ztk.style.marginTop=(lz-2)+'px'; 
                       }else{
                          fwz=ran();//撞墙重新选定方位 
                       }
                       var clsaa=parseInt(oArr[1])+1;
                       ztk.className='qint '+clsaa;
                      }else{
                        fwz=ran();//重新选定方位
                    }
                    }
                    
                    if(oArr[0]=='qinf'){//持续向下移动50次
                        if(parseInt(oArr[1])                          var lz=ztk.style.marginTop;
                       lz=parseInt(lz);
                       if(lz                           ztk.style.marginTop=(lz+2)+'px';
                       }else{
                           fwz=ran();//撞墙重新选定方位 
                       }
                       var clsaa=parseInt(oArr[1])+1;
                       ztk.className='qinf '+clsaa;
                      }else{
                        fwz=ran();//重新选定方位
                    }
                    }
                    
              }else{
                  fwz=ran();//方位函数
              }
              
              
              
              
              if(fwz==2){//方位值为2就执行向右移动
                   var lz=ztk.style.marginLeft;
                   lz=parseInt(lz);
                   ztk.style.marginLeft=(lz+2)+'px'; 
                   ztk.className='qinr 1';
              }
              
              if(fwz==3){//方位值为3就执行向左移动
                   var lz=ztk.style.marginLeft;
                   lz=parseInt(lz);
                   ztk.style.marginLeft=(lz-2)+'px';
                   ztk.className='qinl 1';
              }
              
              if(fwz==1){//方位值为1就执行向上移动
                   var lz=ztk.style.marginTop;
                   lz=parseInt(lz);
                   ztk.style.marginTop=(lz-2)+'px';
                   ztk.className='qint 1';
              }
              
              if(fwz==4){//方位值为4就执行向下移动
                   var lz=ztk.style.marginTop;
                   lz=parseInt(lz);
                   ztk.style.marginTop=(lz+2)+'px';
                   ztk.className='qinf 1';
              }
       },50);
    
}
function fensu(){//记分函数
    var ob=document.getElementById('fs');
    var s=ob.innerText;
    s=parseInt(s);
    s=s+1;
    ob.innerText=s;
}

附件 rew.zip ( 33.16 KB 下载:9 次 )

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号