アットウィキロゴ

cdcccLL

package koma;
 
import java.util.Random;
 
public class step {
 
    String[] koma=new String[7];
  int[] pos=new int[7];
  String[] hand=new String[7];  
  int[] x=new int[10];
  int[] y=new int[10];
 
int[] dy=new int[100];
        int[] dx=new int[100];
        int number_dir;
String mode;
 
int number_sel;
int[] koma_sel=new int[11];
int[][] pos_ch=new int[101][7];
int number_ch;
int[][] pos_chx=new int[101][7];
String[][] hand_chx=new String[101][7];
int number_chx;
  int[][] pos_sig=new int[100][10];
int game;
  int[][] pos_two=new int[50][9];
    int number_two;
 
    void makedata(){
 
 
        int x1,y1;
        int n=0;
        for (y1=1;y1<4;y1++){
        for (x1=1;x1<4;x1++){
        n=n+1;
        x[n]=x1;
        y[n]=y1;        
        }}
 
        select();
 
        int s,sx;
        int number_sig=0;
        int[] sig=new int[100];
        int[] sigx=new int[100];
 
 
 
        for(s=1;s<number_sel+1;s++){
        int s1=koma_sel[s];
        makedir(hand[s1],koma[s1]);
        int p1=pos[s1];
        int x2=x[p1];
        int y2=y[p1];
        for(sx=1;sx<number_dir+1;sx++){
        int x3=x2+dx[sx];
        int y3=y2+dy[sx];
        int p2=point(x3,y3);
 
        if(p2>0)number_sig=number_sig+1;
        if(p2>0)sig[number_sig]=s1;
        if(p2>0)sigx[number_sig]=p2;
        }
        }
 
        for(s=1;s<number_sig+1;s++){
        for(sx=1;sx<7;sx++){
        pos_sig[s][sx]=pos[sx];    
        }
        int s1=sig[s];
        pos_sig[s][s1]=sigx[s];
        }
 
 
        number_ch=0;
       int tr;
        for(tr=1;tr<number_sig+1;tr++){
        if(check(tr)<50){
        number_ch=number_ch+1; 
         for(sx=1;sx<7;sx++){
        pos_ch[number_ch][sx]=pos_sig[tr][sx];    
        }
        } 
       }
 
 
 
 
 
   change();
 
   two sub2=new two();
   sub2.hand=hand;
   sub2.pos=pos;
   sub2.mode=mode;
   sub2.makedata();
   pos_two=sub2.pos_two;
   number_two=sub2.number_two;
 
 
   for(tr=1;tr<number_two+1;tr++){
        number_ch=number_ch+1; 
         for(sx=1;sx<7;sx++){
        pos_ch[number_ch][sx]=pos_two[tr][sx];    
        }
        }
 
 
double r1=number_chx*Math.random();
tr=(int)r1+1;
 
     invade(tr);
 
     for(s=1;s<7;s++){
     pos[s]=pos_chx[tr][s];    
     hand[s]=hand_chx[tr][s];
     }
 
     match();
 
 
 
 
 
 
    }
   void match(){
 
 
       if(hand[1]=="後手")mode="後手勝利";
       if(hand[4]=="先手")mode="先手勝利";
 
 String mm=mode;
        if(mm.equals("後手"))mode="先手";
        if(mm.equals("先手"))mode="後手";
 
 
   } 
 
 
    void invade(int tr){
 
        int s;
        int[] c=new int[21];
        for(s=1;s<10;s++){
        c[s]=0;    
        }
 
        for(s=1;s<7;s++){
        int h=0;    
        int p1=pos_chx[tr][s];
        if(p1>0)h=h+1;
        if(hand[s].equals(mode))h=h+1;
        if(h==2)c[p1]=100; 
        }
 
        String mm="後手";
        if(mode.equals("後手"))mm="先手";
 
        for(s=1;s<7;s++){
        int h=0;    
        int p1=pos_chx[tr][s];
        if(p1>0)h=h+1;
        if(hand[s].equals(mm))h=h+1;
        if(c[p1]>50)h=h+1;
        if(h==3)hand_chx[tr][s]=mode;
        if(h==3)pos_chx[tr][s]=0;
         }
 
 
 
 
 
 
 
 
 
 
 
 
 
    }
 
 
 
