我在编程方面处于中间水平,而且我遇到了一些我还没有学到的东西。
此代码适用于基本的俄罗斯方块游戏,它来自此网页:http://javilop.com/gamedev/tetris-tutorial-in-c-platform-independent-focused-in-game-logic-for-beginners/
这是他的头文件,它定义了类Pieces:
#ifndef _PIECES_
#define _PIECES_
class Pieces
{
public:
int GetBlockType (int pPiece, int pRotation, int pX, int pY);
int GetXInitialPosition (int pPiece, int pRotation);
int GetYInitialPosition (int pPiece, int pRotation);
};
#endif // _PIECES_
现在,在他的下一个头文件中,对于一个名为Board的类,他创建了一个以Pieces *pPieces
为参数的构造函数原型。您可以看到如下:
class Board
{
public:
Board (Pieces *pPieces, int pScreenHeight);
int GetXPosInPixels (int pPos);
int GetYPosInPixels (int pPos);
bool IsFreeBlock (int pX, int pY);
bool IsPossibleMovement (int pX, int pY, int pPiece, int pRotation);
void StorePiece (int pX, int pY, int pPiece, int pRotation);
void DeletePossibleLines ();
bool IsGameOver ();
private:
enum { POS_FREE, POS_FILLED };
int mBoard [BOARD_WIDTH][BOARD_HEIGHT]; // Board that contains the pieces
Pieces *mPieces;
int mScreenHeight;
void InitBoard();
void DeleteLine (int pY);
};
#endif // _BOARD_
我之前从未遇到过这样的事情。我的问题是*pPieces
的声明是什么似乎使用类名Pieces
作为数据类型?有人可以向我解释一下它的原因吗?或者它实现了什么?或者这是什么叫,所以我可以阅读更多关于它的内容?
答案 0 :(得分:2)
Pieces *pPieces
pPieces
是指向对象的指针。该对象有一个类型。该类型是用户定义的类型,由名为Pieces
的类声明。事实上,Pieces
已在代码中声明为新类型:
class Pieces
{
// ...
};