228
社区成员
发帖
与我相关
我的任务
分享
核心围绕“冒险者(Adventurer)”展开,包含冒险者的创建、属性管理、装备与物品使用、法术施放、战斗以及雇佣关系维护等功能。通过解析输入指令,系统能够执行一系列操作,如添加冒险者、使用药水/法术、处理战斗及上下级关系等。
主要类及其关系如下:
Adventurer:冒险者类,封装了冒险者的基本属性(生命值、攻击力、魔力等)和行为(携带物品、使用装备、施法等);
Equipment:装备类,实现`Backpack`接口,包含装备ID和效果值(CE),衍生出`Weapon`(武器,如`Magicbook`)和`Armour`,通过继承实现装备类型的扩展。
Bottle`:药水类,实现`Usable`和`Backpack`接口,包含药水ID和效果值,衍生出`HpBottle`(生命药水)、`AtkBottle`(攻击药水)等,通过重写`applyEffect`方法实现不同效果。
`Spell`:法术类,实现`Usable`接口,包含法术ID、魔力消耗和威力,衍生出`HealSpell`(治疗法术)和`AttackSpell`(攻击法术),通过多态实现不同法术效果。
Action`:行为处理类,封装了各类指令的执行逻辑,如药水使用(`ActionBottle`)、法术学习(`ActionSpell`)、战斗处理(`handleFight`)、雇佣关系管理(`handleAddRelation`等),是系统的“控制器”。
Input`:输入解析类,负责读取并解析用户指令,转换为可处理的指令列表。
Main`:主程序入口,通过循环处理解析后的指令,调用`Action`类完成具体操作。
迭代过程中架构也在不断调整,比如添加冒险者之间的雇佣关系以及上下级关系,对Bottle,Spell,Action等类进行扩充。迭代过程中曾一度想过重构,因为由上图可见,架构比较普通,稍显粗糙,以及扩展性不强,不过最后还是在迭代过程中选择不断慢慢优化(重构还是太费时间了),最终费尽心思的删代码下,用if-else语句实现了main函数里少于 60 行)
如果能够好好利用JUnit,确实能通过自己测试发现很多问题,从而de出一些所谓比较隐蔽的bug,比如涉及雇佣关系的时候,如果A是B上级,B是C上级,B死了之后,A也不是C上级了,B和A,B和C雇佣关系也解除...)涉及到一些比较细节的问题,自己编写对应的测试确实很有帮助。
初始学oopre是很抱怨checkstyle的,但到后面,确实发现很有意义,帮我改掉了之前随意命名,换行,空格等很多代码不规范地方,坏毛病改掉之后看自己迭代最终的代码确实很有成就感,确实是通过不断的迭代作业,一次又一次的中测强测,学到了很多很多有意义的东西(继承,多态,工厂...)
对于debug 以及填充代码的任务是否可以再进一步开发一下?(让每一次作业都更加具有意义一些!
很棒的课程!