游戏中的任务系统的简单架构!
来源:互联网 发布:抄板软件quickpcb 编辑:程序博客网 时间:2024/06/05 06:20
之所以 想到先写这个“任务系统”是被面试到了!
废话不多少,上传不要代码!
“任务”的五种状态
/** * 任务状态 * @author kevin chen * @Description: TODO * @date 2015年10月21日 下午8:20:39 */public class TaskState {/**0 不可接状态*/public static final int cannotAccept = 0;/**1 可接 但还未接的状态*/public static final int canAccept = 1;/**2 已接 正在进行中*/public static final int doTasking = 2;/**3 完成 未领奖*/public static final int completeTask = 3;/**4 完成 已领奖*/public static final int finishTask = 4;}
“任务”对象的实体
/** * 任务实体 需要持久化的 * @author kevin chen * @Description: TODO * @date 2015年10月21日 下午8:51:16 */public class Task {/**任务id*/private int taskId;/**任务状态*/private int taskState;/**任务进度*/private int progress;/**任务配置表*/private transient Tasktemplate tasktemplate;/**任务目标实体*/private transient ITarget target;public Task(int taskId, int taskState) {this.taskId = taskId;this.taskState = taskState;this.tasktemplate = DataManager.getSingleData(GameConfigTable.tasktemplate, this.taskId);this.target = TargetType.getITargetById(this.tasktemplate.getTargetType());}public Tasktemplate getTasktemplate() {return tasktemplate;}public int getTaskId() {return taskId;}public void setTaskId(int taskId) {this.taskId = taskId;}public int getTaskState() {return taskState;}public void setTaskState(int taskState) {this.taskState = taskState;}public int getProgress() {return progress;}public void setProgress(int progress) {this.progress = progress;}public int getTaskType(){return this.tasktemplate.getTaskType();}public ITarget getTarget() {return target;}/**下一个任务*/public int getNextTaskId(){return this.tasktemplate.getPostTaskId();}}
public interface ITarget {/**任务进行中 检查是否完成*/boolean checkTaskComplete(Hero hero,Task task);}
在任务配置表中 表示任务目的的参数 要与枚举的下标一致
public enum TargetType {/**0 none*/Null(null),/**1 打怪*/HitMonster(new HitMonsterTarget()),/**2 采集*/Collect(new CollectTarget()),/**3 收集*/Gather(new GatherTarget()),/**4 通关*/PassKa(new PassKaTarget()),/**5 对话*/DialogTarget(new DialogTarget()),/**6 送物品*/GiveItem(new GiveItemTarget()),/**7 护送*/Escort(new EscortTarget()),/**8 使用物品*/UseItem(new UseItemTarget()),/**9 特殊*/Special(new SpecialTarget()),;private ITarget target;private TargetType (ITarget target){this.target = target;}public ITarget getTarget() {return target;} /**获得任务目的的具体实体对象 在构造任务实体对象的时候调用*/public static ITarget getITargetById(int targetId){TargetType[] values = TargetType.values();TargetType targetType = values[targetId];return targetType.getTarget();}}
public class Hero { /** * 当前正在做的任务 (其中主线任务只有一条,支线任务,日常任务可以多条) 需持久化 */private List<Task> doingTasks = new ArrayList<Task>();/** * 所有要求记录已完成的任务 需持久化 */private List<Task> finishTasks = new ArrayList<Task>(); public List<Task> getDoingTasks() { return doingTasks; } }
任务的业务逻辑处理 采用的静态方法
/** * 任务相关的逻辑处理 * @author kevin chen * @Description: TODO * @date 2015年10月22日 上午11:45:48 */public class TaskManager {/** * 当前玩家是否满足任务的等级要求 * @param hero * @param tasktemplate * @return true:满足 false:不满足 */public static boolean isEnoughTaskLevel(Hero hero,Tasktemplate tasktemplate){return true;}/** * 更新某个任务 * @param hero * @param task */public static void updateTaskMsg(Hero hero,Task task){}/** * 任务进行中 判断任务是否完成! * 该方法供相关任务所设计到的各个模块调用! * @param hero */public static void checkTask(Hero hero){List<Task> doingTasks = hero.getDoingTasks();for (Iterator<Task> iterator = doingTasks.iterator(); iterator.hasNext();) {Task task = iterator.next();ITarget target = task.getTarget();boolean complete = target.checkTaskComplete(hero, task);if(complete){updateTaskMsg(hero, task);}}}}
小刚分享 望大家多多指点!
0 0
- 游戏中的任务系统的简单架构!
- 类似游戏中的任务系统
- 游戏任务系统的设计要素
- 游戏任务系统的设计要素
- 系统架构与任务功能的分解
- 我们的游戏世界(背包【仓库】,交易,任务,简单经济系统,装备)实现(基于仙剑demo聊聊游戏世界)第二篇谈谈任务
- 简单的分布式系统架构
- Unity游戏系统之-RPG游戏,场景任务的设计
- 混合语言的游戏开发系统架构
- RPG游戏经典的系统架构
- Android系统架构图及简单的系统架构介绍
- Android系统架构图及简单的系统架构介绍
- Android系统架构图及简单的系统架构
- 游戏中的架构
- 我们的游戏世界(背包【仓库】,交易,任务,简单经济系统,装备)实现(基于仙剑demo聊聊游戏世界)第一篇谈谈交易
- 我们的游戏世界(背包【仓库】,交易,任务,简单经济系统,装备)实现(基于仙剑demo聊聊游戏世界)第三篇谈谈装备
- 我们的游戏世界(背包【仓库】,交易,任务,简单经济系统,装备)实现(基于仙剑demo聊聊游戏世界)第四篇谈谈背包
- 任务、父子任务的关系在系统中的表示
- 汉字转换拼音(pinyin4j)
- SpringMVC学习系列(9) 之 实现注解式权限验证
- 线程调度 http://blog.csdn.net/loyal_baby/article/details/4202083
- 获取手机内部所有应用的方法比较 PackageInfo、ResolveInfo
- 如何添加win7左侧边栏的桌面
- 游戏中的任务系统的简单架构!
- HMM算法
- Spring MVC 中 HandlerInterceptorAdapter的使用
- Android 操作系统获取Root权限 原理详细解析
- FusionCharts属性
- Xcode7 真机调试
- Android Service 双进程常驻后台(2)
- List分组
- 逻辑电路 - 与门And Gate