    void change(){
 
        int tr,s;
        number_chx=0;
         for(tr=1;tr<number_ch+1;tr++){   
   int ch=check(tr);
        if(ch<50){
         number_chx=number_chx+1;
         for(s=1;s<7;s++){
         pos_chx[number_chx][s]=pos_ch[tr][s];   
         hand_chx[number_chx][s]=hand[s];
         }
 
        }
 
 
         }
 
 
 
 
    }
 
 
 
    int check(int tr){
 
        int s;
 
        int[] c=new int[21];
        for(s=1;s<10;s++){
        c[s]=0;    
        }
 
        for(s=1;s<7;s++){
        int h=0;    
        int p1=pos_sig[tr][s];
        if(p1>0)h=h+1;
        if(hand[s].equals(mode))h=h+1;
        if(h==2)c[p1]=c[p1]+1;
         }
 
        int chx=0;
         for(s=1;s<10;s++){
         if(c[s]>1)chx=100;
         }
 
         int chm=check_mid(tr);
 
         if(chm>50)chx=100;
 
        return chx;
    }
 
 
     int check_mid(int tr){
 
         int s,sxs;
         sxs=0;
   for(s=1;s<7;s++){
   int z=0;
   if(pos_sig[tr][s]==pos[s])z=100;
   if(z<50)sxs=s;    
   }
 
   int ps1=pos[sxs];
   int ps2=pos_sig[tr][sxs];
 
   int xs1=x[ps1];
   int xs2=x[ps2];
   int ys2=y[ps2];
   int ys1=y[ps1];
 
   int xs3=(xs1+xs2)/2;
   int ys3=(ys1+ys2)/2;
 
   int dede=0;
   int h=0;
   if(xs1+xs2==2*xs3)h=h+1;
   if(ys1+ys2==2*ys3)h=h+1;
   if(h==2)dede=100;
   int ps3=-999;
   if(dede>50)ps3=point(xs3,ys3);
 
 
   int chm=0;
   for(s=1;s<7;s++){
   if(pos[s]==ps3)chm=100;    
   }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
return chm;
 
 
    }
 
 
 
 
 
 
    void fresh(){
 
 
        int sx,s;
        for(s=1;s<number_ch+1;s++){   
     for(sx=1;sx<7;sx++){
      if(pos_ch[s][sx]==-1)pos_ch[s][sx]=pos[sx];
        }}
 
 
    }
 
 
    void rev(int nx){
 
        String h1=hand[nx];
        String k1=koma[nx];
 
 
 
        makedir(h1,k1);
 
        int s;
        int p1=pos[nx];
        int x1=x[p1];
        int y1=y[p1];
        for(s=1;s<number_dir+1;s++){
        int x2=x1+dx[s];
        int y2=y1+dy[s];
 
        p1=point(x2,y2);
 
        if(p1>0)number_ch=number_ch+1;
        if(p1>0)pos_ch[number_ch][nx]=p1;
        }
 
 
 
 
 
 
    }
    int point(int xs,int ys){
 
        int pppp=-1;
        int s;
      for(s=1;s<10;s++){
      int h=0;
      if(x[s]==xs)h=h+1;
      if(y[s]==ys)h=h+1;
      if(h==2)pppp=s;    
      }
 
 
 
       return pppp; 
    }
 
 
    void select(){
 
        int s,sx;
        sx=0;
        for(s=1;s<7;s++){
        int h=0;
        if(hand[s].equals(mode))h=h+1;
        if(pos[s]>0)h=h+1;
        if(h==2)sx=sx+1;
        if(h==2)koma_sel[sx]=s;
        }
 
        number_sel=sx;
 
 
    }
 
 
 
 
 void makedir(String h1,String k1){
 
 
 
        if (k1.equals("王")){ 
        dx[1]=1;
        dy[1]=0;
        dx[2]=-1;
        dy[2]=0;
        dx[3]=0;
        dy[3]=1;
        dx[4]=0;
        dy[4]=-1;
 
        dx[5]=1;
        dy[5]=1;
        dx[6]=-1;
        dy[6]=1;
        dx[7]=1;
        dy[7]=-1;
        dx[8]=-1;
        dy[8]=-1;
 
        number_dir=8;
 
        }
 
 if (k1.equals("飛")){ 
        dx[1]=1;
        dy[1]=0;
        dx[2]=-1;
        dy[2]=0;
        dx[3]=0;
        dy[3]=1;
        dx[4]=0;
        dy[4]=-1;
 
        dx[5]=2;
        dy[5]=0;
        dx[6]=-2;
        dy[6]=0;
        dx[7]=0;
        dy[7]=-2;
        dx[8]=0;
        dy[8]=2;
 
        number_dir=8;
 
        }
 
 
        if (k1.equals("角")){ 
        dx[1]=1;
        dy[1]=1;
        dx[2]=-1;
        dy[2]=-1;
        dx[3]=1;
        dy[3]=-1;
        dx[4]=-1;
        dy[4]=1;
 
        dx[5]=2;
        dy[5]=2;
        dx[6]=-2;
        dy[6]=2;
        dx[7]=2;
        dy[7]=-2;
        dx[8]=-2;
        dy[8]=-2;
 
        number_dir=8;
 
        }
 
 
        int h=0;
         if (k1.equals("歩"))h=h+1;
         if (h1.equals("先手"))h=h+1;    
         if (h==2){
         dx[1]=0;
         dy[1]=1;
         number_dir=1;    
         }    
 
            h=0;
         if (k1.equals("金"))h=h+1;
         if (h1.equals("先手"))h=h+1;    
         if (h==2){
 
        dx[1]=1;
        dy[1]=0;
        dx[2]=-1;
        dy[2]=0;
 
        dx[3]=0;
        dy[3]=1;
        dx[4]=0;
        dy[4]=-1;
 
        dx[5]=1;
        dy[5]=1;
        dx[6]=-1;
        dy[6]=1;
 
 
         number_dir=6;    
         }    
 
           h=0;
         if (k1.equals("金"))h=h+1;
         if (h1.equals("後手"))h=h+1;    
         if (h==2){
 
        dx[1]=1;
        dy[1]=0;
        dx[2]=-1;
        dy[2]=0;
 
        dx[3]=0;
        dy[3]=1;
        dx[4]=0;
        dy[4]=-1;
 
        dx[5]=1;
        dy[5]=-1;
        dx[6]=-1;
        dy[6]=-1;
 
 
         number_dir=6;    
         }    
 
         h=0;
          if (k1.equals("銀"))h=h+1;
         if (h1.equals("先手"))h=h+1;    
         if (h==2){
 
        dx[1]=1;
        dy[1]=1;
        dx[2]=-1;
        dy[2]=1;
        dx[3]=0;
        dy[3]=1;
 
        dx[4]=-1;
        dy[4]=-1;
 
        dx[5]=1;
        dy[5]=-1;
 
 
 
         number_dir=5;    
         }  
 
         h=0;
         if (k1.equals("銀"))h=h+1;
         if (h1.equals("後手"))h=h+1;    
         if (h==2){
 
        dx[1]=1;
        dy[1]=-1;
        dx[2]=-1;
        dy[2]=-1;
        dx[3]=0;
        dy[3]=-1;
 
        dx[4]=-1;
        dy[4]=1;
 
        dx[5]=1;
        dy[5]=1;
 
 
 
         number_dir=5;    
         }    
 
 
         h=0;
         if (k1.equals("歩"))h=h+1;
         if (h1.equals("後手"))h=h+1;    
         if (h==2){
         dx[1]=0;
         dy[1]=-1;
         number_dir=1;    
         }    
 
 
  h=0;
         if (k1.equals("香"))h=h+1;
         if (h1.equals("先手"))h=h+1;    
         if (h==2){
         dx[1]=0;
         dy[1]=1;
           dx[2]=0;
         dy[2]=2;
         number_dir=2;
         }
  h=0;
         if (k1.equals("香"))h=h+1;
         if (h1.equals("後手"))h=h+1;    
         if (h==2){
         dx[1]=0;
         dy[1]=-1;
           dx[2]=0;
         dy[2]=-2;
 
         number_dir=2;    
         }    
 
         h=0;
         if (k1.equals("桂"))h=h+1;
         if (h1.equals("先手"))h=h+1;    
         if (h==2){
         dx[1]=-1;
         dy[1]=2;
           dx[2]=1;
         dy[2]=2;
         number_dir=2;
         }
  h=0;
         if (k1.equals("桂"))h=h+1;
         if (h1.equals("後手"))h=h+1;    
         if (h==2){
         dx[1]=1;
         dy[1]=-2;
           dx[2]=-1;
         dy[2]=-2;
 
         number_dir=2;    
         }    
 
 
 
 
 }
 
}
 
最終更新:2018年01月19日 16:02