c语言rpg游戏,rpg人物制作软件
1.功能描述
几乎所有的RPG游戏(一种起源于《龙与地下城》的游戏类型)在进入游戏时都会让用户创建自己喜欢的角色,需要一个简化的创建游戏角色的程序。
2.游戏角色的属性
本标题要求的游戏角色应具备以下属性:姓名、性别、种族、职业、力量、敏捷、体力、智力、智慧、健康、魔力。
名称:不超过50个字符。
性别:可以选男的女的。
种族:总共可以选择五个种族,人类、精灵、兽人、矮人和元素。
职业:可以选择六种职业:狂战士、圣骑士、刺客、猎人、牧师、巫师。
其他属性都是整数。
这个题目要求用户先输入角色的名字,然后用户选择角色的性别,再选择种族,再选择职业,然后自动分配力量,敏捷,体力,智力,智慧等属性,计算生命值和魔法值。
生命值=体力*20。
魔值=(智力智慧)*10。
3.职业限制
很多职业会限制某些种族的选择,比如兽人不能被雇佣为圣骑士等。种族和职业的限制表如下:
因此,当要求用户选择职业时,输出信息只能包含用户选择的种族可以工作的职业。
4.初始属性
本题要求力量、敏捷、体力、智力、智慧为随机值(使用随机数函数获取随机数),但五个属性之和应为100,且与职业相关。比如狂战士的体力和力量都比较高,而魔法师需要更高的智力,牧师需要更高的智力。每个初始专业属性的大致比例应符合下表:
比如前面示意图中牧师的初始属性大致符合这个比例,但应该是随机的。然后用属性值计算生命值和魔法值。
5.显示信息
最后将角色的所有信息展示给用户,然后询问用户是否满意。如果他不满意,他将被重新创造。如果他满意了,程序就结束了,用户创建的角色的信息就被写入一个文件并保存。
6.源代码
//RPG.cpp:定义控制台应用程序的入口点。
//功能:编写一个创建游戏角色的简化程序
//作者:马璐璐
//编译器:VS2015
//时间:2017年4月21日
//修改时间:2017.05.02
#include stdafx.h
#包括iostream
#包含字符串
#包括ctime
#包括fstream
#包括iomanip
使用命名空间std
int occupation _ choice//玩家选择的类的序列号
//基本类,保存角色的名字和性别
基于类别的信息模拟
{
受保护:
char name[50];
弦性;
int性别_选择;
公共:
void getBaseinfoamation();
友类输出;//Friend类,用于输出角色信息。
友类文件;//Friend元类,将角色信息保存到文档中。
};
//输入角色名称和性别
void Baseinfoamation:getBaseinfoamation()
{
int I=1;
Cout 请选择您的游戏角色的名称:;
cin名字;
当(我)
{
Cout 请选择您的游戏角色的性别(0男1女):;
cin性别选择;
开关(性别选择)
{
案例0:
性别=男性;
I=0;
打破;
案例1:
性别=女性;
I=0;
打破;
默认值:
Cout 输入错误,请重新输入 endl
打破;
}
}
}
//基类,记录角色的种族和职业
阶级竞赛
{
受保护:
char name[50];
弦性;
int性别_选择;
弦乐比赛;
字符串占用;
int race _ choice
公共:
void getBaseinfoamation();
友类输出;//Friend类,用于输出角色信息。
友类文件;//Friend元类,将角色信息保存到文档中。
void getRace();
友类输出;
友类文件;
};
//选择种族和职业
void Race:getRace()
{
int I=1;
当(我)
{
Cout 请选择你游戏角色的种族(0人类,1精灵,2兽人,3矮人,4元素):;
cin种族_选择;
开关(种族选择)
{
案例0:
种族=‘人类’;
I=0;
打破;
案例1:
Race= sprite
I=0;
打破;
案例二:
Race= orc
I=0;
打破;
案例三:
种族=‘矮人’;
I=0;
打破;
案例4:
Race= element
I=0;
打破;
默认值:
cout 输入错误,请重新输入恩德尔
打破;
}
}
while (1)
{
cout 请选择您的职业(0狂战士,1圣骑士,2刺客,3猎手,4祭司,5巫师): endl
开关(种族选择)
{
案例0:
cout 0狂战士一圣骑士2刺客3猎手四祭司5巫师恩德尔
打破;
案例1:
cout 2刺客3猎手四祭司5巫师恩德尔
打破;
案例二:
cout 0狂战士3猎手四祭司恩德尔
打破;
案例三:
cout 0狂战士一圣骑士四祭司恩德尔
打破;
案例4:
cout 4祭司5巫师恩德尔
打破;
}
宫颈癌前病变职业_选择;
if(race _ choice==0(occupation _ choice=0 occupation _ choice=5))
打破;
else if(race _ choice==1(occupation _ choice 1 occupation _ choice 6))
打破;
else if(race _ choice==2(occupation _ choice==0 occupation _ choice==3 occupation _ choice==4))
打破;
else if(race _ choice==3(occupation _ choice==0 occupation _ choice==1 occupation _ choice==4))
打破;
else if(race _ choice==4(occupation _ choice 3 occupation _ choice 6))
打破;
其他
cout 输入错误,请重新输入恩德尔
}
if (occupation_choice==0)
职业=狂战士;
if (occupation_choice==1)
职业=圣骑士;
if (occupation_choice==2)
职业=刺客;
if (occupation_choice==3)
职业=猎手;
if (occupation_choice==4)
职业=祭司;
if (occupation_choice==5)
职业=巫师;
}
//基类,记录角色的属性
类别属性
{
受保护:
char name[50];
弦性;
(同Internationalorganizations)国际组织性别_选择;
弦乐比赛;
字符串占用;
国际种族选择
(同Internationalorganizations)国际组织强度;//力量
(同Internationalorganizations)国际组织敏捷度;//敏捷
(同Internationalorganizations)国际组织物理;//体力
(同Internationalorganizations)国际组织智能;//智力
(同Internationalorganizations)国际组织智慧;//智慧
int HP//生命值
int MP//法力值
公共:
void getBaseinfoamation();
友类输出;//友元类,用于输出角色信息
友类文件;//友元类,将角色信息保存到文档中
void getRace();
友类输出;
友类文件;
void get属性();
void getRandom(int a,int b,int c,int d,int e);
友类输出;
友类文件;
};
//随机生成每项属性的值,abcd为该属性的最小值,e为第五个属性的最大值
空的属性* get random(int a,int b,int c,int d,int e)
{
int sum//前四项属性之和
srand((无符号)时间(空));
做
{
强度=a rand()% 10;
敏捷=b rand()% 10;
physical=c rand()% 10;
intelligence=d rand()% 10;
总和=力量敏捷身体智力;
} while((100-e)sum)(sum 100));
智慧=100-sum;
HP=物理* 20;
MP=(智慧智力)* 10;
}
//根据选择的职业,向getRamdom传不同的最小值
空的属性* getAttribute()
{
if (occupation_choice==0)
getRandom(35,15,25,0,10);
if (occupation_choice==1)
getRandom(20,10,25,15,15);
if (occupation_choice==2)
getRandom(15,30,15,10,15);
if (occupation_choice==3)
getRandom(10,35,10,5,25);
if (occupation_choice==4)
getRandom(10,25,10,30,20);
if (occupation_choice==5)
getRandom(5,15,5,15,45);
}
//将角色属性输出到显示器上
类输出
{
公共:
void show(Baseinfoamation,Race,Attribute);
};
void Output:show(基本信息t1,竞争t2,属性t3)
{
cout ============================== endl;
cout std:left setw(16)姓名STD:左setw(15)t1。名字endl
cout ============================== endl;
cout std:left setw(16)性别STD:左setw(15)t1。sex endl
cout ============================== endl;
cout std:left setw(16)种族STD:左setw(15)T2。race endl
cout ============================== endl;
cout std:left setw(16)职业STD:左setw(15)T2。职业endl
cout ============================== endl;
cout std:left setw(16)力量STD:left setw(15)T3。实力endl
cout ============================== endl;
cout std:left setw(16)敏捷STD:left setw(15)T3。敏捷endl
cout ============================== endl;
cout std:left setw(16)体力STD:left setw(15)T3。物理endl
cout ============================== endl;
cout std:left setw(16)智力STD:left setw(15)T3。intelligence endl
cout ============================== endl;
cout std:left setw(16)智慧STD:left setw(15)T3。智慧endl
cout ============================== endl;
cout std:left setw(16)生命值std:left setw(15) t3 .惠普endl
cout ============================== endl;
cout std:left setw(16)法力值std:left setw(15) t3 .MP endl
cout ============================== endl;
}
//将角色信息保存到文档
类别文件
{
公共:
空的文件(Baseinfoamation,Race,Attribute);
};
void File:File(基本信息t1,竞争t2,属性t3)
{
流输出文件
outfile.open(data.dat ,IOs:trunc);
输出文件姓名: t1.name endl
输出文件性别: t1.sex endl
输出文件种族 t2.race endl
输出文件职业: t2 .职业结束
输出文件力量: t3 .实力endl
输出文件敏捷: t3 .敏捷endl
输出文件体力: t3 .物理结束
输出文件智力: t3 .智能结束
输出文件智慧: t3 .智慧终结
输出文件生命值: t3 .惠普endl
输出文件法力值: t3 .MP endl
}
//主函数
int main()
{
baseinformationplayer
种族玩家_种族;
属性玩家_属性
输出玩家_展示
文件保存;
int播放器_选择
做
{
玩家。getbaseinfoamation();
玩家_种族。getrace();
player _ att。getattribute();
player_show.show(玩家,玩家_种族,玩家_ att);
cout结束
cout 是否继续生成游戏角色?恩德尔
cout 0 .结束生成1.继续生成恩德尔
宫颈癌前病变球员_选择;
} while(player _ choice);
save.file(player,player_race,player _ att);
返回0;
}
7.类图
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。