コード例 #1
0
void Grandf::initialize()
{
    setDeckContents();

    const qreal distx = 1.4;
    const qreal targetOffset = 1.5 * distx;

    for ( int i = 0; i < 4; ++i )
    {
        target[i] = new PatPile( this, i + 1, QString("target%1").arg(i) );
        target[i]->setPileRole(PatPile::Foundation);
        target[i]->setLayoutPos(targetOffset+i*distx, 0);
        target[i]->setSpread(0, 0);
        target[i]->setKeyboardSelectHint( KCardPile::NeverFocus );
        target[i]->setKeyboardDropHint( KCardPile::ForceFocusTop );
    }

    for ( int i = 0; i < 7; ++i )
    {
        store[i] = new PatPile( this, 5 + i, QString("store%1").arg(i) );
        store[i]->setPileRole(PatPile::Tableau);
        store[i]->setLayoutPos(distx*i, 1.2);
        store[i]->setAutoTurnTop(true);
        store[i]->setBottomPadding( 4 );
        store[i]->setHeightPolicy( KCardPile::GrowDown );
        store[i]->setKeyboardSelectHint( KCardPile::FreeFocus );
        store[i]->setKeyboardDropHint( KCardPile::AutoFocusTop );
    }

    setActions(DealerScene::Hint | DealerScene::Demo | DealerScene::Redeal);
    setSolver( new GrandfSolver( this ) );
}
コード例 #2
0
ファイル: fortyeight.cpp プロジェクト: KDE/kpat
void Fortyeight::initialize()
{
    const qreal dist_x = 1.11;
    const qreal smallNeg = -1e-6;

    setDeckContents( 2 );

    talon = new PatPile( this, 0, QStringLiteral("talon") );
    talon->setPileRole(PatPile::Stock);
    talon->setLayoutPos( 7 * dist_x, smallNeg );
    talon->setZValue(20);
    talon->setSpread(0, 0);
    talon->setKeyboardSelectHint( KCardPile::NeverFocus );
    talon->setKeyboardDropHint( KCardPile::NeverFocus );
    connect( talon, &KCardPile::clicked, this, &DealerScene::drawDealRowOrRedeal );

    pile = new PatPile( this, 20, QStringLiteral("pile") );
    pile->setPileRole(PatPile::Waste);
    pile->setLayoutPos( 6 * dist_x, smallNeg );
    pile->setLeftPadding( 6 * dist_x );
    pile->setWidthPolicy( KCardPile::GrowLeft );
    pile->setSpread(-0.21, 0);
    pile->setKeyboardSelectHint( KCardPile::AutoFocusTop );
    pile->setKeyboardDropHint( KCardPile::NeverFocus );

    for ( int i = 0; i < 8; ++i )
    {
        target[i] = new PatPile( this, 9 + i, QStringLiteral( "target%1" ).arg( i ) );
        target[i]->setPileRole(PatPile::Foundation);
        target[i]->setLayoutPos(dist_x*i, 0);
        target[i]->setSpread(0, 0);
        target[i]->setKeyboardSelectHint( KCardPile::NeverFocus );
        target[i]->setKeyboardDropHint( KCardPile::ForceFocusTop );
    }

    for ( int i = 0; i < 8; ++i )
    {
        stack[i] = new PatPile( this, 1 + i, QStringLiteral( "stack%1" ).arg( i ) );
        stack[i]->setPileRole(PatPile::Tableau);
        stack[i]->setLayoutPos(dist_x*i, 1.1 );
        stack[i]->setAutoTurnTop(true);
        stack[i]->setSpread(0, 0.25);
        stack[i]->setBottomPadding( 1.75 );
        stack[i]->setHeightPolicy( KCardPile::GrowDown );
        stack[i]->setKeyboardSelectHint( KCardPile::FreeFocus );
        stack[i]->setKeyboardDropHint( KCardPile::AutoFocusTop );
    }

    setActions(DealerScene::Hint | DealerScene::Demo | DealerScene::Draw);
    setSolver( new FortyeightSolver( this ) );
}
コード例 #3
0
ファイル: spider.cpp プロジェクト: KDE/kpat
void Spider::createDeck()
{
    // These look a bit weird, but are needed to keep the game numbering
    // from breaking. The original logic always created groupings of 4
    // suits, while the new logic is more flexible. We maintain the card
    // ordering by always passing a list of 4 suits even if we really only
    // have one or two.
    QList<KCardDeck::Suit> suits;
    if ( m_suits == 1 )
        suits << KCardDeck::Spades << KCardDeck::Spades << KCardDeck::Spades << KCardDeck::Spades;
    else if ( m_suits == 2 )
        suits << KCardDeck::Hearts << KCardDeck::Spades << KCardDeck::Hearts << KCardDeck::Spades;
    else
        suits << KCardDeck::Clubs << KCardDeck::Diamonds << KCardDeck::Hearts << KCardDeck::Spades;

    setDeckContents( 2, suits );
}
コード例 #4
0
ファイル: idiot.cpp プロジェクト: shlomif/kpat
void Idiot::initialize()
{
    setSceneAlignment( AlignHCenter | AlignVCenter );

    setDeckContents();

    // Create the talon to the left.
    talon = new PatPile( this, 0, QStringLiteral("talon") );
    talon->setPileRole(PatPile::Stock);
    talon->setLayoutPos(0, 0);
    talon->setSpread(0, 0);
    talon->setKeyboardSelectHint( KCardPile::NeverFocus );
    talon->setKeyboardDropHint( KCardPile::NeverFocus );
    connect(talon, &PatPile::clicked, this, &Idiot::newCards);

    const qreal distx = 1.1;

    // Create 4 piles where the cards will be placed during the game.
    for( int i = 0; i < 4; ++i )
    {
        m_play[i] = new PatPile( this, i + 1, QStringLiteral( "play%1" ).arg( i ));
        m_play[i]->setPileRole(PatPile::Tableau);
        m_play[i]->setLayoutPos(1.5 + distx * i, 0);
        m_play[i]->setBottomPadding( 2 );
        m_play[i]->setHeightPolicy( KCardPile::GrowDown );
        m_play[i]->setKeyboardSelectHint( KCardPile::AutoFocusTop );
        m_play[i]->setKeyboardDropHint( KCardPile::AutoFocusTop );
    }

    // Create the discard pile to the right
    m_away = new PatPile( this, 5, QStringLiteral("away") );
    m_away->setPileRole(PatPile::Foundation);
    m_away->setLayoutPos(1.9 + distx * 4, 0);
    m_away->setSpread(0, 0);
    m_away->setKeyboardSelectHint(KCardPile::NeverFocus);
    m_away->setKeyboardDropHint(KCardPile::ForceFocusTop);

    connect(this, &Idiot::cardClicked, this, &Idiot::tryAutomaticMove);

    setActions(DealerScene::Hint | DealerScene::Demo | DealerScene::Deal);
    setSolver( new IdiotSolver(this ) );
}
コード例 #5
0
void Gypsy::initialize()
{
    const qreal dist_x = 1.11;
    const qreal dist_y = 1.11;

    setDeckContents( 2 );

    talon = new PatPile( this, 0, "talon" );
    talon->setPileRole(PatPile::Stock);
    talon->setLayoutPos(8.5 * dist_x + 0.4, 4 * dist_y);
    talon->setKeyboardSelectHint( KCardPile::NeverFocus );
    talon->setKeyboardDropHint( KCardPile::NeverFocus );
    connect( talon, SIGNAL(clicked(KCard*)), SLOT(drawDealRowOrRedeal()) );

    for ( int i = 0; i < 8; ++i )
    {
        target[i] = new PatPile( this, i + 1, QString("target%1").arg(i) );
        target[i]->setPileRole(PatPile::Foundation);
        target[i]->setLayoutPos(dist_x*(8+(i/4)) + 0.4, (i%4)*dist_y);
        target[i]->setKeyboardSelectHint( KCardPile::NeverFocus );
        target[i]->setKeyboardDropHint( KCardPile::ForceFocusTop );
    }

    for ( int i = 0; i < 8; ++i )
    {
        store[i] = new PatPile( this, 9 + i, QString("store%1").arg(i) );
        store[i]->setPileRole(PatPile::Tableau);
        store[i]->setLayoutPos(dist_x*i,0);
        store[i]->setAutoTurnTop(true);
        store[i]->setBottomPadding( 4 * dist_y );
        store[i]->setHeightPolicy( KCardPile::GrowDown );
        store[i]->setKeyboardSelectHint( KCardPile::AutoFocusDeepestRemovable );
        store[i]->setKeyboardDropHint( KCardPile::AutoFocusTop );
    }

    setActions(DealerScene::Hint | DealerScene::Demo | DealerScene::Deal);
    setSolver( new GypsySolver( this ) );
}