洗牌的一个C++类!

王朝c/c++·作者佚名  2006-01-08
宽屏版  字体: |||超大  

这是一个洗牌的类!

提供了几个简单的借口!

bool __fastcall Refresh();洗牌

int __fastcall Getbyindex(int _index);根据顺序参数来取牌;

GRefresh_Card(int _CardNum=54);初始化,_CardNum是牌的张数,默认的事54;

void free();用来释放一些必要的东西;

AnsiString Getusefully(int _index);真实取牌,带色!Code如下:

//---------------------------------------------------------------------------

#pragma hdrstop

#include "RefC.h"

#include <vector>

#include <algorithm>

#include <stdlib.h>

#include <Classes.hpp>

//---------------------------------------------------------------------------

#pragma package(smart_init)

GRefresh_Card::~GRefresh_Card()

{

//Îö¹¹

free();

}

bool __fastcall GRefresh_Card::Refresh()

{

//Ï´ÅÆ

bool Card_Result=false;

srand((unsigned)time(NULL)); //+ Ôö¼ÓÕâÒ»ÐУ¬ÒÔʱ¼ä×÷ÎªËæ»úÊýÖÖ×Ó

std::random_shuffle(Card->begin(),Card->end());

return Card_Result;

}

int __fastcall GRefresh_Card::Getbyindex(int _index)

{

//ÄÇÅÆ£»

return (_index>=0 && _index<Card_Num)? Card->operator [](_index):0;

}

GRefresh_Card::GRefresh_Card(int _CardNum)

{

//³õʼ»¯£»

Card_Num=_CardNum;

Card=new std::vector<int>;

for(int i=0;i<54;i++)

Card->push_back(i);

Card_color=new TStringList();

Card_color->Add("·½¿é");

Card_color->Add("÷»¨");

Card_color->Add("ºìÌÒ");

Card_color->Add("ºÚÌÒ");

}

void GRefresh_Card::free()

{

delete Card;

Card=NULL;

delete Card_color;

Card_color=NULL;

}

AnsiString GRefresh_Card::Getusefully(int _index)

{

int _color=Getbyindex(_index)%13;

int _value=Getbyindex(_index)/13;

if(_value>3)

{

AnsiString result;

_color? result="´óÍõ":result="СÍõ";

return result;

}

else

{

AnsiString result=Card_color->operator [](_value)+IntToStr(_color+1);

return result;

}

}

//---------------------------------------------------------------------------

#ifndef RefCH

#define RefCH

#include <vector>

#include <Classes.hpp>

//---------------------------------------------------------------------------

class GRefresh_Card {

protected:

int Card_Num;

std::vector<int> * Card;

TStringList * Card_color;

public:

~GRefresh_Card();

bool __fastcall Refresh();

int __fastcall Getbyindex(int _index);

GRefresh_Card(int _CardNum=54);

void free();

AnsiString Getusefully(int _index);};

#endif

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有