Gleeok
12-13-2008, 08:45 AM
I'm getting odd behavior from this script, then a crash after j becomes greater than 2ish. Not sure why. Nothing out of Allegro log either. Am I doing something wrong here? This is the first time I've been messing with enemy arrays.
Sorry for the single letter variable names, I know that it is bad practice, but I'm in a hurry. :P ...So basically:
i,j - variables for for loops
d,c - variables for the enemies X movement
spacing - X distance the enemy waves are apart from each other.
ffc script enemy_test{
void run(){
int d;int c=240;
npc e[100];
int i;int j;int k;
int spacing=24;
int loops=spacing*9;
for(i=0;i<=99;i++)
{
e[i]=Screen->CreateNPC(22);
e[i]->X=-16;e[i]->Y=-16;
}
while(true){
d=0;k=0;
for(j=0;j<10;j++)
{
d=0;k=0;c=240;
while(d++<540+256)
{
Waitframe();
c-=2;d++;
if(d%spacing<2 && k<100)k+=10;
for(i=0;i<100 && k>i;i++)
{
if(i%2==0){
if(e[i]->isValid())
{
if(i<=10)e[i]->X=d;
else if(i<=20)e[i]->X=d-spacing;
else if(i<=30)e[i]->X=d-spacing*2;
else if(i<=40)e[i]->X=d-spacing*3;
else if(i<=50)e[i]->X=d-spacing*4;
else if(i<=60)e[i]->X=d-spacing*5;
else if(i<=70)e[i]->X=d-spacing*6;
else if(i<=80)e[i]->X=d-spacing*7;
else if(i<=90)e[i]->X=d-spacing*8;
else e[i]->X=d-spacing*9;
e[i]->Y=(i%9)*16;
}
}
else{
if(e[i]->isValid())
{
if(i<=10)e[i]->X=c;
else if(i<=20)e[i]->X=c+spacing;
else if(i<=30)e[i]->X=c+spacing*2;
else if(i<=40)e[i]->X=c+spacing*3;
else if(i<=50)e[i]->X=c+spacing*4;
else if(i<=60)e[i]->X=c+spacing*5;
else if(i<=70)e[i]->X=c+spacing*6;
else if(i<=80)e[i]->X=c+spacing*7;
else if(i<=90)e[i]->X=c+spacing*8;
else e[i]->X=c+spacing*9;
e[i]->Y=((i%9)+1)*16;
}
}
}
for(i=k;i<100;i++)
{
if(e[i]->isValid())
{
e[i]->X=-16;e[i]->Y=-16;
}
}
}
for(i=0;i<100;i++)
{
if(e[i]->isValid())
{
e[i]->X=-16;e[i]->Y=-16;
}
else
{
e[i]=Screen->CreateNPC(22);
e[i]->X=-16;e[i]->Y=-16;
}
}
}
}
}
}
Sorry for the single letter variable names, I know that it is bad practice, but I'm in a hurry. :P ...So basically:
i,j - variables for for loops
d,c - variables for the enemies X movement
spacing - X distance the enemy waves are apart from each other.
ffc script enemy_test{
void run(){
int d;int c=240;
npc e[100];
int i;int j;int k;
int spacing=24;
int loops=spacing*9;
for(i=0;i<=99;i++)
{
e[i]=Screen->CreateNPC(22);
e[i]->X=-16;e[i]->Y=-16;
}
while(true){
d=0;k=0;
for(j=0;j<10;j++)
{
d=0;k=0;c=240;
while(d++<540+256)
{
Waitframe();
c-=2;d++;
if(d%spacing<2 && k<100)k+=10;
for(i=0;i<100 && k>i;i++)
{
if(i%2==0){
if(e[i]->isValid())
{
if(i<=10)e[i]->X=d;
else if(i<=20)e[i]->X=d-spacing;
else if(i<=30)e[i]->X=d-spacing*2;
else if(i<=40)e[i]->X=d-spacing*3;
else if(i<=50)e[i]->X=d-spacing*4;
else if(i<=60)e[i]->X=d-spacing*5;
else if(i<=70)e[i]->X=d-spacing*6;
else if(i<=80)e[i]->X=d-spacing*7;
else if(i<=90)e[i]->X=d-spacing*8;
else e[i]->X=d-spacing*9;
e[i]->Y=(i%9)*16;
}
}
else{
if(e[i]->isValid())
{
if(i<=10)e[i]->X=c;
else if(i<=20)e[i]->X=c+spacing;
else if(i<=30)e[i]->X=c+spacing*2;
else if(i<=40)e[i]->X=c+spacing*3;
else if(i<=50)e[i]->X=c+spacing*4;
else if(i<=60)e[i]->X=c+spacing*5;
else if(i<=70)e[i]->X=c+spacing*6;
else if(i<=80)e[i]->X=c+spacing*7;
else if(i<=90)e[i]->X=c+spacing*8;
else e[i]->X=c+spacing*9;
e[i]->Y=((i%9)+1)*16;
}
}
}
for(i=k;i<100;i++)
{
if(e[i]->isValid())
{
e[i]->X=-16;e[i]->Y=-16;
}
}
}
for(i=0;i<100;i++)
{
if(e[i]->isValid())
{
e[i]->X=-16;e[i]->Y=-16;
}
else
{
e[i]=Screen->CreateNPC(22);
e[i]->X=-16;e[i]->Y=-16;
}
}
}
}
}
}