⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 data.java

📁 自制 9格拼图游戏 java jfc程序 按钮拼图 记录步数 用时 重玩 退一步 改变风格
💻 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 + -