庄顺皇贵妃RPG游戏⾓⾊属性简单的设置C++
⼀.题⽬要求
1.游戏⾓⾊应有的属性
本题⽬要求的游戏⾓⾊应有以下属性:名字、性别、种族、职业、⼒量、敏捷、体⼒、智⼒、智慧、⽣命值和魔法值。
名字:不超过50个字符。
性别:可以选择男性和⼥性。
种族:⼀共可选五个种族,⼈类、精灵、兽⼈、矮⼈和元素。
职业:可选六种职业,狂战⼠、圣骑⼠、刺客、猎⼿、祭司和巫师。
其余属性均为整数。
本题⽬要求⾸先⽤户输⼊⾓⾊姓名,然后由⽤户选择⾓⾊性别,然后由⽤户选择种族,然后选择职业,然后⾃动分配⼒量、敏捷、体⼒、智⼒和智慧属性,并计算⽣命值和魔法值。
⽣命值=体⼒*20。
魔法值=(智⼒+智慧)*10。
2.职业限制
很多职业会限制某些种族选择,例如兽⼈不能就职圣骑⼠等等,种族和职业的限制表如下:
所以在要求⽤户选择职业时,输出信息⾥⾯只能有⽤户所选择种族可以就职的职业。
3.初始属性
本题⽬要求⼒量、敏捷、体⼒、智⼒和智慧要求是随机值(利⽤随机数函数来取得随机数),但是五项属性的总和应该是100,并且应该和职业相关。例如狂战⼠的体⼒和⼒量就要⽐较⾼,⽽巫师需要较⾼的智⼒,⽽祭司则需要较⾼的智慧。各职业初始属性的⼤致⽐例应遵从下表:
例如,前⾯⽰意图中的祭司的初始属性,⼤致满⾜该⽐例,但是应该是随机的。
然后利⽤属性值计算⽣命值和魔法值。
4.显⽰信息
最后向⽤户显⽰该⾓⾊的所有信息,然后询问⽤户是否满意,如⽤户不满意则重新创建,若⽤户满意则程序结束,并将⽤户创建⾓⾊的相关信息写⼊⽂件保存。
⼆.题⽬分析
运⽤多个switch语句,对输⼊的游戏⾓⾊的信息进⾏判断,并将信息赋给相对应字符串。
在不同种族的职业选择⽅⾯,⾸先还是⽤switch语句,对种族的进⾏判断,对不同的ca的操作是:不同的种族显⽰相对应的职业。
在⼒量,敏捷,体⼒,智⼒,智慧的赋值,先⽣成合适的随机数,然后⽤switch语句,对职业进⾏判断,对不同的ca的操作是:不同的职业赋值不同范围的随机数。
三.流程图
代码:
#include<iostream>
#include<stdlib.h>
#include<time.h>
#include<stdio.h>
using namespace std;
class Initial
{public:
void display(); //显⽰⾓⾊信息
void file(); //保存信息到⽂件中
void getname(); //获取⾓⾊的名字和性别
void getrace(); //获取⾓⾊的种族,职业,并对⾓⾊各项基础属性赋值
char name[10];
char *race2,*profession2,*x2;
int race,profession,x,power,agility,physical,zhili,zhihui,life,magic;
};
void Initial::getname(){
cout<<"请输⼊您游戏⾓⾊的姓名"<<endl;
cin>>name;
cout<<"请输⼊您游戏⾓⾊的性别(0:男性 1:⼥性)"<<endl;
cin>>x;
switch(x){
ca 0:x2="男性";break;
ca 1:x2="⼥性";break;
}
};
void Initial::getrace(){
cout<<"请输⼊您游戏⾓⾊的种族(0:⼈类 1:精灵 2:兽⼈ 3:矮⼈ 4:元素 )"<<endl;
cin>>race;
switch(race){
ca 0:race2="⼈类"; cout << "请输⼊您的职业1.狂战⼠ 2.圣骑⼠ 3.刺客 4.猎⼿ 5.祭司 6.巫师" << endl;cin>>profession; break; ca 1:race2="精灵"; cout << "3.刺客 4.猎⼿ 5.祭司 6.巫师" << endl;cin>>profession;break;
ca 2:race2="兽⼈"; cout << "1.狂战⼠ 4.猎⼿ 5.祭司 " << endl;cin>>profession;break;
ca 3:race2="矮⼈"; cout << "1.狂战⼠ 2.圣骑⼠ 5.祭司 " << endl;cin>>profession;break;
ca 4:race2="元素"; cout << "5.祭司 6.巫师" << endl;cin>>profession;break;
}
应运而生的意思switch(profession){
ca 1:profession2="狂战⼠";break;
ca 2:profession2="圣骑⼠";break;
ca 3:profession2="刺客";break;
ca 4:profession2="猎⼿";break;
ca 5:profession2="祭司";break;
ca 6:profession2="巫师";break;
}
srand((unsigned)time(NULL));
吃饺子的蘸料int a,b,c,d,e;
a=rand()%11+35; //35--45
b=rand()%11+25; //25--35
c=rand()%11+15; //15--25金瓜怎么做好吃
d=rand()%11+5; //5 --15
e=rand()%11+10; //10--20
switch(profession){xiaji
ca 1:power=a;agility=c;physical=b;zhili=d;zhihui=d;break; //狂战⼠
ca 2:power=b;agility=e;physical=b;zhili=c;zhihui=d;break; //圣骑⼠
ca 3:power=b;agility=a;physical=c;zhili=e;zhihui=d;break; //刺客
ca 4:power=c;agility=a;physical=b;zhili=e;zhihui=b;break; //猎⼿
和颜悦色是什么意思ca 4:power=c;agility=a;physical=b;zhili=e;zhihui=b;break; //猎⼿ ca 5:power=e;agility=c;physical=e;zhili=a;zhihui=e;break; //祭司 ca 6:power=d;agility=c;physical=d;zhili=c;zhihui=a;break; //巫师
}
life=physical*20;
magic=(zhili+zhihui)*10;
};
void Initial::display(){旅游地理
cout<<"============================="<<endl;
cout<<"姓名 "<<name<<endl;
cout<<"============================="<<endl;
cout<<"性别 "<<x2<<endl;
cout<<"============================="<<endl;
cout<<"种族 "<<race2<<endl;
cout<<"============================="<<endl;
花心的男人cout<<"职业 "<<profession2<<endl;
cout<<"============================="<<endl;
cout<<"⼒量 "<<power<<endl;
cout<<"============================="<<endl;
cout<<"敏捷 "<<agility<<endl;
cout<<"============================="<<endl;
cout<<"体⼒ "<<physical<<endl;
cout<<"============================="<<endl;
cout<<"智⼒ "<<zhili<<endl;
cout<<"============================="<<endl;
cout<<"智慧 "<<zhihui<<endl;
cout<<"============================="<<endl;
cout<<"⽣命值 "<<life<<endl;
cout<<"============================="<<endl;
cout<<"魔法值 "<<magic<<endl;
}
void Initial::file(){
FILE *fp = fopen("⼈物初始化.txt", "w");
{
//写⼊数据
fprintf(fp, "姓名 %s\n",name );
fprintf(fp, "性别 %s\n",x2 );
fprintf(fp, "种族 %s\n",race2);
fprintf(fp, "职业 %s\n",profession2 );
fprintf(fp, "⼒量 %d\n",power);
fprintf(fp, "敏捷 %d\n",agility );
fprintf(fp, "体⼒ %d\n",physical);
fprintf(fp, "智⼒ %d\n",zhili);
fprintf(fp, "智慧 %d\n",zhihui );
fprintf(fp, "⽣命值 %d\n",life );
fprintf(fp, "魔⼒值 %d\n",magic );
}
fclo(fp); //关闭⽂件
cout<<"保存⾓⾊成功"<<endl;
}
void main()
{ int n;
Initial t0;
loop:
t0.display();
t0.display();
cout<<"对⽣成的⾓⾊是否满意(0.满意 1.不满意)"<<endl;
cin>>n;
switch(n){
ca 0:t0.file();break; //调⽤file()函数,保存信息
ca 1:goto loop; //返回标记处,对⾓⾊重新定义
}
}
代码测试:
不满意⾓⾊设定,进⾏重新的设定并保存新设定的属性信息到⽂件中。
选择兽⼈,在职业只显⽰狂战⼠,猎⼿,祭祀。