📄 board.h
字号:
class CBoard//方块板类
{
private:
CDiamond *dia;//连接方块
char board[16][10];//板数据
public:
CBoard();//构造函数
void NewDiamond(CDiamond *d);//加入新方块
void AddDiamond(void);//老化方块
void GetBoard(char b[16][10]);//获得数据
// void Floor(void);//下落
CDiamond *GetDiamond(void) const;
int Judge(void);//判断吸收
void TransFram(char td[16][10]);
bool Touch(char td[16][10]);
bool Die(void);
};
CBoard::CBoard()
{
//清零
for(int i=0;i<10;i++)
for(int j=0;j<16;j++)
board[i][j]=0;
dia=NULL;
}
void CBoard::GetBoard(char b[16][10])
{
for(int i=0;i<16;i++)
for(int j=0;j<10;j++)
b[i][j]=board[i][j];
}
void CBoard::AddDiamond(void)
{
char d[4][4];
int x,y;
dia->GetData(d);
dia->GetPoint(x,y);
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
if(d[i][j]!=0) board[i+y][j+x]=d[i][j];
}
void CBoard::NewDiamond(CDiamond *d)
{
dia=d;
dia->SetPoint(4,0);
}
/*
void CBoard::Floor(void)
{
dia->Floor();
}
*/
CDiamond *CBoard::GetDiamond(void) const
{
return dia;
}
int CBoard::Judge(void)
{
int count,num=0;
for(int k=0;k<16;k++)
{
count=0;
for(int i=0;i<10;i++)
if(board[k][i]) ++count;
if(count==10)
{
for(int i=k;i>0;i--)
for(int j=0;j<10;j++)
{
board[i][j]=board[i-1][j];
}
++num;
}
}
return num;
}
bool CBoard::Touch(char td[16][10])
{
bool IsTouch=0;
char data[4][4];
int PointX,PointY;
dia->GetPoint(PointX,PointY);
dia->GetData(data);
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
{
if(data[i][j]!=0&& PointY+i>14) IsTouch=1;
if(data[i][j]!=0&&td[PointY+i+1][PointX+j]==1) IsTouch=1;
}
return IsTouch;
}
void CBoard::TransFram(char td[16][10])
{
bool IsBlock=0;
char data[4][4],nextdata[4][4],limit[4][4];
int PointX,PointY,x,y;
dia->GetPoint(PointX,PointY);
dia->GetData(data);
dia->GetNext()->GetData(nextdata);
dia->GetLimit(limit);
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
{
if(nextdata[i][j]!=0&&nextdata[i][j]==td[PointY+i][PointX+j]) IsBlock=1;
if(nextdata[i][j]!=0&&(PointX+j>9||PointX+j<0||PointY+i>15||PointY+i<0)) IsBlock=1;
if(limit[i][j]!=0&&limit[i][j]==td[PointY+i][PointX+j]) IsBlock=1;
}
if(!IsBlock)
{
dia->GetPoint(x,y);
dia->GetNext()->SetPoint(x,y);
dia=dia->GetNext();
}
}
bool CBoard::Die(void)
{
for(int i=0;i<10;i++)
if(board[2][i]!=0) return 1;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -