アットウィキロゴ

おねx

package jump;
 
public class one {
 
    String[] koma=new String[7];
  int[] pos=new int[7];
  String[] hand=new String[7];  
  int[][] ban=new int[10][2];
 
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];
String[] mode_chx=new String[101];
String[][] grow_chx=new String[101][7];
int number_chx;
 String[] hash_chx=new String[101];
  String[] grow=new String[11];
 
    void makedata(String hhh){
 
        decode(hhh);
 
 
        select_koma();
 
 
        int k1,mx;
 
       int[] delta=new int[50];
       int[] de=new int[50];
       int[] den=new int[50];
       int number_delta;
 
       number_delta=0;
 
       for(k1=1;k1<number_sel+1;k1++){
       int m=koma_sel[k1];
       int p1=pos[m];
       int x1=ban[p1][0];    
       int y1=ban[p1][1]; 
       String kp=ng(koma[m],grow[m]);
 
       makedir(hand[m],kp);    
       for(mx=1;mx<number_dir+1;mx++){
       int x2=x1+dx[mx];
       int y2=y1+dy[mx];
       int p2=point(x2,y2);
       if(p2>0)number_delta=number_delta+1;
       if(p2>0)delta[number_delta]=m;
       if(p2>0)de[number_delta]=p1;
       if(p2>0)den[number_delta]=p2;
       }
       } 
 
 
       int[] delta_ch=new int[50];
       int[] de_ch=new int[50];
       int[] den_ch=new int[50];
       int sx=0;
       int number_ch=0;
       for(k1=1;k1<number_delta+1;k1++){
       if(check(den[k1])<40)sx=sx+1;
       if(check(den[k1])<40)delta_ch[sx]=delta[k1];
       if(check(den[k1])<40)de_ch[sx]=de[k1];
       if(check(den[k1])<40)den_ch[sx]=den[k1];
       }
 number_ch=sx;
 
 
  for(k1=1;k1<number_ch+1;k1++){  
      invade(k1,delta_ch[k1],den_ch[k1]);
       }
       number_chx=number_ch;
 
        for(k1=1;k1<number_chx+1;k1++){ 
       match(k1);
               }
 
    for(k1=1;k1<number_chx+1;k1++){ 
       hash_chx[k1]=hash(k1);      
    }
 
 
    }
    String ng(String k1,String g1){
 
        String kk=k1;
        int h=0;
        if(g1.equals("成"))h=h+1;
        if(k1.equals("歩"))h=h+1;
        if(h==2)kk="金";
        h=0;
        if(g1.equals("成"))h=h+1;
        if(k1.equals("香"))h=h+1;
        if(h==2)kk="金";
        h=0;
        if(g1.equals("成"))h=h+1;
        if(k1.equals("桂"))h=h+1;
        if(h==2)kk="金";
         h=0;
        if(g1.equals("成"))h=h+1;
        if(k1.equals("銀"))h=h+1;
        if(h==2)kk="金";
         h=0;
        if(g1.equals("成"))h=h+1;
        if(k1.equals("角"))h=h+1;
        if(h==2)kk="竜馬";
         h=0;
        if(g1.equals("成"))h=h+1;
        if(k1.equals("飛"))h=h+1;
        if(h==2)kk="竜王";
 
 
 
 return kk;       
 
    }
    String hash(int q){
 
       String ha="";
       if (mode_chx[q].equals("先手"))ha=ha+"w";
       if (mode_chx[q].equals("後手"))ha=ha+"x";
       if (mode_chx[q].equals("先手勝利"))ha=ha+"y";
       if (mode_chx[q].equals("後手勝利"))ha=ha+"z";
 
       int s;
       for(s=1;s<7;s++){
       if(hand_chx[q][s].equals("先手"))ha=ha+"p";    
       if(hand_chx[q][s].equals("後手"))ha=ha+"q"; 
       }
 
       String w1="a,b,c,d,e,f,g,h,i,j";
       String[] ww=w1.split(",");
 
       for(s=1;s<7;s++){
       int sx=pos_chx[q][s];    
       ha=ha+ww[sx];
       }
 
 for(s=1;s<7;s++){
  if(grow_chx[q][s].equals("成"))ha=ha+"l";
  if(grow_chx[q][s].equals("不成"))ha=ha+"k";
 }
 
        return ha; 
}
 
 
 
   void match(int q){
 
 
       String mm=mode;
       if(mm=="先手")mode_chx[q]="後手";
       if(mm=="後手")mode_chx[q]="先手";
 
       if(hand_chx[q][1]=="後手")mode_chx[q]="後手勝利";
       if(hand_chx[q][4]=="先手")mode_chx[q]="先手勝利";
 
   } 
 
 
 
    void invade(int tr,int m1,int p1){
 int s;
        for(s=1;s<7;s++){
       pos_chx[tr][s]=pos[s];
       hand_chx[tr][s]=hand[s];
       grow_chx[tr][s]=grow[s];
        }
       pos_chx[tr][m1]=p1;
 
       int ch1=0;
       if(p1==7)ch1=ch1+1;
       if(p1==8)ch1=ch1+1;
       if(p1==9)ch1=ch1+1;
       if(mode.equals("先手"))ch1=ch1+1;
       if(ch1==2)grow_chx[tr][m1]="成";
 
       int ch2=0;
       if(p1==1)ch2=ch2+1;
       if(p1==2)ch2=ch2+1;
       if(p1==3)ch2=ch2+1;
       if(mode.equals("後手"))ch2=ch2+1;
       if(ch2==2)grow_chx[tr][m1]="成";
 
 
       String mm="先手"; 
       if(mode.equals("先手"))mm="後手";
        for(s=1;s<7;s++){
        int h=0;
        if(hand_chx[tr][s].equals(mm))h=h+1;
        if(pos_chx[tr][s]==p1)h=h+1;
        if(h==2)hand_chx[tr][s]=mode;
        if(h==2)pos_chx[tr][s]=0;
        if(h==2)grow_chx[tr][s]="不成";
        }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
    }
 
 
 
      int check(int p2){
 
        int s;
 
 
 int chx=0;
        for(s=1;s<7;s++){
        int h=0;    
        if(pos[s]==p2)h=h+1;
        if(hand[s].equals(mode))h=h+1;
        if(h==2)chx=100;
        }
 
        return chx;
    }
 
 
 
 
    int point(int xs,int ys){
 
        int pppp=-1;
        int s;
      for(s=1;s<10;s++){
      int h=0;
      if(ban[s][0]==xs)h=h+1;
      if(ban[s][1]==ys)h=h+1;
      if(h==2)pppp=s;    
      }
 
 
 
       return pppp; 
    }
 
 
     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]=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;
 
        dx[9]=1;
        dy[9]=1;
        dx[10]=-1;
        dy[10]=-1;
        dx[11]=1;
        dy[11]=-1;
        dx[12]=-1;
        dy[12]=1;
 
        number_dir=12;
 
        }
 
 
 
 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;
 
        }
 
        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;
 
        dx[9]=1;
        dy[9]=0;
        dx[10]=-1;
        dy[10]=0;
        dx[11]=0;
        dy[11]=1;
        dx[12]=0;
        dy[12]=-1;
 
        number_dir=12;
 
        }
 
 
        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;    
         }    
 
 
 
 
 }
 
 
    void select_koma(){
 
        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 decode(String hxp){
 
 
    String m1=hxp.substring(0,1);
    String[] h1=new String[7];
    String[] p1=new String[7];
    String[] g1=new String[7];
    int s;
    for(s=1;s<7;s++){
    h1[s]=hxp.substring(s,s+1);
    }
    for(s=1;s<7;s++){
    p1[s]=hxp.substring(s+6,s+7);
    }
 
    for(s=1;s<7;s++){
    g1[s]=hxp.substring(s+12,s+13);
    }
 
    if(m1.equals("w"))mode="先手";
    if(m1.equals("x"))mode="後手";  
    if(m1.equals("y"))mode="先手勝利";
    if(m1.equals("z"))mode="後手勝利";  
 
 
    for(s=1;s<7;s++){
    if(h1[s].equals("p"))hand[s]="先手";
    if(h1[s].equals("q"))hand[s]="後手";       
    }
 
 
    for(s=1;s<7;s++){
    if(p1[s].equals("a"))pos[s]=0;
    if(p1[s].equals("b"))pos[s]=1;       
    if(p1[s].equals("c"))pos[s]=2;
    if(p1[s].equals("d"))pos[s]=3; 
    if(p1[s].equals("e"))pos[s]=4;
    if(p1[s].equals("f"))pos[s]=5; 
    if(p1[s].equals("g"))pos[s]=6;
    if(p1[s].equals("h"))pos[s]=7; 
    if(p1[s].equals("i"))pos[s]=8;
    if(p1[s].equals("j"))pos[s]=9; 
    }
 
     for(s=1;s<7;s++){
    if(g1[s].equals("k"))grow[s]="不成";
    if(g1[s].equals("l"))grow[s]="成";       
    }
 
 
}
 
 
 
 
 
}
最終更新:2018年04月16日 09:11