这个游戏挺简单的,分享一下我的源码给各位看看吧(不好勿喷)
data.h头文件
#define T 4
struct node
{
int num[T][T];
int bo[T];//标志数组
int x,y;
int fx[4][2];
void mem()
{
memset(bo,0,sizeof(bo));
}
node()
{
fx[0][0]= 1,fx[0][1]= 0;
fx[1][0]= 0,fx[1][1]= 1;
fx[2][0]= -1,fx[2][1]= 0;
fx[3][0]= 0,fx[3][1]= -1;
memset(num,0,sizeof(num));
}
bool jugde()
{
for(int i=0;i<T;++i){
for(int j=0;j<T;++j){
if(!num[i][j])return true;
}
}
return false;
}
void left()
{
int u,v;
for(int i=0;i<4;++i){
mem();
for(int j=1;j<4;++j)
{
u = i,v=j;
while(v>0&&!num[u][v-1])
{
num[u][v-1]=num[u][v];
num[u][v]=0;
v--;
}
if(v>0&&!bo[v-1]&&num[u][v-1]==num[u][v]){
num[u][v-1]+=num[u][v];
num[u][v]=0;
bo[v-1]=1;
}
}
}
}
void Up()
{
int u,v;
for(int i=0;i<4;++i){
mem();
for(int j=1;j<4;++j)
{
u = i,v=j;
while(v>0&&!num[v-1][u])
{
num[v-1][u]=num[v][u];
num[v][u]=0;
v--;
}
if(v>0&&!bo[v-1]&&num[v-1][u]==num[v][u]){
num[v-1][u]+=num[v][u];
num[v][u]=0;
bo[v-1]=1;
}