本文整理汇总了C++中CardList::begin方法的典型用法代码示例。如果您正苦于以下问题:C++ CardList::begin方法的具体用法?C++ CardList::begin怎么用?C++ CardList::begin使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CardList
的用法示例。
在下文中一共展示了CardList::begin方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: deal
void Kings::deal() {
CardList cards = deck->cards();
CardList::Iterator it = cards.begin();
int cn = 0;
for (int stack = -1; stack < 8; )
{
while (it != cards.end() && (*it)->rank() != Card::King) {
if (stack >= 0) {
store[stack]->add(*it, false, true);
cn++;
}
++it;
}
if (it == cards.end())
break;
cn++;
store[++stack]->add(*it, false, true);
if (stack == 0) {
cards = deck->cards(); // reset to start
it = cards.begin();
} else
++it;
}
assert(cn == 104);
}
示例2: ToCardList
CardList Cards::ToCardList(SortType sorttype)const
{
CardList cardlist;
for(QSet<Card>::ConstIterator it=m_cards.begin();it!=m_cards.end();it++)
{
cardlist<<*it;
}
if(sorttype==Asc)
{
qSort(cardlist.begin(),cardlist.end(),qLess<Card>());
}
if(sorttype==Desc)
{
qSort(cardlist.begin(),cardlist.end(),qGreater<Card>());
}
return cardlist;
}
示例3: removeChildrenWithTag
void Card::removeChildrenWithTag(Tag *tag)
{
CardList *children = childrenWithTag(tag);
for (CardList::iterator cardIter = children->begin(); cardIter != children->end(); cardIter++) {
Card *child = *cardIter;
if (child->parent != NULL) {
child->parent->remove(child);
}
}
delete children;
}
示例4: OnCleanUpPhase
void TalismanCard::OnCleanUpPhase( Engine* pEngine )
{
Player* pPlayer = pEngine->GetCurrentPlayer();
CardList buyList = pPlayer->GetBuyList();
for( CardListIter iter = buyList.begin();
iter != buyList.end();
iter++ )
{
if( !(*iter)->IsVictoryCard() )
{
pPlayer->GainCardOnDiscard( (*iter) );
}
}
}
示例5: CardList
CardList *Card::childrenWithTag(Tag *tag)
{
CardList *matches = new CardList();
for(CardList::iterator iter = attached.begin(); iter != attached.end(); iter++) {
Card *child = *iter;
if (child->match(tag) != NULL) {
if (rand()%2 == 0)
matches->push_back(child);
else
matches->push_front(child);
}
if (child != this) {
CardList *childMatches = child->childrenWithTag(tag);
for(CardList::iterator childIter = childMatches->begin(); childIter != childMatches->end(); childIter++) {
matches->push_back(*childIter);
}
delete childMatches;
}
}
return matches;
}
示例6: initialize
void GameBoard::initialize(const CardList& cards)
{
CardList columnCards;
columnCards.reserve(6);
const int k_numColumnsInFirstGroup = 4;
const int k_numColumnsInSecondGroup = 6;
const int k_numCardsInColumnFisrtGroup = 5;
const int k_numCardsInColumnSecondGroup = 4;
for(int i = 0; i < k_numColumnsInFirstGroup; i++)
{
CardList::const_iterator it_from = cards.begin() + i * k_numCardsInColumnFisrtGroup;
CardList::const_iterator it_to = cards.begin() + (i + 1) * k_numCardsInColumnFisrtGroup;
columnCards.insert(columnCards.begin(), it_from, it_to);
m_cardColumns[i].initialize(columnCards);
columnCards.clear();
}
const int k_totalCardsInFirstGroup = 20; //k_numColumnsInFirstGroup * k_numCardsInColumnFisrtGroup;
for(int i = 0; i < k_numColumnsInSecondGroup; i++)
{
CardList::const_iterator it_from = cards.begin() + k_totalCardsInFirstGroup + i * k_numCardsInColumnSecondGroup;
CardList::const_iterator it_to = cards.begin() + k_totalCardsInFirstGroup + (i + 1) * k_numCardsInColumnSecondGroup;
columnCards.insert(columnCards.begin(), it_from, it_to);
m_cardColumns[k_numColumnsInFirstGroup + i].initialize(columnCards);
columnCards.clear();
}
m_cardDeck.initialize(SpiderGame::k_seriesToPass);
m_buildedStackDeck.reset();
m_scoreBoard.reset();
}
示例7: isGameLost
bool Klondike::isGameLost() const
{
kdDebug( 11111 ) << "Is the game lost?" << endl;
if (!deck->isEmpty()) {
kdDebug( 11111 ) << "We should only check this when the deck is exhausted." << endl;
return false;
}
// Check whether top of the pile can be added to any of the target piles.
if ( !pile->isEmpty() ) {
for ( int i = 0; i < 4; ++i ) {
if ( target[ i ]->isEmpty() ) {
continue;
}
if ( pile->top()->suit() == target[ i ]->top()->suit() &&
pile->top()->rank() - 1 == target[ i ]->top()->rank() ) {
kdDebug( 11111 ) << "No, the source pile's top card could be added to target pile " << i << endl;
return false;
}
}
}
// Create a card list - srcPileCards - that contains all accessible
// cards in the pile and the deck.
CardList srcPileCards;
if ( EasyRules ) {
srcPileCards = pile->cards();
} else {
/* In the draw3 mode, not every card in the source pile is
* accessible, but only every third one.
*/
for ( unsigned int i = 2; i < pile->cards().count(); i += 3 ) {
kdDebug( 11111 ) << "Found card "<< pile->cards()[i]->name()<< endl;
srcPileCards += pile->cards()[ i ];
}
if ( !pile->cards().isEmpty() && pile->cards().count() % 3 != 0 ) {
kdDebug( 11111 ) << "Found last card "<< pile->cards()[pile->cards().count() - 1]->name()<< endl;
srcPileCards += pile->cards()[ pile->cards().count() - 1 ];
}
}
// Check all seven stores
for ( int i = 0; i < 7; ++i ) {
// If this store is empty...
if ( play[ i ]->isEmpty() ) {
// ...check whether the pile contains a king we could move here.
CardList::ConstIterator it = srcPileCards.begin();
CardList::ConstIterator end = srcPileCards.end();
for ( ; it != end; ++it ) {
if ( ( *it )->rank() == Card::King ) {
kdDebug( 11111 ) << "No, the pile contains a king which we could move onto store " << i << endl;
return false;
}
}
// ...check whether any of the other stores contains a (visible)
// king we could move here.
for ( int j = 0; j < 7; ++j ) {
if ( j == i || play[ j ]->isEmpty() ) {
continue;
}
const CardList cards = play[ j ]->cards();
CardList::ConstIterator it = ++cards.begin();
CardList::ConstIterator end = cards.end();
for ( ; it != end; ++it ) {
if ( ( *it )->realFace() && ( *it )->rank() == Card::King ) {
kdDebug( 11111 ) << "No, store " << j << " contains a visible king which we could move onto store " << i << endl;
return false;
}
}
}
} else { // This store is not empty...
Card *topCard = play[ i ]->top();
// ...check whether the top card is an Ace (we can start a target)
if ( topCard->rank() == Card::Ace ) {
kdDebug( 11111 ) << "No, store " << i << " has an Ace, we could start a target pile." << endl;
return false;
}
// ...check whether the top card can be added to any target pile
for ( int targetIdx = 0; targetIdx < 4; ++targetIdx ) {
if ( target[ targetIdx ]->isEmpty() ) {
continue;
}
if ( target[ targetIdx ]->top()->suit() == topCard->suit() &&
target[ targetIdx ]->top()->rank() == topCard->rank() - 1 ) {
kdDebug( 11111 ) << "No, store " << i << "'s top card could be added to target pile " << targetIdx << endl;
return false;
}
}
// ...check whether the source pile contains a card which can be
// put onto this store.
CardList::ConstIterator it = srcPileCards.begin();
CardList::ConstIterator end = srcPileCards.end();
for ( ; it != end; ++it ) {
if ( ( *it )->isRed() != topCard->isRed() &&
//.........这里部分代码省略.........
示例8: getHints
void Klondike::getHints() {
target_tops[0] = target_tops[1] = target_tops[2] = target_tops[3]
= Card::None;
for( int i = 0; i < 4; i++ )
{
Card *c = target[i]->top();
if (!c) continue;
target_tops[c->suit() - 1] = c->rank();
}
Card* t[7];
for(int i=0; i<7;i++)
t[i] = play[i]->top();
for(int i=0; i<7; i++)
{
CardList list = play[i]->cards();
for (CardList::ConstIterator it = list.begin(); it != list.end(); ++it)
{
if (!(*it)->isFaceUp())
continue;
CardList empty;
empty.append(*it);
for (int j = 0; j < 7; j++)
{
if (i == j)
continue;
if (play[j]->legalAdd(empty)) {
if (((*it)->rank() != Card::King) || it != list.begin()) {
newHint(new MoveHint(*it, play[j]));
break;
}
}
}
break; // the first face up
}
tryToDrop(play[i]->top());
}
if (!pile->isEmpty())
{
Card *t = pile->top();
if (!tryToDrop(t))
{
for (int j = 0; j < 7; j++)
{
CardList empty;
empty.append(t);
if (play[j]->legalAdd(empty)) {
newHint(new MoveHint(t, play[j]));
break;
}
}
}
}
}
示例9: OnActionPhase
void GolemCard::OnActionPhase( Engine* pEngine )
{
// TODO: Not sure how to implement the Golem playing two cards since it is
// not the player playing the cards since the cards in Hand are not
// avaliable
throw std::wstring( L"GolemCard::OnActionPhase - To be implemented..." );
Player* pPlayer = pEngine->GetCurrentPlayer();
IAI* pAI = pPlayer->GetAI();
CardList revealedCardList;
CardList actionCardList;
do
{
Card* pRevealedCard = pPlayer->RevealCardFromDeck();
if( pRevealedCard->IsNullCard() )
{
break;
}
else if( pRevealedCard->IsActionCard() &&
pRevealedCard->CardId() != CARDID::GOLEM )
{
actionCardList.push_back( pRevealedCard );
}
else
{
revealedCardList.push_back( pRevealedCard );
}
}
while( actionCardList.size() < 2 );
pPlayer->PutCardsInDiscard( revealedCardList );
CardList reorderedCardList =
pAI->OnGolem( revealedCardList );
if( Card::CardListsMatch( revealedCardList, reorderedCardList ) )
{
CardListIter cardIter;
pPlayer->SetGolemFlag( true );
for( cardIter = reorderedCardList.begin();
cardIter != reorderedCardList.end();
cardIter++ )
{
Card* pCardToPlay = (Card*)*cardIter;
pCardToPlay->OnActionPhase( pEngine );
}
pPlayer->SetGolemFlag( false );
pPlayer->PutCardsInPlay( actionCardList );
}
else
{
// TODO: report error
throw std::wstring( L"Error: ScoutCard::OnActionPhase" );
}
}
示例10: CardsPageDataSource
TEST_F( libRocketDataGridTest, UIDataViewList )
{
Point2i pos1(60,25);
std::string doc_file1 = "dataview.rml";
UIDataViewList store1;
EXPECT_EQ( true, store1.set_context(&this->desktop) );
EXPECT_EQ( true, store1.load_document_file( doc_file1 ) )
<< this->test_set() << " object should not be invalid; is the context and document file valid?";
// Ensure that the visual debugger's beacon (err icon) appears on-screen.
Rocket::Core::Log::Message( Rocket::Core::Log::LT_ASSERT, "Hello, world!" );
this->model.reset( new CardsPageDataSource("cards_db") );
this->db.reset( new CardCollection() );
EXPECT_TRUE( model != nullptr );
EXPECT_TRUE( db != nullptr );
EXPECT_EQ( true, db->load_db() )
<< "Could not initialize nom::CardsPageDataSource data interface.";
CardList deck;
CardList cards = db->cards();
// Load in the entire cards database
for( auto itr = cards.begin(); itr != cards.end(); ++itr )
{
deck.push_back( *itr );
}
// Deck of cards for the data source
model->append_cards( deck );
store1.show();
EXPECT_TRUE( store1.set_column_title(1, "CARDS P. " + std::to_string(model->page() + 1) ) );
EXPECT_EQ( true, store1.visible() );
EXPECT_EQ( pos1, store1.position() );
// Default values sanity
EXPECT_EQ( "cards", model->table_name() );
EXPECT_EQ( 11, model->per_page() );
EXPECT_EQ( 0, model->page() );
EXPECT_EQ( 10, model->map_page_row( 10, 0 ) )
<< "Selection should be between 0..11";
EXPECT_EQ( 2, model->map_page_row( 13, 1 ) )
<< "Selection should be between 0..11";
EXPECT_EQ( 10, model->map_page_row( 21, 1 ) )
<< "Selection should be between 0..11";
EXPECT_EQ( "CARDS P. 1", store1.column_title(1) );
EXPECT_EQ( "NUM.", store1.column_title(2) );
store1.register_event_listener( store1.document(), "keydown", new nom::UIEventListener( [&]
( Rocket::Core::Event& ev ) { on_keydown( ev, &store1, db, model, this->phand ); }
));
store1.register_event_listener( store1.document(), "mouseup", new nom::UIEventListener( [&]
( Rocket::Core::Event& ev ) { on_mouseup( ev, &store1, db, model, this->phand ); }
));
// Synthesized user input events; we hope to capture these before the end of
// the first frame
Rocket::Core::Element* target = nullptr;
Rocket::Core::Dictionary lclick;
Rocket::Core::Dictionary rclick;
lclick.Set("button","0"); // Left click
rclick.Set("button","1"); // Left click
// We must update the context before our cards model is filled
this->desktop.update();
target = store1.document()->GetElementById("Geezard");
if( target ) {
target->DispatchEvent("mouseup", lclick);
// Should have zero cards remaining
}
target = store1.document()->GetElementById("Red Bat");
if( target ) {
target->DispatchEvent("mouseup", lclick);
target->DispatchEvent("mouseup", lclick);
target->DispatchEvent("mouseup", lclick);
// Should have one cards remaining
}
target = store1.document()->GetElementById("Red Bat");
if( target ) {
target->DispatchEvent("mouseup", rclick);
// Should have two cards remaining
}
target = store1.document()->GetElementById("Cockatrice");
if( target ) {
//.........这里部分代码省略.........