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 ) ); }
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 ) ); }
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 ); }
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 ) ); }
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 ) ); }