funcode编程问题

void enemyattack2( )
{
    int timeam[2]= {1500,500};
    if (timea[1]<=0)
    {
        char *enemybullet2 = dMakeSpriteName("enemybullet2",p);
        p++;
        float fMouseX=dGetSpritePositionX("me");
        float fMouseY=dGetSpritePositionY("me");
        float speedX;
        float speedY;
        dCloneSprite("b3",enemybullet2);
        float tmpX=dGetSpritePositionX("enemy2");
        float tmpY=dGetSpritePositionY("enemy2");
        speedX=(fMouseX-tmpX)/sqrt((fMouseX-tmpX)*(fMouseX-tmpX)+(fMouseY-tmpY)*(fMouseY-tmpY));
        speedY=(fMouseY-tmpY)/sqrt((fMouseX-tmpX)*(fMouseX-tmpX)+(fMouseY-tmpY)*(fMouseY-tmpY));
        dSetSpritePosition(enemybullet2,tmpX,tmpY);
        dSetSpriteLinearVelocity(enemybullet2,15*speedX,15*speedY);
        timea[1]=timeam[1];
    }
    else
    {
        timea[1]--;
    }
    if(timea[0]<=0)
    {
        for(int j=0; j<8; j++)
        {
            char *enemybullet2 = dMakeSpriteName("enemybullet2di1",j);
            float speedX;
            float speedY;
            dCloneSprite("dici",enemybullet2);
            dSetSpritePosition(enemybullet2,0,0);
        }
        dSetSpriteLinearVelocity("enemybullet2di10",14,14);
        dSetSpriteLinearVelocity("enemybullet2di11",14,-14);
        dSetSpriteLinearVelocity("enemybullet2di12",-14,14);
        dSetSpriteLinearVelocity("enemybullet2di13",-14,-14);
        dSetSpriteLinearVelocity("enemybullet2di14",20,0);
        dSetSpriteLinearVelocity("enemybullet2di15",-20,0);
        dSetSpriteLinearVelocity("enemybullet2di16",0,20);
        dSetSpriteLinearVelocity("enemybullet2di17",0,-20);
        timea[0]=timeam[0];
    }
    else
    {
        timea[0]--;
    }
}

能不能来个好人讲讲这串代码的意思呀,最好能着重讲一下timeam和timea的意思

void enemyattack2()
{
    int timeam[2] = { 1500,500 };   // timeam是一个包含两个元素的整型数组,存储了时间间隔的数值(1500和500)
    if (timea[1] <= 0)              // 如果timea数组的第二个元素小于等于0
    {
        char* enemybullet2 = dMakeSpriteName("enemybullet2", p); // 创建一个名为enemybullet2的敌人子弹精灵
        p++; // p自增
        float fMouseX = dGetSpritePositionX("me"); // 获取名为"me"的精灵的X坐标
        float fMouseY = dGetSpritePositionY("me"); // 获取名为"me"的精灵的Y坐标
        float speedX;
        float speedY;
        dCloneSprite("b3", enemybullet2);           // 通过克隆精灵b3来创建enemybullet2精灵
        float tmpX = dGetSpritePositionX("enemy2"); // 获取名为"enemy2"的敌人精灵的X坐标
        float tmpY = dGetSpritePositionY("enemy2"); // 获取名为"enemy2"的敌人精灵的Y坐标
        speedX = (fMouseX - tmpX) / sqrt((fMouseX - tmpX) * (fMouseX - tmpX) + (fMouseY - tmpY) * (fMouseY - tmpY)); // 计算敌人子弹的X轴速度
        speedY = (fMouseY - tmpY) / sqrt((fMouseX - tmpX) * (fMouseX - tmpX) + (fMouseY - tmpY) * (fMouseY - tmpY)); // 计算敌人子弹的Y轴速度
        dSetSpritePosition(enemybullet2, tmpX, tmpY);                       // 设置敌人子弹的位置为enemy2敌人精灵的位置
        dSetSpriteLinearVelocity(enemybullet2, 15 * speedX, 15 * speedY);   // 设置敌人子弹的线性速度
        timea[1] = timeam[1];       // 将timea数组的第二个元素设置为timeam数组的第二个元素
    }
    else
    {
        timea[1]--; // 否则,将timea数组的第二个元素减1
    }
    if (timea[0] <= 0) // 如果timea数组的第一个元素小于等于0
    {
        for (int j = 0; j < 8; j++) // 循环8次
        {
            char* enemybullet2 = dMakeSpriteName("enemybullet2di1", j); // 创建名为enemybullet2di1的敌人子弹精灵
            float speedX;
            float speedY;
            dCloneSprite("dici", enemybullet2);         // 通过克隆精灵dici来创建enemybullet2di1精灵
            dSetSpritePosition(enemybullet2, 0, 0);     // 设置敌人子弹的位置为(0,0)
        }
        dSetSpriteLinearVelocity("enemybullet2di10", 14, 14); // 设置敌人子弹精灵的线性速度
        // 设置其他敌人子弹精灵的线性速度(类似上一行的代码)
        timea[0] = timeam[0]; // 将timea数组的第一个元素设置为timeam数组的第一个元素
    }
    else
    {
        timea[0]--; // 否则,将timea数组的第一个元素减1
    }
}
/*
timeam数组存储了两个时间间隔的数值,分别对应不同的攻击行为。每当一个攻击行为执行完毕后,相应的时间间隔会被重置,并在下一次攻击时重新倒计时。
*/

