一个源于地下龙的游戏创建角色程序

一个源于地下龙的角色创建角色程序

要求1:用户可以输入自己想要的游戏角色的名称:;

       2.选择角色的性别,只能选择男女,当然,这世界的性别怎么可能有别的呢!!!!

       3.用户可以选择角色的种族;

       4.用户可以选择角色的职业,但是前提是它得参靠用户刚才选择的种族,例如,兽人就不曾选择圣骑士等;

       5.系统自动分配角色的属性,包含力量,智慧等等。

       6.当角色资料创建完成之后用户可以选择是否重新创建,如果创建,那么自动清屏,重新创建角色,反之,游戏角色创建成功;

       7.将人物角色信息可以打印到一个文档中去,其中记录了打印的时间;

       8.界面友好

 为了游戏角色创建的程序的便于扩展性,我将人物角色的信息分为了三部分

基类:Gamer();

Basic():public   Gamer

Nature():public Basic()

 

/* 
*******************************************************************************************
project:游戏人物角色创建
Author:侯苗苗
Date:2014/4/16
function:
1.基类:Gamer()

  {  
  成员: string  character[2]包含的信息:(姓名: name->character[0]  性别: sex->character[1])
  函数: add()     用于用户输入名称和选择性别,其中对于用户输入性别会有所限制,只能是男或女,别的会出现提示,用户必须重新输入选项,直至输入正确
        display() 用来输出游戏角色基本信息,包含姓名,性别
        print()   用来打印用户创建的人物角色的基本信息到文档中去
  }
  
2.Basic为Gamer的派生类
	
 {
  成员: string str[M]  M为游戏者基本信息的个数,这里我定义的是2,它包含的信息是(种族:nation->str[0],职业:job->str[1] )
  函数:add_1()     用来用户选择自己想要游戏角色的种族和职业,其中选择有一定的约束条件,例如兽人不允许就职圣骑士等,对于用户的输入也有一定范围
        display_1() 用来输出用户信息,包含种族,职业
        print_1()   用来打印用户创建的游戏角色的信息到文档中去(已去除)
}

	  
3.Narure为Basic的派生类
{
  成员:int other[X]   X是游戏者人物角色的属性个数,它的值是有随机函数得到的,这里我定义的是7,它包含的信息(力量,敏捷,体力,智力,智慧,生命,魔法)
  函数:suiji()        用来给游戏者的游戏角色随机分配属性值
       display_2()    用来输出创建的游戏角色所具有的属性值,包含的信息力量,敏捷,体力,智力,智慧,生命,魔法
       print_2()      用来打印用户创建的游戏角色的所有信息到charactre.txt文档中去,而且记录用户每一次的打印时间到文档中
}


 4.非成员函数:
        void time()  记录游戏角色创建成功的时间
		void menu()  一个界面设计

 5.    character.txt文档是用来记录用户游戏角色创建的信息
		
**********************************************************************************************		
*/

//所使用到的头文件

#include
#include//产生随机数rand()%100
#include
#include //对于字符串的使用string
#include 
#include//ofstream outfile文件流类的使用

using namespace std;

// 对于所使用的数组大小进行宏定义,便于程序的扩建

#define X  7//对于游戏者属性值个数的定义
#define M  2//对于人物信息个数的定义

string nation[5]={"人类","精灵","兽人","矮人","元素"};
string job[6]={"狂骑士","圣骑士","刺客","猎手","祭司","巫师"}; 
string  sex[2]={"male","female"};

//程序中所使用的类

class Gamer;//基类
class Basic;//派生于Gamer
class Natur;//派生于Basic

////////////////////////
//
//用户的基本信息类
//
///////////////////////

int select=1;//标记位
class Gamer
{
protected:
/*
char name;   //角色姓名
char sex;//角色性别
*/
	string character[2];
public:
	//构造函数
	//Gamer(char n,char s);/*设置玩家姓名*/
	void add();//用户角色的创建函数
	//void print();//用户信息的打印函数
	void display();//用户信息的显示函数
};

/*
Gamer::	Gamer(char n,char s)/
{
name=n;
sex=s;
}
*/

////////////////////////////////
//
//用户的信息类
//
////////////////////////////////

class Basic:public Gamer //Basic的基类是Gamer
{
protected:
	//	char  nation;//角色的种族
	//	char job;//角色的职业
	string str[M];//定义的一个字符串型的数组,它的长度为游戏者信息的个数,其中包含种族和职业
public:
	//Basic(char n,char s,char c,char j);//派生类构造函数
	void add_1();//用户信息的创建函数
	//void print_1();//用户信息的打印函数
	void display_1();//用户信息的显示函数
};
/*
Basic::Basic(char n,char s,char c,char j):Gamer(n,s)//派生类构造函数
{
nation=c;
job=j;	
}
*/

//////////////////////////
//
//用户的属性类
//
//////////////////////////

class Nature:public Basic//Nature的基类是Basic
{
protected:
/*
int strength;//角色的力量
int quick;//角色的敏捷
int power;//角色的体力
int telligent;//角色的智力
int intelligence;//角色的智慧
int life;//生命值
int magic;//魔法值	
	*/
	int other[X];//定义一个整型的数组,它的长度为人物属性值的个数
public:
    //Nature(char n,char s,char c,char j,int i,int l,int m,int p,int q,int s1,int t);
	void print_2();//用户信息的打印函数
	void display_2();//用户信息的显示函数
	void suiji();//产生随机种子数
};

