js新手写的打飞机游戏,面向过程写的。出了有的敌机不能打到的bug。希望大家帮忙看看

玩家大小60*60 敌机大小30*30 玩家子弹30*30 敌机子弹 15*15
代码如下 希望有高人指点一下
万分感谢。

window.onload=function(){
var num=1000;
var grade=0;
var oh=document.getElementsByTagName('h1');
var fj=Get('feiji');
var arr=[[],[],[]];
var di=setInterval(diji,1000);
bind(document,'keydown',Move(fj));


function move(obj,atr,dir,target,endFn){ //游戏元素移动
dir=parseInt(getstyle(obj,atr))<target?dir:-dir;
clearInterval(obj.timer);
obj.timer=setInterval(function(){
var speed=parseInt(getstyle(obj,atr))+dir;
if(speed>target&&dir>0||speed<target&&dir<0){
speed=target;
}
obj.style[atr]=speed+'px';
if(speed==target){
for(j=0;j<arr.length;j++){
for(i=0;i<arr[j].length;i++)
{
if(arr[j][i].offsetTop==target) {
arr[j][arr[j].length-1]
arr[j].splice(i,1);
}
}
}

document.body.removeChild(obj);
clearInterval(obj.timer);
endFn && endFn();
}


for(i=0;i<arr[1].length;i++) //判断敌方子弹是否命中
{
if(arr[1][i].offsetTop>fj.offsetTop-15&&arr[1][i].offsetTop<fj.offsetTop+60 && arr[1][i].offsetLeft>fj.offsetLeft-15&&arr[1][i].offsetLeft<fj.offsetLeft+60){
arr[1][i].parentNode.removeChild(arr[1][i]);
clearInterval(arr[1][i].timer);
arr[1].splice(i,1);
num --;
}


}
for(i=0;i<arr[0].length;i++) //判断玩家子弹是否命中
{
for(j=0;j<arr[2].length;j++){
if(arr[0][i].offsetTop>arr[2][j].offsetTop-30 && arr[0][i].offsetTop<arr[2][j].offsetTop+30 && arr[0][i].offsetLeft>arr[2][j].offsetLeft-30 && arr[0][i].offsetLeft<arr[2][j].offsetLeft+30){
arr[0][i].parentNode.removeChild(arr[0][i]);
arr[2][j].parentNode.removeChild(arr[2][j]);
clearInterval(arr[0][i].timer);
clearInterval(arr[2][j].timer);
arr[0].splice(i,1);
arr[2].splice(j,1);
grade++;

}


}



}
},15)
}



function diji(){ // 控制生成敌方飞机
var l=document.documentElement.clientWidth-30;
var h=document.documentElement.clientHeight-30;
img=document.createElement('img');
img.src='diji.png';
img.style.top=0;
img.style.left=(Math.random()*l)+'px';
arr[2].push(img);
document.body.appendChild(img);
move(img,'top',5,h);
create(img,0);


}





function create(obj,num){ //子弹生成
var im=[];
im[num] =document.createElement('img');
im[num].src=num>0?'zidan.png':'zidan1.png';
im[num].style.left=obj.style.left;
im[num].style.top=obj.style.top;
if(num<=0){arr[1].push(im[num]);}
else{arr[0].push(im[num]);}
document.body.appendChild(im[num]);
num>0?move(im[num],'top',10,0):move(im[num],'top',10,616);



}
function Move(obj){ //键盘时间感应以及玩家的移动
var json={};
document.onkeydown=function(ev){
var ev=ev||event;
ev.preventDefault();
json[ev.keyCode]=true;
}
var dan=setInterval(function(){
if(json[88]==true){ create(obj,1);}
},100);
var fei=setInterval(function(){
var t=obj.offsetLeft-20;
var p=obj.offsetTop-20;
var r=obj.offsetLeft+20;
var b=obj.offsetTop+20;
if(json[37]==true){if(t<0){t=0;}obj.style.left=t+"px";};
if(json[38]==true){if(p<0){p=0;}obj.style.top=p+"px";};
if(json[39]==true){if(r>document.documentElement.clientWidth-60){r=document.documentElement.clientWidth-60;}obj.style.left=r+"px";};
if(json[40]==true){if(b>document.documentElement.clientHeight-60){b=document.documentElement.clientHeight-60;}obj.style.top=b+"px";};
oh[0].innerHTML='当前血量为'+num;
oh[1].innerHTML='得分'+grade;
if(num==0){
alert('game over');clearInterval(fei);clearInterval(di);clearInterval(zidan);
clearInterval(dan);
btn.style.display='block';
}
},30);

document.onkeyup = function(ev){
delete json[ev.keyCode];

};

}


}
...全文
237 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
在该游戏中,玩家可以使用箭头键来移动飞机,使用空格键来发射子弹。游戏中的敌方飞机会从右侧进入并向左飞行,玩家需要尽可能击落敌机,同时避免与敌机相撞。此外,在游戏过程中,玩家可以得到得分,而敌机撞击到屏幕左侧或与玩家的飞机相撞时,玩家将失去得分并且游戏结束。在该游戏中,玩家可以使用箭头键来移动飞机,使用空格键来发射子弹。游戏中的敌方飞机会从右侧进入并向左飞行,玩家需要尽可能击落敌机,同时避免与敌机相撞。此外,在游戏过程中,玩家可以得到得分,而敌机撞击到屏幕左侧或与玩家的飞机相撞时,玩家将失去得分并且游戏结束。在该游戏中,玩家可以使用箭头键来移动飞机,使用空格键来发射子弹。游戏中的敌方飞机会从右侧进入并向左飞行,玩家需要尽可能击落敌机,同时避免与敌机相撞。此外,在游戏过程中,玩家可以得到得分,而敌机撞击到屏幕左侧或与玩家的飞机相撞时,玩家将失去得分并且游戏结束。在该游戏中,玩家可以使用箭头键来移动飞机,使用空格键来发射子弹。游戏中的敌方飞机会从右侧进入并向左飞行,玩家需要尽可能击落敌机,同时避免与敌机相撞。此外,在游戏过程中,玩家可以得到得分,而敌机撞击到屏幕左侧或与玩家的飞机相撞时,玩家
基于JAVA打飞机游戏设计的毕业设计,主要实现飞机大战游戏的设计与实现。游戏设计包括游戏场景设计、游戏角色设计、游戏规则设计等;游戏实现包括游戏场景画面实现、游戏角色实现、游戏规则实现、游戏逻辑实现等。 游戏场景设计:设计游戏场景,包括背景画面、地图等。本设计选择宇宙空间作为游戏背景。地图设计为5*5的方格,每个方格表示一个位置。 游戏角色设计:设计游戏中的主要角色,包括我方飞机、敌方飞机、子弹等。我方飞机选择战斗机作为主角;敌方飞机选择敌机为主要敌人;子弹选择炮弹作为攻击武器。 游戏规则设计:设计游戏的规则,包括游戏开始与结束条件、玩家操作规则、敌机行动规则、碰撞规则等。游戏开始条件为玩家按下开始键;结束条件为玩家飞机被全部击毁或敌机被全部击毁;玩家通过方向键控制我方飞机移动;敌机通过随机生成的方式行动;碰撞规则为两者被视为相撞。 游戏逻辑实现:实现游戏的核心逻辑,包括游戏开始、游戏循环、玩家操作、敌机行动、碰撞检测、游戏结束等。通过不断循环的方式实现游戏的持续运行,直至游戏结束条件满足。 通过以上设计与实现,完成了基于JAVA的飞机大战游戏的设计与开发。游戏具有较好的游戏

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