📄 data.java
字号:
import java.util.Timer;
import java.util.TimerTask;
public class Data extends My{
public int nos[]=new int [9];
public int preNos[];
public int soureNos[];
public int stepNum=0;
public int timePassed=0;
class AddTimer extends TimerTask{
public void run(){
if(!isWin())
timePassed++;
}
}
Timer timer=new Timer(true);
public Data(){
timer.scheduleAtFixedRate(new AddTimer(),1000,1000);
}
void jianChaNOs()
{
int hiNum=0;
for(int i=0;i<8;i++){
if(nos[i]==0)
continue;
for(int j=i+1;j<9;j++){
if(nos[j]==0)
continue;
if(nos[i]>nos[j])
{
print(nos[i],">",nos[j],"\n");
hiNum++;
}
}
}
putNums(nos);
puts(hiNum);
if(hiNum%2==1)
{
int i=1;
if(nos[0]==0 || nos[1]==0)
i=2;
int temp=nos[0];
nos[0]=nos[i];
nos[i]=temp;
}
putNums(nos);
}
public void init(){
nos=rand_paiLie(0,8);
jianChaNOs();
preNos=nos.clone();
soureNos=nos.clone();
stepNum=0;
timePassed=0;
}
public void back(){
int i=0;
for(;i<8;i++){
if(nos[i]!=preNos[i])
break;
}
if(i==8)
return;
nos=preNos.clone();
stepNum--;
}
public void rePlay(){
putNums(soureNos);
putNums(nos);
nos=soureNos.clone();
stepNum=0;
timePassed=0;
}
public boolean isWin(){
for(int i=0;i<8;i++)
{
if(nos[i]!=i+1)
return false;
}
return true;
}
int[] iToXY(int i){
int[] xy=new int [2];
xy[0]=i%3;
xy[1]=i/3;
return xy;
}
int zeroI(){
int zeroI=0;
for(int i=0;i<9;i++)
{
if(nos[i]==0)
{
zeroI=i;
// puts(zeroI,"get");
break;
}
}
return zeroI;
}
public void move(String fx){
int zeroI=zeroI();
int x0=iToXY(zeroI)[0];
int y0=iToXY(zeroI)[1];
if(fx=="Right") x0--;
else if(fx=="Left") x0++;
if(fx=="Down") y0--;
else if(fx=="Up") y0++;
if(0<=x0 && x0<=2 && 0<=y0 && y0<=2 )
move(y0*3+x0);
}
public void move(int movedI){
int zeroI=zeroI();
int x=iToXY(movedI)[0];
int y=iToXY(movedI)[1];
int x0=iToXY(zeroI)[0];
int y0=iToXY(zeroI)[1];
// puts(movedI,zeroI,x,y,x0,y0);
if(x!=x0 && y!=y0){
return;
}
else{
preNos=nos.clone();
stepNum++;
if(Math.abs(x-x0)==1 || Math.abs(y-y0)==1){
// puts(1);
int temp=nos[movedI];
nos[movedI]=nos[zeroI];
nos[zeroI]=temp;
}
else if(Math.abs(x-x0)==2 || Math.abs(y-y0)==2){
// puts(2);
int midI=(movedI+zeroI)/2;
int temp=nos[movedI];
nos[movedI]=nos[zeroI];
nos[zeroI]=nos[midI];
nos[midI]=temp;
}
}
}
public static void putNums(int []nos){
puts();
int j=0;
for(int i=0;i<3;i++){
for(int i2=0;i2<3;i2++){
print(nos[j]);
j++;
}
puts("");
}
}
public static void main(String[] args) {
Data d=new Data();
puts(Math.random());
d.init();
putNums(d.nos);
d.move(0);
putNums(d.preNos);
putNums(d.nos);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -