一個源於地下龍的遊戲創建角色程序

一個源於地下龍的角色創建角色程序

要求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謝謝

 

 

 

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