Nature n;//定义一个指向Nature类的全局对象,通过这个对象可以访问所有的公有的成员函数



		 /*
		 初始化构造函数
		 Nature::Nature(char n,char s,char c,char j,int i,int l,int m,int p,int q,int s1,int t):
		 Basic(n,s,c,j)
		 {
		 strength=s1;
		 quick=q;
		 power=p;
		 telligent=t;
		 intelligence=i;
		 life=p*20;
		 magic=(t+i)*10;
		 }	
        */

/////////////////////////////
//
//时间显示
//
/////////////////////////////

void time()
{
	time_t rawtime;
	struct tm * timeinfo;
	time ( &rawtime );
	timeinfo = localtime ( &rawtime );
	printf ( "        \14 \14     The current date/time is : %s", asctime (timeinfo) );
}

////////////////////////////////////////
//
//对于Gamer基类中的成员(name,sex)赋值函数
//
////////////////////////////////////////

void Gamer::add()
{
	string name;//用户姓名
	int choose;//用户选项
	int i;
	cout<<"请输入创建名称:"<>name;
	character[0]=name;
	cout<<"请选择你要创建的角色性别:"<>choose;
	while(choose!=1&&choose!=2)
	{
		cout<<"输入错误!请您重新输入!"<>choose;
	}
	for(i=0;i<2;i++)
	{
		character[1]=sex[choose-1];
	}
	// Gamer gamer(name,sex);//传值
	
}

///////////////////////////////////////////////////////////
//
//对于给由Gamer基类派生的Basic类中的成员(nation,job)赋值函数
//
///////////////////////////////////////////////////////////

void  Basic::add_1()
{
	
	int choose1;
	int choose2;
	cout<<"-------------------------"<>choose1;//输入种族选择
	//对于用户的输入有限制
	while(choose1!=1&&choose1!=2&&choose1!=3&&choose1!=4&&choose1!=5)
	{
		cout<<"输入错误,请重新输入!"<>choose1;//用户重新输入选项
	}
	int i;
	for(i=0;i<4;i++)
	{
		str[0]=nation[choose1-1];//若用户输入正确,就将选项所对应的字符串赋给Basic第一个成员变量
	}
	cout<>choose2;//输入职业选择
	//对于用户的选择限制
	/*
	while(choose2!=1&&choose2!=2&&choose2!=3&&choose2!=4&&choose2!=5&&choose2!=6)
	{
	cout<<"输入错误,请重新输入!"<>choose2;
	}
	*/
	if(choose2>=1&&choose2<=6)
	{
		if(str[0]==nation[1]&&(choose2==1||choose2==2))
		{
			cout<<"您不能选择该人物属性!请重新选择!"<>choose2;
			while(choose2==1||choose2==2)
			{
				cout<<"您不能选择该权限,请重新输入!"<>choose2;
			}
		}
		else  if(str[0]==nation[2]&&(choose2==2||choose2==3||choose2==6))
		{
			cout<<"您不能选择该属性!请重新选择!"<>choose2;
			while(choose2==2||choose2==3||choose2==6)
			{
				cout<<"您不能选择该权限,请重新输入!"<>choose2;
			}
		}
		else if(str[0]==nation[3]&&(choose2==3||choose2==4||choose2==6))
		{
			cout<<"您不能选择该属性!请重新选择!"<>choose2;
			while(choose2==3||choose2==4||choose2==6)
			{
				cout<<"您不能选择该权限,请重新输入!"<>choose2;
			}
		}
		else if(str[0]==nation[4]&&(choose2==1||choose2==2||choose2==3||choose2==4))
		{
			cout<<"您不能选择该属性!请重新选择!"<>choose2;
			while(choose2==1||choose2==2||choose2==3||choose2==4)
			{
				cout<<"您不能选择该权限,请重新输入!"<>choose2;
			}
		}
		
	}
	else  
	{
		cout<<"亲,当前没有那么多的职业哦,请亲重新选择!(*^__^*) 嘻嘻……"<>choose2;//用户重新输入选项
	}
	
	for(i=0;i<4;i++)
    {
		str[1]=job[choose2-1];//将职业数组中的对应的一项赋给Basic的第二个成员变量
	}
}

////////////////////////////////////////
//
//随机函数产生随机种子数,赋值于人物属性
//
////////////////////////////////////////

void Nature::suiji()
{   
	int i;
	int choose;//用户的选择,若是用户不满意,可以重新创建角色
    srand((unsigned)time(NULL));//产生随机种子数
	for(i=0;i<5;i++)
	{
		other[i]=rand()%100;//产生随机数
	}
	other[5]=other[2]*20;//角色生命值的计算
	other[6]=(other[3]+other[4])*10;//角色魔法值的计算
	cout<<"分配的随机属性是:"<>choose;
	   if(choose==1)//用户创建游戏角色成功
	   {
		   cout<<"╭(╯3╰)╮ "<>choose;//用户重新选择
	   }
	   
}

///////////////////////////
//
//游戏帮助
//
///////////////////////////

void  help()
{
	cout<<"欢迎来到角色创建!"<>item;//用户输入选项
	printf("\n");
	switch(item)
	{
	case 1:help();break;
	case 2:n.add();n.add_1();n.suiji();break;
	case 3:n.display();n.display_1();n.display_2();break;
	case 4:n.print_2();break;
	case 5:select=0;break;
	default :cout<<"请在(0-5)之间选择,按回车结束"<

 

希望大家提出宝贵意见!!!!!

                                                           O(∩_∩)O谢谢

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章