/*
timea数组用于记录每个攻击行为的剩余时间。当timea数组的元素小于等于0时,表示对应的攻击行为可以执行。执行完毕后,重新设置timea数组的值。否则,将对应的时间间隔元素减1。
*/
void enemyattack2()
{
    int timeam[2] = { 1500,500 };   // timeam是一个包含两个元素的整型数组,存储了时间间隔的数值(1500和500)
    if (timea[1] <= 0)              // 如果timea数组的第二个元素小于等于0
    {
        char* enemybullet2 = dMakeSpriteName("enemybullet2", p); // 创建一个名为enemybullet2的敌人子弹精灵
        p++; // p自增
        float fMouseX = dGetSpritePositionX("me"); // 获取名为"me"的精灵的X坐标
        float fMouseY = dGetSpritePositionY("me"); // 获取名为"me"的精灵的Y坐标
        float speedX;
        float speedY;
        dCloneSprite("b3", enemybullet2);           // 通过克隆精灵b3来创建enemybullet2精灵
        float tmpX = dGetSpritePositionX("enemy2"); // 获取名为"enemy2"的敌人精灵的X坐标
        float tmpY = dGetSpritePositionY("enemy2"); // 获取名为"enemy2"的敌人精灵的Y坐标
        speedX = (fMouseX - tmpX) / sqrt((fMouseX - tmpX) * (fMouseX - tmpX) + (fMouseY - tmpY) * (fMouseY - tmpY)); // 计算敌人子弹的X轴速度
        speedY = (fMouseY - tmpY) / sqrt((fMouseX - tmpX) * (fMouseX - tmpX) + (fMouseY - tmpY) * (fMouseY - tmpY)); // 计算敌人子弹的Y轴速度
        dSetSpritePosition(enemybullet2, tmpX, tmpY);                       // 设置敌人子弹的位置为enemy2敌人精灵的位置
        dSetSpriteLinearVelocity(enemybullet2, 15 * speedX, 15 * speedY);   // 设置敌人子弹的线性速度
        timea[1] = timeam[1];       // 将timea数组的第二个元素设置为timeam数组的第二个元素
    }
    else
    {
        timea[1]--; // 否则,将timea数组的第二个元素减1
    }
    if (timea[0] <= 0) // 如果timea数组的第一个元素小于等于0
    {
        for (int j = 0; j < 8; j++) // 循环8次
        {
            char* enemybullet2 = dMakeSpriteName("enemybullet2di1", j); // 创建名为enemybullet2di1的敌人子弹精灵
            float speedX;
            float speedY;
            dCloneSprite("dici", enemybullet2);         // 通过克隆精灵dici来创建enemybullet2di1精灵
            dSetSpritePosition(enemybullet2, 0, 0);     // 设置敌人子弹的位置为(0,0)
        }
        dSetSpriteLinearVelocity("enemybullet2di10", 14, 14); // 设置敌人子弹精灵的线性速度
        // 设置其他敌人子弹精灵的线性速度(类似上一行的代码)
        timea[0] = timeam[0]; // 将timea数组的第一个元素设置为timeam数组的第一个元素
    }
    else
    {
        timea[0]--; // 否则,将timea数组的第一个元素减1
    }
}
/*
timeam数组存储了两个时间间隔的数值,分别对应不同的攻击行为。每当一个攻击行为执行完毕后,相应的时间间隔会被重置,并在下一次攻击时重新倒计时。
*/

/*
timea数组用于记录每个攻击行为的剩余时间。当timea数组的元素小于等于0时,表示对应的攻击行为可以执行。执行完毕后,重新设置timea数组的值。否则,将对应的时间间隔元素减1。
*/