C/C++实实现现的的游游戏戏角角色色名名称称名名字字随随机机生生成成代代码码
#ifndef __NAME_H__
#define __NAME_H__
class CName
{
public:
CName();
virtual ~CName();
c nst char* GetName();
pr tected:
v id InitSurname();
v id InitName();
char* m_pSurname_OneDimensi nal;
char** m_ppSurname; // 姓
char* m_pName_OneDimensi nal;
char** m_ppName; // 名
// 3 个中文占 6 个字符
char m_szName[ 7 ];
};
#endif
#include "name.h"
#include
#include
#include
CName::CName()
{
srand( ( unsigned )time( NULL ) );
// 225 个单姓
m_pSurname_OneDimensi nal = new char[ 225 * 3 ];
m_ppSurname = new char*[ 255 ];
int m = 0;
f r (int i=0; i<225; i++ )
{
m_ppSurname[ i ] = &m_pSurname_OneDimensi nal[ m ];
m += 3;
}
// 4876 个名, 名只有 2 个汉字
m_pName_OneDimensi nal = new char[ 4876 * 5 ];
m_ppName = new char*[ 4876 ];
m = 0;
f r (int i=0; i<4876; i++ )
{
m_ppName[ i ] = &m_pName_OneDimensi nal[ m ];
m += 5;
}
memset( m_szName, 0, size f( m_szName ) );
InitSurname();
InitName();
}
CName::~CName()
{
if ( m_pSurname_OneDimensi nal )
{
delete [] m_pSurname_OneDimensi nal;
}
if ( m_ppSurname )
{
delete [] m_ppSurname;
}
if ( m_pName_OneDimensi nal )
{
delete [] m_pName_OneDimensi nal;
}
if ( m_ppName )
{
delete [] m_ppName;
}
}
v id CName::InitSurname()
{
strcpy( m_ppSurname[ 0 ], "安" );
strcpy( m_ppSurname[ 1 ], "柏" );
strcpy( m_ppSurname[ 2 ], "鲍" );
strcpy( m_ppSurname[ 3 ], "毕" );
strcpy( m_ppSurname[ 4 ], "曹" );
strcpy( m_ppSurname[ 5 ], " " );
strcpy( m_ppSurname[ 6 ], "昌" );
strcpy( m_ppSurname[ 7 ], "常" );
strcpy( m_ppSurname[ 8 ], "丁" );
strcpy( m_ppSurname[ 9 ], "酆" );