コード例 #1
0
ファイル: Deck.cpp プロジェクト: MegatronX/KHMPOld
			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);
				}
			}
コード例 #2
0
ファイル: method.cpp プロジェクト: seem-sky/doudizhu
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;
}