📄 block.java
字号:
import java.io.*;
public class Block{
public String []blockString;
private Block []childBlock;
private int access;
public Block []route;
private int dm;
public Block(String []xBlock){
this.blockString=new String[xBlock.length];
for(int i=0;i<xBlock.length;i++)
blockString[i]=new String(xBlock[i]);
this.childBlock=new Block[4];
for(int i=0;i<4;i++)this.childBlock[i]=null;
access=0;
}
public boolean createBlockTree(String []yBlock,int dm){
Block p;
String []xsBlock;
String []xBlock;
int j=0;
int d=0;
p=this;
int blockN=(int)Math.sqrt(p.blockString.length);
while(!complete(p.blockString,yBlock)){
p.access=1;
xsBlock=new String[p.blockString.length];
xBlock=new String[p.blockString.length];
for(int i=0;i<p.blockString.length;i++){xsBlock[i]=new String(p.blockString[i]);xBlock[i]=new String(p.blockString[i]);}
switch(stateSpace(xsBlock)){
case 0:xBlock[0]=xsBlock[blockN].toString();xBlock[blockN]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
xBlock[blockN]=xsBlock[blockN].toString();
xBlock[0]=xsBlock[1].toString();xBlock[1]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
xBlock[1]=xsBlock[1].toString();
break;
case 1:xBlock[blockN-1]=xsBlock[blockN-2].toString();xBlock[blockN-2]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
xBlock[blockN-2]=xsBlock[blockN-2].toString();
xBlock[blockN-1]=xsBlock[2*blockN-1].toString();xBlock[2*blockN-1]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
xBlock[2*blockN-1]=xsBlock[2*blockN-1].toString();
break;
case 2:xBlock[xBlock.length-blockN]=xsBlock[xBlock.length-2*blockN].toString();xBlock[xBlock.length-2*blockN]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
xBlock[xBlock.length-2*blockN]=xsBlock[xBlock.length-2*blockN].toString();
xBlock[xBlock.length-blockN]=xsBlock[xBlock.length-blockN+1].toString();xBlock[xBlock.length-blockN+1]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
break;
case 3:xBlock[xBlock.length-1]=xsBlock[xBlock.length-2].toString();xBlock[xBlock.length-2]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
xBlock[xBlock.length-2]=xsBlock[xBlock.length-2].toString();
xBlock[xBlock.length-1]=xsBlock[xBlock.length-1-blockN].toString();xBlock[xBlock.length-1-blockN]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
break;
case 4:int space=placeSpace(xsBlock);
xBlock[space]=xsBlock[space-1].toString();xBlock[space-1]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
xBlock[space-1]=xsBlock[space-1].toString();
xBlock[space]=xsBlock[space+1].toString();xBlock[space+1]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
xBlock[space+1]=xsBlock[space+1].toString();
xBlock[space]=xsBlock[space+blockN].toString();xBlock[space+blockN]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
xBlock[space+blockN]=xsBlock[space+blockN].toString();
break;
case 5:space=placeSpace(xsBlock);
xBlock[space]=xsBlock[space+1].toString();xBlock[space+1]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
xBlock[space+1]=xsBlock[space+1].toString();
xBlock[space]=xsBlock[space-blockN].toString();xBlock[space-blockN]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
xBlock[space-blockN]=xsBlock[space-blockN].toString();
xBlock[space]=xsBlock[space+blockN].toString();xBlock[space+blockN]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
xBlock[space+blockN]=xsBlock[space+blockN].toString();
break;
case 6:space=placeSpace(xsBlock);
xBlock[space]=xsBlock[space-blockN].toString();xBlock[space-blockN]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
xBlock[space-blockN]=xsBlock[space-blockN].toString();
xBlock[space]=xsBlock[space+blockN].toString();xBlock[space+blockN]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
xBlock[space+blockN]=xsBlock[space+blockN].toString();
xBlock[space]=xsBlock[space-1].toString();xBlock[space-1]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
xBlock[space-1]=xsBlock[space-1].toString();
break;
case 7:space=placeSpace(xsBlock);
xBlock[space]=xsBlock[space-1].toString();xBlock[space-1]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
xBlock[space-1]=xsBlock[space-1].toString();
xBlock[space]=xsBlock[space+1].toString();xBlock[space+1]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
xBlock[space+1]=xsBlock[space+1].toString();
xBlock[space]=xsBlock[space-blockN].toString();xBlock[space-blockN]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
xBlock[space-blockN]=xsBlock[space-blockN].toString();
break;
case 8:space=placeSpace(xsBlock);
xBlock[space]=xsBlock[space-blockN].toString();xBlock[space-blockN]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
xBlock[space-blockN]=xsBlock[space-blockN].toString();
xBlock[space]=xsBlock[space+blockN].toString();xBlock[space+blockN]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
p.childBlock[i]=new Block(xBlock);
}
xBlock[space+blockN]=xsBlock[space+blockN].toString();
xBlock[space]=xsBlock[space-1].toString();xBlock[space-1]="";
if(insertOK(this,xBlock)){
int i;
for(i=0;i<4;i++){if(p.childBlock[i]==null)break;}
p.childBlock[i]=new Block(xBlock);
}
xBlock[space-1]=xsBlock[space-1].toString();
xBlock[space]=xsBlock[space+1].toString();xBlock[space+1]="";
if(insertOK(this,xBlock)){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -