Question

J'ai tant de choses dans mon QGraphicsScene. La situation est je crée un jeu d'échecs, et utilise scène Graphics. Ainsi, le QGraphicsScene est d'avoir tant de QGraphicsPixmapItems. Maintenant Dans ce comment puis-je le roi.

Mise à jour:    Dans ce QGraphicsScene, j'ajoute QGraphicsPixmapItems qui ne sont que des pièces de monnaie (pension, roi, reine, soldats, etc.). Maintenant, si je veux passer une pièce de monnaie dire roi, puis particulier Comment puis-je obtenir. Il y a des méthodes telles que l'utilisation d'itérateurs. Mais est-il possible de trouver un QGraphicsPixmapItem particulier par nom il.

Était-ce utile?

La solution

Quand vous dites que vous devez obtenir le roi, comment voulez-vous faire la différence dans votre programme entre le roi blanc et le noir?

Si vous avez besoin d'obtenir un pion, comment savez-vous lequel? N'importe qui ? La première vous pouvez trouver dans vos articles?

Je n'ai pas beaucoup pensé à ce sujet, mais peut-être ce que vous pouvez faire est d'utiliser un QMap. La clé serait une énumération des différentes pièces et la valeur serait un pointeur sur le QGraphicsItem concerné. Quelque chose comme ceci:

enum Piece_e {
    KING,
    QUEEN,
    ROOK1,
    ROOK2,
    ...
    PAWN1,
    PAWN2,
    ...
};

QMap<Piece_e, QGraphicsPixmapItem*> WhitePiecesItems;
QMap<Piece_e, QGraphicsPixmapItem*> BlackPiecesItems;

Lorsque vous créez votre scène et instancier vos morceaux, vous remplirez la carte:

...
WhitePiecesItem[KING] = new QGraphicsPixmapItem(QPixmap("whiteking_pic"));
WhitePiecesItem[PAWN1] = new QGraphicsPixmapItem(QPixmap("whitepawn_pic"));
...

BlackPiecesItem[QUEEN] = new QGraphicsPixmapItem(QPixmap("whitequeen_pic"));
BlackPiecesItem[PAWN1] = new QGraphicsPixmapItem(QPixmap("whitepawn_pic"));
...

Lorsque vous avez besoin de trouver l'objet correspondant au roi blanc, vous pouvez faire quelque chose comme ceci:

QGraphicsPixmapItem* pItem = WhitePiecesItem[KING];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top