从零开始实现放置游戏(十五)——实现战斗挂机(6)在线打怪练级
本章初步实现游戏的核心功能——战斗逻辑。 战斗系统牵涉的范围非常广,比如前期人物的属性、怪物的配置等,都是在为战斗做铺垫。 战斗中,人物可以施放魔法、技能,需要技能系统支持。 战斗胜利后,进行经验、掉落结算。又需要背包、装备系统支持。装备系统又需要随机词缀附魔系统。 可以说是本游戏最硬核的系统。 因为目前技能、背包、装备系统都还没有实现。我们先初步设计实现一个简易战斗逻辑。 战斗动作仅包括普通攻击,有可能产生未命中、闪避和暴击。 整个战斗逻辑的流程大致如下图所示: 一、战斗消息设计 参照其他消息,战斗动作需要发送请求并接收返回消息,我们先定义两个消息代码 : CBattleMob = "30003001" SBattleMob = "60003001" 这里我们先仅考虑在线打怪,发送战斗请求,我们仅需要知道怪物id即可,战斗时从数据库读取怪物属性。 新建客户端消息类如下: @Data public final class CBattleMobMessage extends ClientMessage { private String mobId; } 服务端需要返回战斗的最终结果信息,以及每个回合每个角色的战斗动作记录作给客户端,一遍客户端播放。 新建服务端的消息类如下: @Data public class