1

私の中にはたくさんのものがありますQGraphicsScene。チェス盤を作成していて、グラフィックスシーンを使用している状況です。だから、QGraphicsSceneたくさん持っていQGraphicsPixmapItemsます。さて、これでどうやって王を手に入れることができますか。

更新: このでは、コインに過ぎないもの (ボード、キング、クイーン、ソルジャーなど) をQGraphicsScene追加しています。QGraphicsPixmapItems今、特定のコインを移動したい場合は、キングと言います。どうすれば入手できますか。イテレータを使用するような方法がいくつかあります。しかし、そのQGraphicsPixmapItem名前で特定のものを見つける方法はありますか。

4

1 に答える 1

0

キングを取得する必要があると言うとき、プログラムで白のキングと黒のキングをどのように区別しますか?

ポーンを取得する必要がある場合、どのポーンをどのように知ることができますか? 誰 ?アイテムで最初に見つけることができるものは?

私はそれについてあまり考えていませんが、おそらくあなたができることは QMap を使用することです。キーはさまざまな部分の列挙であり、値は関連する へのポインタQGraphicsItemです。このようなもの :

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

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

シーンを作成してピースをインスタンス化するときは、マップを塗りつぶします:

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

白い王に対応するオブジェクトを見つける必要がある場合は、次のようにすることができます。

QGraphicsPixmapItem* pItem = WhitePiecesItem[KING];
于 2010-06-21T05:47:19.697 に答える