#include#include #include #include using namespace std;class ErLingSiBa{private: int Map[4][4], tmp[4][4]; int k[4],result[4];public: void init() { for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { Map[i][j]=0; } } int pos=rand()%16; Map[pos/4][pos%4]=2; } void Rand() { int b[16], x=0; for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { if(Map[i][j]==0) { b[x]=i*4+j; x++; } } } if(x>0) { int pos=rand()%x; Map[b[pos]/4][b[pos]%4]=2; } } void Merge() { for(int i=0;i<4;i++) result[i]=0; int x=0, last=0; for(int i=0;i<4;i++) { if(k[i]==0) continue; if(x==0) { result[x]=k[i]; x++; } else { if(last==0&&k[i]==result[x-1]) { result[x-1]=2*result[x-1]; last=1; } else { result[x]=k[i]; x++; last=0; } } } } void check() { bool flag=0; for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { if(tmp[i][j]!=Map[i][j]) flag=1; } } if(flag==1) { for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { Map[i][j]=tmp[i][j]; } } Rand(); } else { // cout<<"wu xiao"< >op; if(op=='U') _2048.Up(); else if(op=='D') _2048.Down(); else if(op=='L') _2048.Left(); else if(op=='R') _2048.Right(); else continue; _2048.check(); _2048.Show(); if(_2048.die()) { cout<<"die"<
详解明天更啦 今天有 1.. 困啦 晚安!!
FH