270
社区成员
发帖
与我相关
我的任务
分享
本项目是一个以 冒险者管理与战斗系统 为核心的 OOP 实践项目。
通过解析多条指令(如 aa、ab、ae、ls、use、fight、ar、lr 等),实现对冒险者、物品、法术及雇佣关系的管理。
项目使用 Java 8 实现,结构逐步演化为模块化、可扩展的面向对象系统。
整个开发共分为五个阶段:
目标
搭建最小可运行系统,实现基础的指令解析与物品管理。
功能
aa {adv_id}:添加冒险者ab {adv_id} {bot_id} {type} {effect}:增加药水瓶ae {adv_id} {equ_id} {type} {CE}:增加装备ri)。问题
这一阶段实现了基础功能,但仍偏向于面向过程编程。
目标
引入继承与接口,统一系统的逻辑结构。
改进内容
use {adv_id} {usable_id} {target_id} 不再区分类别,自动调用统一的使用逻辑。效果
这是项目从“能运行”迈向“能扩展”的关键阶段。
目标
使装备类型与战斗系统形成闭环,实现属性计算与交互行为。
新增功能
Sword)、防御类(如 Armour)、魔法类(如 Magicbook)。ti {adv_id} {item_id}:尝试携带装备;fight {adv_id} {k} {adv_id_1} {adv_id_2}...:与多个目标战斗;效果
这一阶段实现了“冒险者世界”的行为基础。
目标
让冒险者之间形关系,实现雇佣与援助逻辑。
新增功能
ar {adv_id1} {adv_id2}:建立雇佣关系;rr {adv_id1} {adv_id2}:解除雇佣;效果
这一阶段体现了“对象之间的组织结构”。
目标
支持 lr 指令,实现复杂雇佣关系的一次性批量导入。
内容
输入形式如:
lr (A(B)(C(D)))
表示冒险者 A 雇佣 B 与 C,且 C 雇佣 D。
系统通过递归下降算法解析括号结构;
自动构建多层雇佣树,并更新所有对应的雇佣映射。
效果
本阶段实现了系统的模块化与高级解析能力,至此整体功能闭环。
测试驱动开发的实践
在每个阶段引入新模块前,先设计相应的 JUnit 测试,确保核心逻辑可验证。
例如:测试 use 指令的生效、fight 的伤害计算、lr 的关系导入正确性。
测试即文档
通过测试名称与断言,清晰说明每个功能点的预期行为。
边界与异常测试
包括死亡冒险者、金币不足、非法关系等,帮助系统在极端情况下依然稳定。
测试让每次重构更有底气,也让代码更可靠。
从“命令式思维”到“对象化建模”
初期用函数控制流程,后期转向对象协作,让结构更自然。
继承与接口的真正意义
它们不仅仅是语法特性,而是让系统能以“多态方式”适应变化。
模块化的威力
当模块独立出来后,系统变得更清晰、更容易维护。
每次迭代都是抽象的进化
从管理单个实体到维护整体生态,每一阶段都提升了系统的抽象层次。
课程初期
初期希望能给予一些Java的入门资料。
关于作业方面
希望前期作业能以Debug、填充TODO项等简单项,直接开始开发有些困难。