该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
for(;first!=last;++first)
{
int x = first->first, y = first->second;
board[x][y].second = status;
block[status].piece.push_back(*first);
}
}
}
else
{
status = board[x][y].second = board[x][y+1].second;
block[status].piece.push_back(BOARD(x,y));
}
}
board[x][y].first = count++%2;
if(status == -1)
{
board[x][y].second = block.size();
block.push_back(BLOCK());
block.back().piece.push_back(BOARD(x,y));
}
int cantrl = -362;
memset(tag,false,sizeof(tag));
record = 0;
find(x,y,a);
if(record == 0)
cantrl = 0;
block[board[x][y].second].life = record;
int clo = !a;
memset(tag,false,sizeof(tag));
record = 0;
if(board[x-1][y].first==clo){
find(x-1,y,clo);
if(record == 0)
cantrl += block[board[x-1][y].second].piece.size();
block[board[x-1][y].second].life = record;
}
memset(tag,false,sizeof(tag));
record = 0;
if(board[x+1][y].first==clo){
find(x+1,y,clo);
if(record == 0)
cantrl += block[board[x+1][y].second].piece.size();
block[board[x+1][y].second].life = record;
}
memset(tag,false,sizeof(tag));
record = 0;
if(board[x][y-1].first==clo){
find(x,y-1,clo);
if(record == 0)
cantrl += block[board[x][y-1].second].piece.size();
block[board[x][y-1].second].life = record;
}
memset(tag,false,sizeof(tag));
record = 0;
if(board[x][y+1].first==clo){
find(x,y+1,clo);
if(record == 0)
cantrl += block[board[x][y+1].second].piece.size();
block[board[x][y+1].second].life = record;
}
if(cantrl == 1)
{
BOARD eatone;
eat(eatone);
if((peatc+1 == count)&&
(eatone.first == x && eatone.second == y))
{
block[board[x][y].second].life = 1;
int clo = !a;
int eatboard = board[x][y].second;
board[x][y].first = -1;
board[x][y].second = -1;
if(block[eatboard].piece.size() == 1)
block.pop_back();
else
block[eatboard].piece.pop_back();
count--;
memset(tag,false,sizeof(tag));
record = 0;
if(board[x-1][y].first==clo){
find(x-1,y,clo);
if(record == 0)
cantrl += block[board[x-1][y].second].piece.size();
block[board[x-1][y].second].life = record;
}
memset(tag,false,sizeof(tag));
record = 0;
if(board[x+1][y].first==clo){
find(x+1,y,clo);
if(record == 0)
cantrl += block[board[x+1][y].second].piece.size();
block[board[x+1][y].second].life = record;
}
memset(tag,false,sizeof(tag));
record = 0;
if(board[x][y-1].first==clo){
find(x,y-1,clo);
if(record == 0)
cantrl += block[board[x][y-1].second].piece.size();
block[board[x][y-1].second].life = record;
}
memset(tag,false,sizeof(tag));
record = 0;
if(board[x][y+1].first==clo){
find(x,y+1,clo);