QList<card> Method::MakeDecision() { Player* hitPlayer = m_player->getHitPlayer(); QList<card> hitCards = m_player->getHitCards(); if (hitPlayer == m_player || hitPlayer == NULL) { return PlayFirst(); //主动出牌 } else { Hand hitHand(hitCards); QList<card> beatCards = PlayBeatHand(hitHand); bool shouldBeat = WhetherToBeat(beatCards); if (shouldBeat) { return beatCards; } else { return QList<card> (); } } return QList<card>(); }
// // PlayCard() // // default implementation // CCard* CPlayEngine::PlayCard() { int nOrdinal = pDOC->GetNumCardsPlayedInRound(); CCard* pCard = NULL; switch(nOrdinal) { case 0: pCard = PlayFirst(); break; case 1: pCard = PlaySecond(); break; case 2: pCard = PlayThird(); break; case 3: pCard = PlayFourth(); break; default: pCard = NULL; } // do some sanity checks ASSERT(pCard->IsValid()); if (!m_pPlayer->IsDeclarer()) { // playing as defender (or dummy, potentially) ASSERT(m_pHand->HasCard(pCard)); } else { // declarer -- may be playing for dummy or self if (pDOC->GetCurrentPlayer() == m_pPartner) ASSERT(m_pPartnersHand->HasCard(pCard)); else ASSERT(m_pHand->HasCard(pCard)); } // return pCard; }