满意答案
rcwew
2014.08.21
采纳率:55% 等级:8
已帮助:611人
一般的将槽用2维数组来表示,
满行:即数组全1
消行:即消去全1的所有行
如下几个函数应该能满足楼主要求,楼主看下思路就行
假设槽为
int base[10][20]
int* FindTheLineToKill(int &lineCount)//返回消行的位置
{
lineCount=0;
int *lines=(int*)malloc(sizeof(int)*4);//默认方块的最大长度为4
for (int i = 0; i < 10; i++)
{
bool kill=true;
for(int j=0;j<20;j++)
{
if(base[i][j]==0)
{
kill=false;
break;
}
}
if(kill)
lines[lineCount++]=i;
}
}
void DropBase(int* lines,int lineCount)//下落槽
{
int dropLine=0;
for(int i= 0; i < 10; i++)//从底部开始计算
{
int k=0;
if(lines[k]==i)//这行要消掉
{
++k;
dropLine++;//记录下落的高度
continue;//下落行不做处理。
}
else
for(int j=0;j<20;j++){
base[i+dropline,j]=base[i,j];//把上边的落到下面来
}
free(lines);
lines=NULL;
}
可以看下csdn博客-coollangzi的位运算提速
00分享举报