⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diamond.h

📁 一个用VC开发的完整的俄罗斯方块游戏源程序代码。
💻 H
字号:
class CDiamond
{
private:
	int PointX,PointY;
	char data[4][4];
	char limit[4][4];
	CDiamond* next;
public:
	CDiamond(int x=0,int y=0);
	void SetData(char d[4][4]);
	void SetData(char d[][16],int n);
	void SetLimit(char l[4][4]);
	void SetLimit(char l[][16],int n);
	void SetPoint(int x,int y);
	void Link(CDiamond *l);
	void GetData(char d[4][4]);
	void GetLimit(char l[4][4]);
	void GetPoint(int &x,int &y);
	CDiamond* GetNext(void);
	void MoveR(char td[16][10]);
	void MoveL(char td[16][10]);
	void Floor(char td[16][10]);
};
CDiamond::CDiamond(int x,int y)
{
	PointX=x;PointY=y;
}
void CDiamond::SetData(char d[4][4])
{
	for(int i=0;i<4;i++)
		for(int j=0;j<4;j++)
			data[i][j]=d[i][j];
}
void CDiamond::SetData(char d[][16],int n)
{
	for(int i=0;i<4;i++)
		for(int j=0;j<4;j++)
			data[i][j]=d[n][i*4+j];
}
void CDiamond::SetLimit(char l[4][4])
{
	for(int i=0;i<4;i++)
		for(int j=0;j<4;j++)
			limit[i][j]=l[i][j];
}
void CDiamond::SetLimit(char l[][16],int n)
{
	for(int i=0;i<4;i++)
		for(int j=0;j<4;j++)
			limit[i][j]=l[n][i*4+j];
}
void CDiamond::SetPoint(int x,int y)
{
	PointX=x;PointY=y;
}
void CDiamond::Link(CDiamond *l)
{
	next=l;
}
void CDiamond::GetData(char d[4][4])
{
	for(int i=0;i<4;i++)
		for(int j=0;j<4;j++)
			d[i][j]=data[i][j];
}
void CDiamond::GetLimit(char l[4][4])
{
	for(int i=0;i<4;i++)
		for(int j=0;j<4;j++)
			l[i][j]=limit[i][j];
}
void CDiamond::GetPoint(int &x,int &y)
{
	x=PointX;y=PointY;
}
void CDiamond::Floor(char td[16][10])
{
	bool IsTouch=0;
	for(int i=0;i<4;i++)
		for(int j=0;j<4;j++)
			if(data[i][j]!=0) 
			{
				
				if(PointY+i==15||td[PointY+i+1][PointX+j]!=0) IsTouch=1;
			}
			
	if(!IsTouch) ++PointY;

}
void CDiamond::MoveR(char td[16][10])
{
	bool IsTouch=0;
	for(int i=0;i<4;i++)
		for(int j=0;j<4;j++)
			if(data[i][j]!=0) 
			{
				
				if(PointX+j==9||td[PointY+i][PointX+j+1]!=0) IsTouch=1;
			}
			
	if(!IsTouch) ++PointX;
}
void CDiamond::MoveL(char td[16][10])
{
	bool IsTouch=0;
	for(int i=0;i<4;i++)
		for(int j=0;j<4;j++)
			if(data[i][j]!=0) 
			{
				
				if(PointX+j==0||td[PointY+i][PointX+j-1]!=0) IsTouch=1;
			}
	if(!IsTouch) --PointX;
}
CDiamond* CDiamond::GetNext(void)
{
	return next;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -