caomei456 2019-06-15 14:12
浏览 209

求问为什么子弹没有移动,碰撞也没有实现?

function $(name) {
return document.getElementById(name);

}

//获取某个标签得某个样式的值
function getStyle(elem,attr){

    var result =  window.getComputedStyle(elem,null)[attr];
    result = parseFloat(result);
    return result;
}

var start=$("start");
var play=$("play");
var score=$("score");
var pause=$("pause");
var scores=0;
var end=$("end");
var label=$("label");
/*
创建飞机类
*/
function plane(hp,x,y,width,height,sudu,dietime,score,boomimage,imagesrc){
this.planeX=x;
this.planeY=y;
this.planeW=width;
this.planeH=height;
this.imagenode=null;
this.planeDietime=dietime;
this.planeBoomimage=boomimage;
this.planesudu=sudu;
this.planeisdie=false;
this.planescore=score;
this.planehp=hp;
//移动
this.planemove=function(){
if(scores<=200){
this.imagenode.style.top=this.imagenode.offsetTop+this.planesudu+"px";
}
else if(scores>200&&scores<=500){
this.imagenode.style.top=this.imagenode.offsetTop+this.planesudu+1+"px";
}
else if(scores>500&&scores<=1000){
this.imagenode.style.top=this.imagenode.offsettop+this.planesudu+2+"px";
}
else{
this.imagenode.style.top=this.imagenode.offsettop+this.planesudu+3+"px";
}
}

//初始化飞机
this.init=function(){
    this.imagenode=document.createElement("img");
    this.imagenode.style.left=this.planeX+"px";
    this.imagenode.style.top=this.planeY+"px";
    this.imagenode.src=imagesrc;
    play.appendChild(this.imagenode);
}
this.init();

}
//***************************************************************************************
/*
创建本方飞机类
*/
function ourplane(X,Y){
var imagesrc="image/wdfj.gif";
plane.call(this,1,X,Y,66,80,0,660,0,"image/bffjbx.gif",imagesrc);
this.imagenode.setAttribute('id','ourplane');
}

/*
创建本方飞机
*/
var selfplane=new ourplane(120,485);
var ourPlane=$('ourplane');
//移动
var ourplanemove=function(){
var oevent=window.event||arguments[0];
var returne=oevent.srcElement||oevent.target;
var mouseX=oevent.clientX-500;
var mouseY=oevent.clientY;
ourPlane.style.left=mouseX-selfplane.planeW/2+"px";
ourPlane.style.top=mouseY-selfplane.planeH/2+"px";
// alert(ourPlane.planeW);
}
//暂停
var number=0;
var zanting=function(){
if(number==0){
pause.style.display="block";
if(document.removeEventListener){
play.removeEventListener("mousemove",ourplanemove,true);
body.removeEventListener("mousemove",chujie,true);
}
else if(document.detachEvent){
play.detachEventListener("onmousemove",ourplanemove);
body.detachEventListener("onmousemove",chujie);
}
window.clearInterval(set);
number=1;
}
else{
pause.style.display="none";
if(document.addEventListener){
play.addEventListener("mousemove",ourplanemove,true);
body.addEventListener("mousemove",chujie,true);
}
else if(document.attachEvent){
play.attaEventListener("onmousemove",ourplanemove);
body.attaEventListener("onmousemove",chujie);
}

      set=setInterval(startgame,20);
      number=0;
}

}

//本方飞机出界
var chujie=function(){
var e=window.event||arguments[0];
var mouseX=e.clientX;
var mouseY=e.clientY;
if(mouseX815||mouseY568){
if(document.removeEventListener){
play.removeEventListener("mousemove",ourplanemove,true);
}
else if(document.detachEvent){
play.detachEvent("onmousemove",ourplanemove);
}
}
else{
if(document.addEventListener){
play.addEventListener("mousemove",ourplanemove,true);
}
else if(document.attachEvent){
play.attachEvent("onmousemove",ourplanemove);
}
}
}

//添加事件
var body=document.getElementsByTagName("body")[0];
if(document.addEventListener){
play.addEventListener("mousemove",ourplanemove,true);
body.addEventListener("mousemove",chujie,true);
selfplane.imagenode.addEventListener("click",zanting,true);
pause.getElementsByTagName("button")[0].addEventListener("click",zanting,true);

}
else if(document.attachEvent){
play.attachEvent("onmousemove",ourplanemove);
body.attachEvent("onmousemove",chujie);
selfplane.imagenode.attachEvent("click",zanting);
pause.getElementsByTagName("button")[0].attachEvent("onclick",zanting);

}
//***************************************************************************************
/*
创建子弹类
*/
var bullet=function(x,y,width,height,bulletsrc){
this.bulletX=x;
this.bulletY=y;
this.bulletW=width;
this.bulletH=height;
this.bulletnode=null;
this.bullethp=1;

//子弹移动
this.bulletmove=function(){
    this.bulletnode.style.top=this.bulletnode.offsetTop-20+"px";
}

this.init=function(){
    this.bulletnode=document.createElement("img");
    this.bulletnode.style.left=this.bulletX+"px";
    this.bulletnode.style.top=this.bulletY+"px";
    this.bulletnode.src=bulletsrc;
    play.appendChild(this.bulletnode);
}
this.init();

}
//***************************************************************************************
//创建敌方飞机类
function enemy(hp,x,y,width,height,sudu,dietime,score,boomimage,enemysrc){
plane.call(this,hp,random(),-100,width,height,sudu,dietime,score,boomimage,enemysrc);
}
//敌方飞机横坐标
function random(){
return Math.floor(Math.random()*280);
}
//创建敌方飞机
var enemys=[];
var mark=0;
var mark1=0;
var backgroundPositionY=0;

