void Test(Engine* engine) { Deck deck(engine); for (int i = 0; i < 50; ++i) { card_ptr card(new Card("Test" + boost::lexical_cast<std::string>(i))); deck.AddCard(card); } for (int i = 0; i < 20; ++i) { deck.Shuffle(); Hand myHand(deck.DrawCards(10, false, false, 0)); myHand.Print(std::cout); } }
bool Method::WhetherToBeat(QList<card> &myCards) { if (myCards.isEmpty()) return true; Player* hitPlayer = m_player->getHitPlayer(); QList<card> hitCards = m_player->getHitCards(); if (m_player->getRole() == hitPlayer->getRole()) // punch的是同家 { QList<card> left = m_cards; for(int i=0;i<myCards.size();i++) left.removeOne(myCards[i]); if (Hand(left).getHandType() != Hand_Unknown) return true; CardPoint basePoint = CardPoint(Hand(myCards).getBasePoint()); if (basePoint == Card_2 || basePoint == Card_SJ || basePoint == Card_BJ) { return false; } } else // punch的是对家 { Hand myHand(myCards); if ( (myHand.getHandType() == Hand_Triple_Single || myHand.getHandType() == Hand_Triple_Pair) && (myHand.getBasePoint() == Card_2) ) // 三个2就不打出去了 { return false; } if (myHand.getHandType() == Hand_Pair && myHand.getBasePoint() == Card_2 && hitPlayer->getCards().size() >= 10 && m_player->getCards().size() >= 5) { return false; } } return true; }