Javascript Jquery Html5游戏-无法读取';1';未定义

Javascript Jquery Html5游戏-无法读取';1';未定义,javascript,jquery,html,html5-canvas,Javascript,Jquery,Html,Html5 Canvas,我正在用jquery和html画布创建一个游戏,但我一直收到一个错误。 当游戏只运行僵尸和第二个僵尸移动时,BossZombie会保持静止,我会出错 Uncaught TypeError: Cannot read property '1' of undefined on line 159 这是-if(Secondzombies[i][1]>player_y) 但是僵尸移动得很好,它的老板不移动(需要移动) 我有3个敌人,每个都是在游戏开始时创建的,然后通过setInterval更新 我要更新的

我正在用jquery和html画布创建一个游戏,但我一直收到一个错误。 当游戏只运行僵尸和第二个僵尸移动时,BossZombie会保持静止,我会出错

Uncaught TypeError: Cannot read property '1' of undefined on line 159
这是-if(Secondzombies[i][1]>player_y)

但是僵尸移动得很好,它的老板不移动(需要移动)

我有3个敌人,每个都是在游戏开始时创建的,然后通过setInterval更新

我要更新的循环如下

function DrawZombies() { // Draw and update all zombies
for (var i = 0; i < zombies.length; i++) {
    ctx.drawImage(zombie, zombies[i][0], zombies[i][1]);
}for (var i = 0; i < Secondzombies.length; i++) {
    ctx.drawImage(SecondZombie, Secondzombies[i][0], Secondzombies[i][1]);
}for (var i = 0; i < BossZombies.length; i++) {
    ctx.drawImage(BossZombie, BossZombies[i][0], BossZombies[i][1]);
}

// move Zombies
for (var i = 0; i < zombies.length; i++) 
{
    // zombies 1
    if (zombies[i][1] > player_y) { // move zombie towards player on the y axis
        zombies[i][1] -= zombies[i][4];
    } else {
        zombies[i][1] += zombies[i][4];
    } 

    if (zombies[i][0] > player_x) {
        zombies[i][0] -= zombies[i][4]; // move zombie towards player on the x axis
    } else {
        zombies[i][0] += zombies[i][4];
    }
}

for (var i = 0; Secondzombies.length; i++)
{
    // zombies 2
    if (Secondzombies[i][1] > player_y) { // move zombie towards player on the y axis
        Secondzombies[i][1] -= Secondzombies[i][4];
    } else {
        Secondzombies[i][1] += Secondzombies[i][4];
    } 

    if (Secondzombies[i][0] > player_x) {
        Secondzombies[i][0] -= Secondzombies[i][4]; // move zombie towards player on the x axis
    } else {
        Secondzombies[i][0] += Secondzombies[i][4];
    }
}

for (var i = 0; BossZombies.length; i++)
    {
    // zombies 3
    if (BossZombies[i][1] > player_y) { // move zombie towards player on the y axis
        BossZombies[i][1] -= BossZombies[i][4];
    } else {
        BossZombies[i][1] += BossZombies[i][4];
    } 

    if (BossZombies[i][0] > player_x) {
        BossZombies[i][0] -= BossZombies[i][4]; // move zombie towards player on the x axis
    } else {
        BossZombies[i][0] += BossZombies[i][4];
    }
}
} 
函数DrawZombies(){//绘制并更新所有僵尸
对于(var i=0;iplayer_y){//将僵尸移向y轴上的玩家
僵尸[i][1]-=僵尸[i][4];
}否则{
僵尸[i][1]+=僵尸[i][4];
} 
如果(僵尸[i][0]>player_x){
僵尸[i][0]-=僵尸[i][4];//将僵尸移向x轴上的玩家
}否则{
僵尸[i][0]+=僵尸[i][4];
}
}
对于(var i=0;Secondzombies.length;i++)
{
//僵尸2
如果(第二个僵尸[i][1]>player_y){//将僵尸移向y轴上的玩家
Secondzombies[i][1]-=Secondzombies[i][4];
}否则{
第二僵尸[i][1]+=第二僵尸[i][4];
} 
如果(第二个僵尸[i][0]>玩家x){
第二僵尸[i][0]-=第二僵尸[i][4];//将僵尸移向x轴上的玩家
}否则{
第二僵尸[i][0]+=第二僵尸[i][4];
}
}
for(var i=0;BossZombies.length;i++)
{
//僵尸3
如果(BossZombies[i][1]>player_y){//将僵尸移向y轴上的玩家
BossZombies[i][1]=BossZombies[i][4];
}否则{
BossZombies[i][1]+=BossZombies[i][4];
} 
if(BossZombies[i][0]>player_x){
BossZombies[i][0]-=BossZombies[i][4];//将僵尸移向x轴上的玩家
}否则{
BossZombies[i][0]+=BossZombies[i][4];
}
}
} 
每个僵尸的创建如下

for (var i = 0; i < zombie_total; i++) {
    var TypeOfZombie = 1 + Math.floor(Math.random() * 6); // generate random number for type of zombie
    if (TypeOfZombie <= 4) { // create type one zombie
        zombies.push([Math.round(Math.random()*(width-20)/1), Math.round(Math.random()*(height-250)/1), zombie_width, zombie_height, zombie_speed]);
        zombie_x += zombie_width + 50;

    } else if (TypeOfZombie == 5) { 
        Secondzombies.push([Math.round(Math.random()*(width-20)/1), Math.round(Math.random()*(height-250)/1), Secondzombie_width, Secondzombie_height, Secondzombie_speed]);
        Secondzombie_x += Secondzombie_width + 50;
    } else { // leaves only a 6 generated so generate boss
        BossZombies.push([Math.round(Math.random()*(width-20)/1), Math.round(Math.random()*(height-250)/1), BossZombie_width, BossZombie_height, BossZombie_speed]);
        BossZombie_x += BossZombie_width + 50;
    }
}
for(变量i=0;iif(TypeOfZombie看起来问题出在for()循环上

例如,看看这一行

for (var i = 0; Secondzombies.length; i++)
这将运行Secondzombies中的所有项,但不会正确终止(即,它将溢出数组),因为条件“Secondzombies.length”的计算结果始终为“true”

也许可以将其(以及Bosszombies循环)替换为

for(var i=0;i
真不敢相信我错过了,非常感谢你让我发疯,想知道这是我的荣幸。有时候你只需要一双眼睛。
for (var i = 0; i < Secondzombies.length; i++)