c++实现简易trpg角色生成器

本文介绍了如何使用C++设计一个简化版的角色扮演游戏(TRPG)角色生成器。角色具备姓名、性别等属性,通过面向父类编程原则,利用虚函数实现动态多态。文章详细分析了问题,展示了程序设计、实现过程,并给出了运行结果和调试截图。
摘要由CSDN通过智能技术生成

一、问题描述

几乎所有的RPG游戏(一种源自《龙与地下城》的游戏类型)在进入游戏时都会让用户自己来创建自己喜欢的角色。本次上机要求编写一个简化的创建游戏角色的程序。

二、问题分析

角色应该有姓名、性别、生命值、魔法值、力量、敏捷、体质、智慧、智力、种族和职业等属性。将角色抽象为一个类,种族职业分别抽象为一个类。同时为了满足面向父类编程的原则,再由种族和职业类派生出具体的每个种族和职业对应的类。

三、算法设计

在这里插入图片描述

UML类图

四、程序实现

头文件

#pragma once
#include<iostream>
#include<string>
#include<stdlib.h>
#include<time.h>
#include<fstream>
using namespace std;

class Career {
   
public:
	string  name = "None";//职业名
	virtual int* Generater(int*) {
    return 0;}//分配主属性
	virtual string write_name() {
    return name; }//保存职业名
};

class Berserker :public Career {
   
public:
	string  name = "Berserker";
	virtual int* Generater(int*);
	virtual string write_name() {
    return name; }
};

class Paladin :public Career {
   
public:
	string  name = "Paladin";
	virtual int* Generater(int*);
	virtual string write_name() {
    return name; }
};

class Assassin :public Career {
   
public:
	string  name = "Assassin";
	virtual int* Generater(int*);
	virtual string write_name() {
    return name; }
};

class Hunter :public Career {
   
public:
	string  name = "Hunter";
	virtual int* Generater(int*);
	virtual string write_name() {
    return name; }
};

class Flamen :public Career {
   
public:
	string  name = "Flamen";
	virtual int* Generater(int*);
	virtual string write_name() {
    return name; }
};

class Warlock :public Career {
   
public:
	string  name = "Warlock";
	virtual int* Generater(int*);
	virtual string write_name() {
    return name; }
};

class Race {
   
public:
	string name = "无" ;;//种族名
	virtual int choose_career()//选择职业
	{
   
		cout << "种族选择失败" << endl;
		return 0;
	}
	virtual string write_name() {
    return name; }//里氏替换无法直接使用子类成员变量,通过调用函数来返回子类变量
};

class Human :public Race {
   
public:
	string name = "human";
	virtual int choose_career();
	virtual string write_name() {
    return name; }
};

class Elf :public Race {
   
public:
	string name = "Elf";
	virtual int choose_career();
	virtual string write_name() {
    return name; }
};

class Orc :public Race {
   
public:
	string name = "Orc";
	virtual int choose_career();
	virtual string write_name() {
    return name; }
};

class Dwarves :public Race {
   
public:
	string name = "Dwarves";
	virtual int choose_career();
	virtual string write_name() {
    return name; }
};

class Element :public Race {
   
public:
	string name = "Element";
	virtual int choose_career();
	virtual string write_name() {
    return name; }
};

class Character {
   
public:
	string name;
	string sex;
	int HP;
	int MP;
	int strength;
	int agility;
	int physique;
	int intelligence;
	int wisdom;
	class Race* race;
	class Career* career;
	void set_attribute();//设置属性
	void choose_race();//选择职业
	void display();//显示属性
	void save();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值