Javascript JS Galaxian射击者敌人射击

Javascript JS Galaxian射击者敌人射击,javascript,list,Javascript,List,嘿,我想做一个超级简单的加拉西安射击游戏。我在让敌人名单上的所有敌人分开射击时遇到了一个问题。现在,只有一个人开枪。我知道在这段代码中有很多更好的方法来做事情,我只是还没有使它变得有效,我正在修复它,所以请不要对此发表任何意见。第193行、第86行、第72行和第42行都与enemyBulletList有关,如果有帮助的话 var c=document.getElementById(“myCanvas”); ctx=c.getContext(“2d”); 键=[]; 宽度=500; 高度=500

嘿,我想做一个超级简单的加拉西安射击游戏。我在让敌人名单上的所有敌人分开射击时遇到了一个问题。现在,只有一个人开枪。我知道在这段代码中有很多更好的方法来做事情,我只是还没有使它变得有效,我正在修复它,所以请不要对此发表任何意见。第193行、第86行、第72行和第42行都与enemyBulletList有关,如果有帮助的话

var c=document.getElementById(“myCanvas”);
ctx=c.getContext(“2d”);
键=[];
宽度=500;
高度=500;
项目清单={};
enemyBulletList={};
enemyList={};
灌肠量=10;
变量播放器={
x:400,
y:450,
speedX:7,
速度:7,,
宽度:32,
身高:32,
惠普:3,
计时器:0,
CD:1,
};
冷却时间=函数(){
player.shootCdTimer--;
}
设定间隔(冷却时间,500);
onGameStart=函数(){
generateEnemy();
生成沸点();
generateEnemyBullet();
设置间隔(ChangeneMyDirection,2000年);
设置间隔(changenemydirection24000);
}
设置超时(onGameStart,0);
Bullet=功能(id、x、y、speedX、speedY、宽度、高度){
变量asd={
x:x,
y:y,
speedX:speedX,
斯皮蒂:斯皮蒂,
姓名:'B',
id:id,
宽度:宽度,
高度:高度,,
颜色:'黑色',
};
项目清单[id]=asd;
}
generateBullet=函数(){
var x=player.x;
var y=player.y;
var宽度=5;
var高度=15;
var id=Math.random();
var-speedX=0;
var=15;
项目符号(id、x、y、speedX、speedY、宽度、高度);
}
EnemyBullet=函数(id、x、y、speedX、speedY、宽度、高度){
变量asd={
x:x,
y:y,
speedX:speedX,
斯皮蒂:斯皮蒂,
姓名:'B',
id:id,
宽度:宽度,
高度:高度,,
颜色:'黑色',
};
enemyBulletList[id]=asd;
}
generateEnemyBullet=函数(){
for(enemyList中的var键3){
var x=enemyList[key3].x;
var y=enemyList[key3].y;
}
var宽度=5;
var高度=15;
var id=Math.random();
var-speedX=0;
var=-15;
EnemyBullet(id、x、y、speedX、speedY、宽度、高度);
}
敌人=功能(id、x、y、速度x、速度、宽度、高度){
变量asd={
x:x,
y:y,
speedX:speedX,
斯皮蒂:斯皮蒂,
姓名:'B',
id:id,
宽度:宽度,
高度:高度,,
颜色:'红色',
};
enemyList[id]=asd;
}
generateEnemy=函数(){
var x=50;
变量y=50;
var宽度=32;
var高度=32;
var-id=1;
var-speedX=2;
var=0;
敌人(id、x、y、速度x、速度、宽度、高度);
敌人(id*2,x*2,y,speedX,speedY,宽度,高度);
敌人(id*3,x*3,y,speedX,speedY,宽度,高度);
敌人(id*4,x*4,y,speedX,speedY,宽度,高度);
敌人(id*5,x*5,y,speedX,speedY,宽度,高度);
敌人(id*6,x,y*2,speedX,speedX,宽度,高度);
敌人(id*7,x*2,y*2,speedX,speed,width,height);
敌人(id*8,x*3,y*2,speedX,speed,width,height);
敌人(id*9,x*4,y*2,speedX,Speed,width,height);
敌人(id*10,x*5,y*2,speedX,speed,width,height);
}
changenemydirection=函数(){
for(enemyList中的var键){
如果(enemyList[key].speedX>0){
enemyList[key].speedX*=-1;
}
}
}
changenemydirection2=函数(){
for(enemyList中的var键){
如果(enemyList[key].speedX<0){
enemyList[key].speedX*=-1;
}
}
}
函数更新(){
ctx.clearRect(0,0,宽度,高度);
ctx.fillRect(player.x,player.y,player.width,player.height);
如果(灌肠量<1){
generateEnemy();
灌肠量=10;
}
如果(播放器x<播放器宽度/2){
player.x=player.width/2;
}
if(player.x>width-player.width){
player.x=宽度-player.width;
}
如果(玩家y<高度-150){
player.y=高度-150;
}
如果(player.y>高度-32){
player.y=高度-33;
}
如果(键[39]){//右箭头
player.x+=player.speedX;
}
如果(键[37]){//左箭头
player.x-=player.speedX;
}
如果(键[38]){//向上箭头
player.y-=player.speedY;
}
如果(键[40]){//向下箭头
player.y+=player.speedY;
}
if(键[32]){//空格键

如果(player.shootcdtimer)在
generateEnemyBullet()
中的
循环没有意义:每次迭代都会覆盖上一次迭代的
x
y
值,但不会对
x
y
执行任何操作,因此调用
EnemyBullet()
只使用最后一个敌人的
x
y
。也许该函数中的其余行应该在循环中?我一直在尝试新的东西,但我就是无法让它工作。你有什么其他想法,或者你可以自己测试它吗?@nnnn
没有意义:每次迭代都会覆盖上一次迭代的
x
y
值,但不会对
x
y
执行任何操作,因此调用
EnemyBullet()
只使用最后一个敌人的
x
y
。也许该函数中的其余行应该在循环中?我一直在尝试新的东西,但我就是无法让它工作。你有什么其他想法,或者你可以自己测试一下吗?@nnnnnn