Simple GIS

GISプログラムの練習

change

package svg2;


public class change{

    int card=new int[9][9];
    int vx=new int[9];
 int vy=new int[9];

void makedata(int trial,int px,int py){

vec();

graph(trial,px,py);

card[px][py]=trial;

}
void vec(){

vx[1]=1;
vx[2]=1;
vx[3]=1;
vx[4]=0;
vx[5]=0;
vx[6]=-1;
vx[7]=-1;
vx[8]=-1;

vy[1]=1;
vy[2]=0;
vy[3]=-1;
vy[4]=1;
vy[5]=-1;
vy[6]=1;
vy[7]=0;
vy[8]=-1;    
    
}

void change(int trial,int px,int py,int v,int minpoint){
int x1,y1,s;
 for(s=1;s<minpoint;s++){
    x1=px+vx[v]*s;
    y1=py+vy[v]*s;
    card[x1][y1]=trial;
    }   

}

void graph(int trial,int px,int py){
int v,mx,nx,ch,check;
check=0;
for(v=1;v<9;v++){
mx=maxpoint(px,py,v);
nx=0;
if(mx>1)nx=minpoint(trial,px,py,v,mx);
ch=100;
if(nx>1)ch=check(trial,px,py,v,nx);
if(ch<50)change(trial,px,py,v,nx);
}   
}
int check(int trial,int px,int py,int v,int mp){
 int s,x1,y1,ch;
 ch=0;
    for(s=1;s<mp;s++){
    x1=px+vx[v]*s;
    y1=py+vy[v]*s;
    if(card[x1][y1]==0)ch=100;
    }   
return ch;
}


int minpoint(int trial,int px,int py,int v,int mp){
int s,x1,y1,h,minp;
minp=0;
    for(s=1;s<mp+1;s++){
    x1=px+vx[v]*s;
    y1=py+vy[v]*s;
    h=0;
    if(card[x1][y1]==trial)h=h+1;
    if(minp==0)h=h+1;
    if(h==2)minp=s;
    }

return minp;    
}

int maxpoint(int px,int py,int v){
int t1,maxp,s,x1,y1,h;
maxp=0;
for(s=1;s<8;s++){
x1=px+vx[v]*s;
y1=py+vy[v]*s;
h=0;
if(x1<9)h=h+1;
if(x1>0)h=h+1;
if(y1<9)h=h+1;
if(y1>0)h=h+1;
if(h==4)maxp=s;
}
return maxp;    
}
}