洗牌的一个C++类!
2003-09-10 11:30
381 查看
这是一个洗牌的类!
提供了几个简单的借口!
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
提供了几个简单的借口!
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
相关文章推荐
- 【转】一个URL编码和解码的C++类
- 一个完整的C++类
- JAVA实现:给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里
- 怎样从一个DLL中导出一个C++类
- C++类带一个构造参数的特性
- 一个随机排布的面试题(洗牌算法?)
- c++类不含有数据成员(静态除外),则不会为该类实例分配存储空间,该类实例只占用一个字节空间
- 开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里
- 一个简单的扑克牌洗牌算法|无重复
- 怎样从一个DLL中导出一个C++类
- 一个让人灵光一闪的数组C++类Array设计,可以此作为范本进行其他的C++类编写
- 分享一个德州扑克的:最大牌型,比牌逻辑的算法和洗牌的方法
- 一个内存池C++类的实现
- 一个C++类实现文件全盘搜索
- Delphi洗牌算法 - 将一个数组随机乱序
- C++类中一个构造函数调用另一个构造函数
- 设计一个洗牌的程序?就是将这副牌进行随机交换
- 一个解数独的C++类
- 一个URL编码和解码的C++类
- 一个内存池C++类的实现--转自裂帛一剑博客