void up(void)//向上
{
for(int y=0; y<4; y++)
{
int end = 0;
for(int x=1; x<4; x++)
{
for(int i=x; i>end; i--)
{
if(view[i][y])
{
if(0 == view[i-1][y])
{
// 移动
view[i-1][y] = view[i][y];
view[i][y] = 0;
flag = true;
}
else if(view[i][y] == view[i-1][y])
{
// 合并
view[i-1][y] *= 2;
view[i][y] = 0;
end = i;
flag = true;
}
}
}
}
}
}
void down(void)
{
for(int y=0; y<4; y++)
{
int end = 4;
for(int x=3; x>0; x--)
{
for(int i=x; i<end; i++)
{
if(view[i-1][y])
{
if(0 == view[i][y])
{
// 移动
view[i][y] = view[i-1][y];
view[i-1][y] = 0;
flag = true;
}
else if(view[i-1][y] == view[i][y])
{
// 合并
view[i][y] *= 2;
view[i-1][y] = 0;
end = i-1;
score +=view[i][y];
flag = true;
}
}
}
}
}
}
void right(void)
{
for(int x=0; x<4; x++)
{
int end = 4;
for(int y=3; y>0; y--)
{
for(int i=y; i<end; i++)
{
if(view[x][i-1])
{
if(0 == view[x][i])
{
// 移动
view[x][i] = view[x][i-1];
view[x][i-1] = 0;
flag = true;
}
else if(view[x][i-1] == view[x][i])
{
// 合并
view[x][i] *= 2;
view[x][i-1] = 0;
end = i-1;
score +=view[x][i];
flag = true;
}
}
}
}
}
}
void left(void)
{
for(int x=0; x<4; x++)
{
int end = 0;
for(int y=1; y<4; y++)
{
for(int i=y; i>end; i--)
{
if(view[x][i])
{
if(0 == view[x][i-1])
{
// 移动
view[x][i-1] = view[x][i];
view[x][i] = 0;
flag = true;
}
else if(view[x][i] == view[x][i-1])
{
// 合并
view[x][i-1] *= 2;
view[x][i] = 0;
end = i;
score +=view[x][i-1];
flag = true;
}
}
}
}
}
}
|