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

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

要求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; } 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<<"欢迎来到角色创建!"< 
                               
                               
                              
                             
                            
                           
                          
                         
                        
                       
                      
                     
                    
                   
                  
                 
                
               
              
             
            
           
          
         
       
      
      
     
     
    
    
   
   

 

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

                                                           O(∩_∩)O谢谢

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值