一、题目分析
几乎所有的RPG游戏(一种源自《龙与地下城》的游戏类型)在进入游戏时都会让用户自己来创建自己喜欢的角色。本次上机要求编写一个简化的创建游戏角色的程序。本题目要求的游戏角色应有以下属性:名字、性别、种族、职业、力量、敏捷、体力、智力、智慧、生命值和魔法值。
二、类图设计
三、程序实现
该程序中用到了开闭原则,单一职责。
class Baseinfoamation
{
protected:
//基础类,保存角色的姓名,性别
public:
void getBaseinfoamation(); //输入角色名和性别
};
class Race
{
protected:
//基类,记录角色的种族、职业
public:
void getRace(); //选择种族和职业
};
class Attribute
{
protected:
//基类,记录角色的属性
public:
void getAttribute(); //根据选择的职业,向getRamdom传不同的最小值
void getRandom(int a, int b, int c, int d, int e); //随机生成每项属性的值,abcd为该属性的最小值,e为第五个属性的最大值
};
class Output
{
public:
void show(Baseinfoamation &, Race &, Attribute &); //将角色属性输出到显示器上
};
class File
{
public:
void file(Baseinfoamation &, Race &, Attribute &);//将角色信息保存到文档
};
四、调试及运行结果
1、调试:
1.1自动窗口
1.2局部变量
2、运行结果:
五、经验归纳
首先建一个基类Base用来保存和实现,保存玩家输入的姓名和性别的选择,同时需要声明两个友缘类Output,File可以访问该类中的数据。
在基类Base基础上建一个派生类Race,用来记录玩家选择的种族,和职业,同时规定什么种族可以选择什么职业,人类可以选择全部职业;精灵不能选择狂战士,圣骑士;兽人不能选择圣骑士,刺客;矮人不能选择刺客,猎手;元素只能选择祭司,同时需要声明两个友缘类Output,File可以访问该类中的数据。
在派生类Race基础上派生一个Attribute类用来记录角色随机生产的属性,首选规定各个职业每个属性的最小值,在这个最小值的基础上,随机生成差距在3左右的属性,再根据随机生产的属性计算出该角色的血量值,法力值,同时需要声明两个友元类Output,File可以访问该类中的数据。
建立一个Output类可以访问Base,Race,Attribute三个类中的数据,输出三个类中记录的数据。
建立一个File类可以访问Base,Race,Attribute三个类中的数据,并且将三个类中的数据进行文本输出保存。