でブレイクアウト ゲームのクローンを構築しようとしていQt
ます。QGraphicsItem
ボールが衝突したタイプを特定する必要があります。たとえば、ボールが壁に衝突した場合、ボールは跳ね返り、レンガに衝突した場合は跳ね返らなければならず、レンガを破壊します。それが何であるかを知るためにQGraphicsItem
、おそらくオーバーライドするのが最善の方法であると考えましたQGraphicsItem::type()
(これが正しい方法でない場合はお知らせください!)。
次のコードでbrick.h
は、「Brick」のタイプを 3 に設定しています。ここで、値 3 を追跡するのは非常に面倒に見えます。代わりに、「#define」で何かを宣言することをお勧めします
#include <QGraphicsItem>
//should this #define be here?
//#define BRICK_SPRITE 3
class Brick : public QGraphicsItem
{
public:
Brick(const QPixmap& p, QGraphicsScene *scene = 0);
virtual QRectF boundingRect() const;
virtual void paint( QPainter *painter,
const QStyleOptionGraphicsItem *option,
QWidget *widget );
QPainterPath shape() const;
enum { Type = 3 }; //enum {Type = BRICK_SPRITE}
int type() const { return Type; }
private:
QPixmap pixmap;
};
ステートメント '#define BRICK_SPRITE 3' を配置するのに適した場所はどこですか? プロジェクトには他にもいくつかのファイルがあります。すべての定義を別のヘッダー ファイルに配置する必要がありますか?