Domanda

Ho così tante cose nella mia QGraphicsScene. La situazione è sto creando una scacchiera, e sta usando scena grafica. Così il QGraphicsScene sta avendo tanti QGraphicsPixmapItems. Ora, in questo come posso ottenere il Re.

Aggiornamento:    In questo QGraphicsScene, sto aggiungendo QGraphicsPixmapItems che non sono altro che le monete (bordo, re, regina, soldati, ecc). Ora, se voglio spostare una particolare moneta dire re, allora come posso farlo. Ci sono alcuni metodi come l'utilizzo di iteratori. Ma esiste un modo per trovare un particolare QGraphicsPixmapItem per il suo nome.

È stato utile?

Soluzione

Quando si dice è necessario per ottenere il re, come si fa a fare la differenza nel vostro programma tra il re bianco e quello nero?

Se avete bisogno di ottenere un pedone, come fai a sapere quale? Chiunque? La prima si possono trovare nei tuoi oggetti?

Non ho pensato molto su di esso, ma forse quello che si può fare è utilizzare un QMap. La chiave sarebbe un'enumerazione dei diversi pezzi e il valore sarebbe un puntatore alla QGraphicsItem rilevanti. Qualcosa di simile a questo:

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

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

Quando si crea la scena e instanciating tuoi pezzi, si riempiono la mappa:

...
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"));
...

Quando hai bisogno di trovare l'oggetto corrispondente al re bianco, si potrebbe fare qualcosa di simile:

QGraphicsPixmapItem* pItem = WhitePiecesItem[KING];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top