# include & ltiostream & gt
# include & lt字符串& gt
# include & ltvector & gt
枚舉em_CardClass_t
{
_CC_hearts = 0,// hearts
_CC_Spade,//黑桃
_CC_Clubs,//俱樂部
_CC_Diamonds,// box
_CC_King //尺寸之王
};
結構st _卡_t
{
em _ CardClass _ t _ emCardClass
UINT _ uCardIndex// _emCardClass為_CC_King,為有效值。
// _emCardClass不是_CC_King,有效值是[1,13]。
};
使用命名空間std
void InitCard(vector & lt;st _ Card _ t & gt& ampvtCard)
{
st_Card_t卡;
for(UINT I = 0;我& lt_ CC _ Kingi++)
{
卡。_ em card class =(em _ card class _ t)I;
for(UINT j = 1;j & lt14;j++)
{
卡。_ uCardIndex = j;
vt card . push _ back(card);
}
}
卡。_ emCardClass = _ CC _ King
卡。_ uCardIndex = 1;
vt card . push _ back(card);
卡。_ uCardIndex = 2;
vt card . push _ back(card);
}
//分牌
void deal card(vector & lt;st _ Card _ t & gt& ampvtCard,vector & ltst _ Card _ t & gt& ampvtPlayer1,
向量& ltst _ Card _ t & gt& ampvtPlayer2,vector & ltst _ Card _ t & gt& amp虛擬播放器3)
{
srand((無符號)時間(空));
for(int I = 0;我& lt51;i++)
{
int iCard = rand()% vt card . size();
開關(i % 3)
{
案例0:
vt player 1 . push _ back(vt card[iCard]);
打破;
案例1:
vt player 2 . push _ back(vt card[iCard]);
打破;
默認值:
vt player 3 . push _ back(vt card[iCard]);
打破;
}
如果(iCard!= vtCard.size()-1)
{
vt card[iCard]= vt card[vt card . size()-1];
}
vt card . pop _ back();
}
}
//出價
int Bid(vector & lt;st _ Card _ t & gt& ampvtCard,vector & ltst _ Card _ t & gt& ampvtPlayer1,
向量& ltst _ Card _ t & gt& ampvtPlayer2,vector & ltst _ Card _ t & gt& amp虛擬播放器3)
{
srand((無符號)時間(空));
int I bider = rand()% 3;//投標人是樓主。
向量& ltst _ Card _ t & gt* pPlayer = NULL
開關(iBider)
{
案例0:
pPlayer = & ampvt player 1;
打破;
案例1:
pPlayer = & ampvtPlayer2
打破;
默認值:
pPlayer = & ampvtPlayer3
打破;
}
for(UINT I = 0;我& ltvt card . size();i++)
{
pPlayer-& gt;push _ back(vt card[I]);
}
返回iBider
}
//整張牌(按照紅心、黑桃、梅花、方塊、小王的順序排序,同壹花色按照從小到大的順序排序)
void SortCard(向量& ltst _ Card _ t & gt& ampvtPlayer)
{
st _ Card _ t tmp
for(UINT I = 0;我& ltvt player . size()-1;i++)
{
for(UINT j = I+1;j & ltvt player . size();j++)
{
if( vtPlayer[i]._ emCardClass & ltvtPlayer[j]。_emCardClass)
{
繼續;
}
if( vtPlayer[i]._emCardClass == vtPlayer[j]。_ emCardClass & amp& amp
vtPlayer[i]。_ uCardIndex & ltvtPlayer[j]。_uCardIndex)
{
繼續;
}
tmp = vt player[I];
vt player[I]= vt player[j];
vt player[j]= tmp;
}
}
}
void PrintPlayerCard(const string & amp;sPlayerName,
常量向量& ltst _ Card _ t & gt& ampvtPlayer)
{
cout & lt& ltsPlayerName & lt& lt"卡片:" & lt& ltendl
for(UINT I = 0;我& ltvt player . size();i++)
{
開關(vtPlayer[i]。_emCardClass)
{
案例_抄送_紅心:
cout & lt& lt“心”;
打破;
case _CC_Spade:
cout & lt& lt“黑桃”;
打破;
案例_抄送_俱樂部:
cout & lt& lt《梅花》;
打破;
案例_ CC _鉆石:
cout & lt& lt“方”;
打破;
默認值:
cout & lt& lt《王者》;
打破;
}
cout & lt& ltvtPlayer[i]。_ uCardIndex & lt& lt" ";
}
cout & lt& ltendl & lt& ltendl
}
void main()
{
向量& ltst _ Card _ t & gtvtCard
向量& ltst _ Card _ t & gtvt player 1;
向量& ltst _ Card _ t & gtvtPlayer2
向量& ltst _ Card _ t & gtvtPlayer3
init card(vt card);
DealCard(vtCard,vtPlayer1,vtPlayer2,vt player 3);
int iBider = Bid(vtCard,vtPlayer1,vtPlayer2,vt player 3);
sort card(vt player 1);
sort card(vt player 2);
sort card(vt player 3);
PrintPlayerCard("Player1 ",vt player 1);
PrintPlayerCard("Player2 ",vt player 2);
PrintPlayerCard("Player3 ",vt player 3);
cout & lt& lt“樓主是玩家”
}