📄 data.~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 + -