ADD file via upload

main
pe6a3zffv 5 months ago
parent 4d89490bb1
commit 4743be7747

@ -0,0 +1,222 @@
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <string>
#include <fstream>
using namespace std;
//先建立基类,记录姓名性别
class game {
public:
char name[100]; //定义姓名
string sex; //定义性别
int sex_choice; //整型数据对性别进行选择
void show();
};
void game::show() {
cout << "请输入您所要创建的角色姓名:";
cin >> name;
int tag = 1;
while (tag) {
cout << "请选择角色性别:(0.男 1.女)" << endl;;
cin >> sex_choice;
switch (sex_choice) {
case 0:
sex = "";
tag = 0;
break;
case 1:
sex = "";
tag = 0;
break;
default:
cout << "输入错误,请重新输入" << endl;
break;
}
}
}
//game2类记录种族和职业
class game2: public game {
public:
string race; //定义种族
string occupation; //定义职业
int race_choice; //种族选择
int occupation_choice; //职业选择
void Rrace();
};
void game2::Rrace() { //成员函数选择种族和职业
int tag = 1;
while (tag) {
cout << "请选择种族0.人类 1.精灵 2.兽人 3.矮人 4.元素" << endl;
cin >> race_choice;
switch (race_choice) {
case 0:
race = "人类";
tag = 0;
break;
case 1:
race = "精灵";
tag = 0;
break;
case 2:
race = "兽人";
tag = 0;
break;
case 3:
race = "矮人";
tag = 0;
break;
case 4:
race = "元素";
tag = 0;
break;
default:
cout << "输入错误,请重新输入!" << endl;
break;
}
}
while (1) {
switch (race_choice) {
case 1:
cout << "选择您的职业0.狂战士 1.圣骑士 2.刺客 3.猎手 4.祭司 5.巫师" << endl;
break;
case 2:
cout << "选择您的职业2.刺客 3.猎手 4.祭司 5.巫师" << endl;
break;
case 3:
cout << "选择您的职业0.狂战士 3.猎手 4.祭司 " << endl;
break;
case 4:
cout << "选择您的职业0.狂战士 1.圣骑士 4.祭司 " << endl;
break;
case 5:
cout << "选择您的职业4.祭司 5.巫师" << endl;
break;
}
cin >> occupation_choice;
if (race_choice == 0 && (occupation_choice >= 0 && occupation_choice <= 5))
break;
else if (race_choice == 1 && (occupation_choice > 1 && occupation_choice < 6))
break;
else if (race_choice == 2 && (occupation_choice == 0 || occupation_choice == 3 || occupation_choice == 4))
break;
else if (race_choice == 3 && (occupation_choice == 0 || occupation_choice == 1 || occupation_choice == 4))
break;
else if (race_choice == 4 && (occupation_choice > 3 && occupation_choice < 6))
break;
else
cout << "输入错误,请重新输入" << endl;
}
if (occupation_choice == 0)
occupation = "狂战士";
if (occupation_choice == 1)
occupation = "圣骑士";
if (occupation_choice == 2)
occupation = "刺客";
if (occupation_choice == 3)
occupation = "猎手";
if (occupation_choice == 4)
occupation = "祭司";
if (occupation_choice == 5)
occupation = "巫师";
}
class Attribute : public game2 { //定义种族类的派生类,生成随机属性
public:
int strength;//力量
int agility;//敏捷
int physical;//体力
int intelligence;//智力
int wisdom;//智慧
int HP;//生命值
int MP;//魔法值
void output_attribute();//取决于职业的属性确定函数
void rad(int rand1, int rand2, int rand3, int rand4, int rand5);//随机生成数函数
};
void Attribute::rad(int rand1, int rand2, int rand3, int rand4, int rand5) {
int sum;
srand((unsigned)time(NULL)); //随机属性值
do {
strength = rand() % 10 + rand1;
agility = rand() % 10 + rand2;
physical = rand() % 10 + rand3;
intelligence = rand() % 10 + rand4;
wisdom = rand() % 10 + rand5;
sum = strength + agility + physical + intelligence + wisdom;
} while (sum != 100);//5项属性总值为100
HP = physical * 20;//生命值为体力的20倍
MP = (wisdom + intelligence) * 10;//魔法值为智力与智慧的10倍
}
void Attribute::output_attribute() { //初始属性
if (occupation == "狂战士")
rad(35, 15, 25, 5, 5);
if (occupation == "圣骑士")
rad(20, 10, 25, 15, 15);
if (occupation == "刺客")
rad(15, 30, 15, 10, 15);
if (occupation == "猎手")
rad(10, 35, 10, 5, 25);
if (occupation == "祭司")
rad(10, 25, 10, 30, 20);
if (occupation == "巫师")
rad(5, 15, 5, 15, 45);
}
class Battle : public Attribute {
public:
void fight(Attribute &me, Attribute &opponent);
};
void Battle::fight(Attribute &me, Attribute &opponent) {
cout << "战斗开始!" << endl;
while (me.HP > 0 && opponent.HP > 0) {
int attack = rand() % me.strength;
int defense = rand() % opponent.agility;
int damage = max(0, attack - defense);
opponent.HP -= damage;
cout << me.name << " 攻击 " << opponent.name << " 造成 " << damage << " 点伤害!" << endl;
if (opponent.HP <= 0) {
cout << opponent.name << " 被击败了!" << endl;
break;
}
// 反击
attack = rand() % opponent.strength;
defense = rand() % me.agility;
damage = max(0, attack - defense);
me.HP -= damage;
cout << opponent.name << " 反击 " << me.name << " 造成 " << damage << " 点伤害!" << endl;
if (me.HP <= 0) {
cout << me.name << " 被击败了!" << endl;
break;
}
}
}
int main() {
srand((unsigned)time(NULL)); // 初始化随机数种子
Attribute player1, player2;
player1.show(); // 创建第一个角色
player1.Rrace();
player1.output_attribute();
player2.show(); // 创建第二个角色
player2.Rrace();
player2.output_attribute();
Battle battle;
battle.fight(player1, player2); // 两个角色对战
return 0;
}
Loading…
Cancel
Save