//游戏开始
function startgame(){
play.style.backgroundPositionY=backgroundPositionY+"px";
backgroundPositionY+=0.5;
if(backgroundPositionY==568){
backgroundPositionY=0;
}
mark++;
if(mark==20){
mark1++;
if(mark1%5==0){
enemys.push(new enemy(6,25,274,46,60,3,360,random(),"image/zfjbz.gif","image/enemy3_fly_1.png"));
}
if(mark1==20){
enemys.push(new enemy(12,57,210,110,164,2,540,random(),"image/dfjbz.gif","image/enemy2_fly_1.png"));
mark1=0;
}
else{
enemys.push(new enemy(1,19,286,34,24,5,360,random(),"image/xfjbz.gif","image/enemy1_fly_1.png"));
}
mark=0;
}
//敌机移动
var enemyslen=enemys.length;
for(var i=0;i if(enemys[i].planeisdie!=true){
enemys[i].planemove();
}
var h=568-enemys[i].planeH;
if(enemys[i].imagenode.offsetTop>h){
play.removeChild(enemys[i].imagenode);
enemys.splice(i,1);
enemyslen--;
}
}

//单行子弹类
var singlebullet=function(X,Y){
bullet.call(this,X,Y,6,14,"image/bullet1.png");
}

var bullets=[];
/*
var bleft=this.planeW/2-this.bulletW/2;//66/2-6/2=33-3=30
var btop=this.bulletH;//14
*/
//创建子弹
if(mark%5==0){
bullets.push(new singlebullet(
parseInt(selfplane.imagenode.style.left)+30,
parseInt(selfplane.imagenode.style.top)-14
));
}

//移动子弹
var bulletslen=bullets.length;
for(var i=0;i<bulletslen;i++){
bullets[i].bulletmove();

if(bullets[i].bulletnode.offsetTop<0){
play.removeChild(bullets[i].bulletnode);
bullets.splice(i,1);
bulletslen--;

}
}
//飞机碰撞
for(var b=0;b for(var e=0;e if(enemys[e].planeisdie==false){
//我方飞机与敌机相撞
if(enemys[e].imagenode.offsetLeft=selfplane.imagenode.offsetLeft){
if(enemys[e].imagenode.offsetTop<=selfplane.imagenode.offsetTop+selfplane.imagenode.planeH&&enemys[e].imagenode.offsetTop+enemys[e].imagenode.planeH>=selfplane.imagenode.offsetTop){
selfplane.imagenode.src="image/bffjbx.gif";
end.style.display="block";
clearInterval(set);
if(document.removeEventListener){
play.removeEventListener("mousemove",ourplanemove,true);
play.removeEventListener("mousemove",chujie,true);
}
else if(document.detachEvent){
play.detachEvent("onmousemove",ourplanemove);
play.detachEvent("onmousemove",chujie);
}
}
}

        //敌机与子弹相撞
        if(bullets[b].bulletnode.offsetLeft<=enemys[e].imagenode.offsetLeft+enemys[e].imagenode.planeW&&bullets[b].bulletnode.offsetLeft+bullets[b].bulletnode.bulletW>=enemys[e].imagenode.offsetLeft){
            if(bullets[b].bulletnode.offsetTop<=enemys[e].imagenode.offsetTop+enemys[e].imagenode.planeH&&bullets[b].bulletnode.offsetTop+bullets[b].bulletnode.bulletH>=enemys[e].imagenode.offsetTop){
                enemys[e].planehp=enemys[e].planehp-bullets[b].bullethp;
                if(enemys[e].planehp==0){
                    enemys[e].imagenode.src=enemys[e].planeBoomimage;
                    scores=scores+enemys[e].planescore;
                    label.innerHTML=scores;
                    enemys[e].planeisdie=true;
                }
                play.removeChild(bullets[b].bulletnode);
                bullets.splice(b,1);
                bulletslen--;
                break;
            }

        }
    }
}

}

}

/*
开始游戏按钮点击事件
*/
var set;
function gameplay(){

start.style.display="none";
play.style.display="block";
selfplane.imagenode.style.display="block";

// scorediv.style.display="block";
/*
调用开始函数
*/
set=setInterval(startgame,20);
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
    • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 保护模式-系统加载-段寄存器
    • ¥15 电脑桌面设定一个区域禁止鼠标操作
    • ¥15 求NPF226060磁芯的详细资料