⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cards.cpp

📁 打牌游戏引擎
💻 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 + -