270
社区成员
发帖
与我相关
我的任务
分享
该项目是一个基于冒险角色(Adventurer)的角色扮演类程序,包含角色属性管理、物品装备、技能使用、战斗系统及关系管理等核心功能,整体架构围绕冒险角色的行为和交互展开,主要可分为以下几个模块:
AdventurerHashMap存储物品(Item)和技能(Spell),支持添加、移除、使用等操作。fight方法发起战斗,useItem方法使用物品/技能,assist方法处理盟友援助逻辑。parent和sons维护上下级关系,提供isBossof(判断是否为上级)、isAlly(判断是否为盟友)等方法。Item(基类)、Equipment(装备子类)、Bottle(消耗品子类)、Usable(可使用接口)。Armour(盔甲,增加防御力)、Weapon(武器,增加攻击力),Weapon又派生Sword(剑)、Magicbook(魔法书,特殊攻击逻辑)。setBrought方法在装备/卸下时修改角色属性(攻击/防御)。HpBottle(生命瓶)、AtkBottle(攻击瓶)、DefBottle(防御瓶)、ManaBottle(魔法瓶),均实现Usable接口。use方法定义使用效果(如恢复生命、增加属性),需满足“仅对盟友使用”和“已携带”条件。Spell(基类,实现Usable接口)、AttackSpell(攻击技能)、HealSpell(治疗技能)。AttackSpell):对非上级目标造成伤害,需检查使用者魔法值是否充足。HealSpell):对盟友恢复生命值,需检查使用者魔法值是否充足。useable方法判断技能是否可使用(魔法值是否足够),use方法执行技能效果。BagBottle)、装备(Armour、Weapon)的存储和容量限制。Deque)存储,容量限制为10个,超出时移除最早携带的物品。attack方法调用当前装备武器的攻击逻辑。FactoryMainClass、LexerMainClass:通过main方法接收输入命令(如“aa”创建角色、“ae”添加装备、“use”使用物品、“fight”发起战斗等),调用对应逻辑处理。Lexer:解析复杂命令(如“lr”定义角色关系),处理括号和标识符,辅助构建角色间的层级关系。Adventurer)依赖物品(Item)、技能(Spell)、容器(Bag)实现属性管理和交互。Usable接口统一使用逻辑,工厂类(Factory)负责对象创建,降低模块间依赖。MainClass)作为入口,解析用户输入并调用核心角色的方法,驱动整个系统运行。该架构通过类的继承(如Weapon继承Equipment)、接口实现(如Spell实现Useable)和工厂模式,实现了功能的模块化和扩展性。
OO 的核心就是 “以对象为中心”,把复杂问题拆分成一个个独立的小模块,让代码更易理解、易复用、易维护。它不只是一种编程技巧,更是一种 “化繁为简” 的解决问题的思维方式。