을 가야한다. 내 공 QGraphicsItem
의 어떤 유형이 충돌했는지 알아야합니다. 예를 들어 공이 벽과 충돌하면 공이 튀어 오릅니다. 벽돌과 충돌하면 공이 튀어 나와 벽돌이 파괴됩니다. 어떤 종류의 QGraphicsItem
인지 알아 내기 위해 최선의 방법은 QGraphicsItem::type()
을 무시하는 것입니다 (올바른 방법이 아닌지 알려주세요.). brick.h
다음 코드에서 C++/Qt는 코딩 스타일 - 어디에 정의 # 나는 <code>Qt</code>에 브레이크 아웃 게임 클론을 구축을 위해 노력하고
#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;
};
뭔가를 선언하는 것을 선호? 프로젝트에 여러 파일이 있습니다. 모든 정의를 별도의 헤더 파일에 넣어야합니까?
enum 해킹은 더 이상 괜찮은 컴파일러에 필요하지 않습니다. 인라인 정적 const int가 가장 좋습니다. – DanDan
@Atilla - 내가 왜 당신의 진술을 이해하는지 모르겠다. 왜 3 대신 Type을 사용하지 않을까? enum {Type}을 사용하면; , Type은 자동으로 0이됩니다. 이것이 당신이 의미 한 것입니까? Type의 값을 3으로하고 싶습니다. 특별한 이유가 없습니다. 나는 내 이유가 그것이 독특하기를 원한다고 생각한다. – Mathai
아니요, 지금처럼 열거 형을 유지하고'BRICK_SPRITE'를 사용하고자 할 때'Type'을 사용했습니다 - 이름'Type'이 표현력이 충분하지 않으면'BRICK_TYPE '으로 변경할 수 있습니다 '열거 형, 또는 내 대답 – Attila