VC 6.0 面向对象的俄罗斯方块尝试(部分注释)(2)
protected:
//这些都是私有的成员数据,意义可以从名字上看出。
int *m_pData;
int m_width;
int m_height;
protected:
//这里都些私有的函数,都是被上面的公共函数所使用的。
//释放数据资源。
void ReleaseData();
//为数据分配资源。
void InitData(int width, int height);
//设置数据内容。
void SetData(int initValue);
//内存块拷贝。
static void MemCopy(int *dest, int *src, int len);
};
接下来需要把下落的随机形状也封装成一个类,命名为CShape。
class CShape //该类实际上是把一个CMatrix类的对象封装了起来,并且组织了一些操作。
{
public:
CShape();
virtual ~CShape();
//创建一个随机形状,注意这里随机其实是指在俄罗斯方块中的7种形状中的某一种。参数是该形状的左上角坐标,默认(0,0)。
void CreateRandomShape(int posX = 0, int posY = 0);
//设置该形状的左上角坐标。
void SetPos(int posX, int posY);
//旋转形状,众所周知,俄罗斯方块游戏中的形状是可以旋转的。默认就是顺时针的旋转。
void Rotate();
//取消前次旋转,这个函数有它的用处,代码读下去就会明白的。
void CancelRotate();
//使形状向下移动一格。
void MoveDown();
//使形状向上移动一格。
void MoveUp();
//左一格。
void MoveLeft();
//右一格。
void MoveRight();
//获取当前形状的类型ID,分别代表7种形状。(0~6)
int GetShapeType() const;
//获取当前形状的左上角坐标。
POINT GetPos() const;
//获取形状占用的宽度。
int GetWidth() const;
//..............高度。
int GetHeight() const;
//重载[]操作符。
const int* operator[](int row) const;
//重载等号,也可以写一个拷贝构造函数。
CShape& operator=(CShape& srcShape);