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

📄 data.~cpp

📁 自制 9格拼图游戏 bbc vcl程序 按钮拼图记录步数 用时 重玩 退一步 新局
💻 ~CPP
字号:
#include "my.cpp"
#include <string>
class Data {
public:
    //int nos[9];
    vector<int> nos;
    vector<int> preNos;
    vector<int> soureNos;
    int stepNum;
    int timePassed;

    Data(){
        stepNum=timePassed=0;
    }
    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");
                    cout<<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);
    }
    void init(){
        nos=rand_paiLie(0,8);
        jianChaNOs();
        preNos=nos;
        soureNos=nos;
        stepNum=0;
        timePassed=0;
    }
    void back(){
        int i=0;
        for(;i<8;i++){
            if(nos[i]!=preNos[i])
                break;
        }
        if(i==8)
            return;
        nos=preNos;
        stepNum--;
    }
    void rePlay(){
        putNums(soureNos);
        putNums(nos);
        nos=soureNos;
        stepNum=0;
        timePassed=0;
    }
    bool isWin(){
        for(int i=0;i<8;i++)
        {
            if(nos[i]!=i+1)
                return false;
        }
        return true;
    }
    vector<int> iToXY(int i){
        vector<int> xy(2);
        xy[0]=i%3;
        xy[1]=i/3;
        return xy;
    }
    
    int getZeroI(){
        int zeroI=0;
        for(int i=0;i<9;i++)
        {
            if(nos[i]==0)
            {
                zeroI=i;
                // puts(zeroI,"get");
                break;
            }
        }
        return zeroI;
    }
    void move(string fx){
        int zeroI=getZeroI();
        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);
    }
    void move(int movedI){
        int zeroI=getZeroI();
        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;
            stepNum++;
            if(abs(x-x0)==1 || abs(y-y0)==1){
                // puts(1);
                int temp=nos[movedI];
                nos[movedI]=nos[zeroI];
                nos[zeroI]=temp;
            }
            else if(abs(x-x0)==2 || 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;
            }
        }
    }
    static void putNums(vector<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("");
        }
    }
    static void main() {
        Data d=Data();
        d.init();
        putNums(d.nos);
        // d.move(0);
        // putNums(d.preNos);
        // putNums(d.nos);
    }
};
/* 
int main()
{
    Data::main();
    return 0;
}
 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -