当前位置: 首页 > 知识库问答 >
问题:

会员众多的类

慕皓君
2023-03-14

我正在尝试创建一个D&D遭遇模拟器。因此,我创建了一个名为“Actor”的类来模仿玩家和怪物的行为。问题是,虽然类目前只有3个成员变量,随着模拟变得更精确,将变得有必要添加更多的成员变量,以最好地模拟怪物和玩家的统计数据,例如力量,灵巧等(可能超过10个成员变量),这导致一个具有很多参数的构造函数,所以问题就变成了;有没有更好的方法来组织这些数据,因为它可以随actor类的每个实例而变化?

现在用户需要用手输入所有的状态,虽然我有计划让文件读取怪物以后可以访问,因为怪物的统计数据只随怪物类型(龙,骷髅等)而变化

注意:这些统计数据非常重要,用来计算“演员”职业在遭遇中所能采取的每一个动作的结果。

编辑:很多人建议使用继承,但事实是(怪物和玩家)从来没有不同的统计数据,怪物和玩家一样是由玩家(游戏大师)控制的。这是一个桌面游戏,模拟器应该帮助游戏大师在真正的游戏之前平衡遭遇。

ACTOR.H

#ifndef actor_h_
#define actor_h_

#include "dice.h"

class Actor
{
  private:
    signed int hp;
    signed int ac; // Armor Class
    signed int dmg;
    
  public:
    Actor( signed int hp, int ac, int dmg);
    ~Actor();

    signed int getHP( void );
    signed int getAC( void );
    signed int getDmg( void );
    void setHP(signed int newHP);
    void setAC(signed int newAC);
    void setDmg(signed int newDmg);

    void attack(Actor* target);
};
#endif

执行元构造函数

Actor::Actor(signed int hp, signed int ac, signed int dmg)
{
  this->hp = hp;
  this->ac = ac;
  this->dmg = dmg;
}
Actor::~Actor(){}

共有2个答案

殳勇
2023-03-14

这是C++中多态性的一个基本概念,我建议从阅读它开始

例如,基类Actor将包含模拟器中每个实体(怪物,玩家等)的基本信息

然后您可以创建一个Monster和一个Player类,这两个类派生自您的Actor类。它们有自己独特的信息(牙齿大小,水下呼吸,苍蝇等)

如果您想在模拟过程中动态地为您的玩家创建新的统计数据,我建议您使用智能指针来保存这些成员以进行内存优化。

宰父桐
2023-03-14

当您自己提出统计数据的例子时,这些数据可以放在一个

struct StatsBlock {
    int str, dex, con, /*others*/;
};

然后,您可以从静态类变量或静态方法中获取它们:

class Skeleton : public Actor {
...
public:
static inline const StatsBlock = { 13, 8, ... };
static StatsBlock rollStats() { ... );
};

作为一个额外的好处,这也给了你一个中心位置来应用或移除暂时改变属性的效果,比如装备一个“+1力量之环”或者被一个像变形术一样的法术击中。

 类似资料:
  • 1.为什么注册会员时会出现商城未开放注册? 需要在【设置—基础设置—注册与访问】开启允许注册会员 2.商城有哪些注册类型? 普通注册、邮箱注册、手机注册,第三方QQ登录和微信登录 3.为什么系统后台会显示两个账号? 当微信开放平台未配置时,会出现类似情况。可参考使用手册使用手册 4.开启了自动登录,可是微信打开,还是没反应? 手机端非微信浏览器不支持微信登录,微信开放平台的登录方式只适用于电脑端微

  • 会员模块 模块名:member 模块提供的可用操作   操作名 说明 favoritelist 获取收藏文章列表     获取收藏文章列表(favoritelist): 可用参数: 参数名 是否必须 默认值 说明 userid 是 null 用户userid 代码例子:   {pc:member action="favoritelist" userid="$userid" order="id DE

  • 一、简介 管理站点用户。 二、功能演示 1,添加用户 2,管理用户 您可以添加,查询和删除用户。如下图所示:  

  • 纷享营销通支持对客户进行会员管理和忠诚度培育,启用会员管理后可进行会员等级、积分和成长体系设置,对CRM客户通过会员分级管理,进行精准化营销和关怀,不同等级享受不同权益,提升客户忠诚度。支持会员拉新拓客、刺激消费、会员关怀、唤醒沉默客户等培育精细化营销,如会员客户下单即赠送积分、卡券,刺激消费激活复购,提高企业营收。同时还自动采集会员行为和消费记录,持续培育,挖掘客户兴趣和后续消费力。 业务场景举

  • 一、会员分析 点击进入会员分析页:该页主要展示的是基本数据和会员数据分析。 1、基本数据:展示的是会员总数,下了单的会员总数,微信的粉丝总数。 2、会员数据分析:可查看新增会员数(点击新增会员数会将此信息对应的颜色线条显示或者隐藏后显示其他的信息统计)、成交会员数(点击成交会员数会将此信息对应的颜色线条显示或者隐藏后显示其他的信息统计)、新增粉丝数(点击新增粉丝数会将此信息对应的颜色线条显示或者隐

  • 一、会员余额 1、商城订单支出:指该商场目前支出的订单金额数。 2、商城订单退还:指该商场目前的退款金额。 3、兑换:指该商场兑换出的金额。 4、充值:指所有会员的充值金额。 5、调整:指在会员列表中账户调整的调整余额做的调整的显示。 6、提现:指会员的提现总额。 7、提现退还:指会员提现后退还的金额。 8、查看会员的具体信息:此列表是以前改动后的具体展示以及说明。 会员昵称(指某个改动信息的昵称