#include "proj.h"


void scaping(int i,int j)
{
 int k,l;
 for(k = -RANGE;k < RANGE+1;k++){
   for(l = -RANGE;l < RANGE+1;l++){
     if(i+k < 0 || i+k >= NMax || j+l < 0 || j+l >= NMax ||
	Scape[i+k][j+l] == OCCUPY)continue;
     Scape[i+k][j+l] *= scale[k+RANGE][l+RANGE];
   }
 }
 Scape[i][j] = OCCUPY;
}

int step(int ind)
{
 int res,I,J,i,j,k,i1,j1,i2,j2;
 float v,dv,tmpv,rand1,rand2,oldv,rand;
 float pv[9];
 char tmp[100];

 res = 0;
 I = pt[ind].i;
 J = pt[ind].j;
 v = 100.;
 k = 0;

 tmpv = Scape[I-1][J]*(Scape[I-1][J] != OCCUPY)
       +Scape[I][J+1]*(Scape[I][J+1] != OCCUPY)
       +Scape[I+1][J]*(Scape[I+1][J] != OCCUPY)
       +Scape[I][J-1]*(Scape[I][J-1] != OCCUPY);

 if(tmpv < 1e-3){
   for(k = ind;k < npt-1;k++){
     pt[k].i = pt[k+1].i;
     pt[k].j = pt[k+1].j;
   }
   npt--;
   return -1;
 }


 rand = drand48();
 if(rand < .25)I -= 1;
 else if(rand < .5)J += 1;
 else if(rand < .75)I += 1;
 else J -= 1;
 
 if(I < 0 || I >= NMax || J < 0 || J >= NMax || Scape[I][J] == OCCUPY)return 0;
 rand = drand48();
 if(rand  > Scape[I][J])return 0; 
 
   scaping(I,J);
   sprintf(tmp,"%d   %d\n",I,J);
   write(fdl,tmp,strlen(tmp));
   pt[npt].i = I;
   pt[npt].j = J;
   npt++;
   return 1;
}