📄 cards.cpp
字号:
/*
* cards.cpp
*
* Created on: 2009-4-14
* Author: pengphy
*/
#include "cards.h"
#include "nameOfCards.h"
#include <e32math.h>
CCards* CCards::NewL(TInt aNumPack)
{
CCards* self = CCards::NewLC(aNumPack);
CleanupStack::Pop(self);
return self;
}
CCards* CCards::NewLC(TInt aNumPack)
{
CCards* self = new(ELeave) CCards(aNumPack);
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
void CCards::ConstructL()
{
iDeck = new (ELeave) TInt[52*iNumPack];
for(TInt j=0;j<iNumPack;j++)
for(TInt i=0;i<52;i++)
{
iDeck[52*j+i] = i;
}
}
CCards::CCards()
{
}
CCards::~CCards()
{
}
CCards::CCards(TInt aNumPack = 1)
{
iNumPack = aNumPack;
}
TInt CCards::Deal()
{
TInt card = iDeck[iNextCard];
iNextCard = (iNextCard+1)%(52*iNumPack);
return card;
}
void CCards::shuffle()
{
TTime time;
time.UniversalTime();
TInt64 seed = time.Int64();
TInt temp;
TInt swap;
for(TInt i=0;i<iNumPack*52;i++)
{
swap = Math::Rand(seed)%(iNumPack*52);
temp = iDeck[i];
iDeck[i] = iDeck[swap];
iDeck[swap] = temp;
}
}
TBuf<20> CCards::CardName(TInt aCard)
{
TInt card = aCard;
enum {EHearts,EClubs,EDiamonds,ESpades}; // enum
TInt suit = card/13;
card%=13;
if(card==0)
iCardName.Format(KAce);
else if (card==10)
iCardName.Format(KJack);
else if (card==11)
iCardName.Format(KQueen);
else if (card==12)
iCardName.Format(KKing);
else iCardName.Format(_L("%d"),card+1);
iCardName.Append(KOf);
if(EHearts==suit)
iCardName.Append(KHearts);
else if(EClubs==suit)
iCardName.Append(KClubs);
else if(EDiamonds==suit)
iCardName.Append(KDiamonds);
else
iCardName.Append(KSpades);
return iCardName;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -