大话西游2经典版五倍任务设计开发
今天,我们来设计开发一下五倍任务,五倍任务相对于修罗任务来说,有一个难点,即五倍任务会有四个洞内地
图场景,这四个场景是没有小地图的,无法通过点击小地图自动寻路找到怪物,所以我们需要一个简单的算法来
找到怪物npc的位置。
公共方法
公共方法依然是修罗任务中的那几个,为了学习,我对部分找图方法修改成了找色。增加了一个方法。
/**
* 五倍找色 1医宝宝选项 2白龙马 3奎星归位 4 黄袍 5魔尊 6降魔侍卫 7超级巫医(应该叫沙什么,
* 这个方法,这个npc会出现干扰,宝象场景会刷新动态怪物,如果站在他旁边,无法直接点击对话按钮
* 唤起医宝宝界面,所以增加了个NPC对话列表找色)
*/
wb_task.findColor = function (type)
还有一个A星寻路的方法。改方法参考之前讲解A星算法的博文,
[A星讲解](https://blog.csdn.net/li_miao/article/details/142007431)
/**
* @param mapName 地图名字
* @param ezhHeight 二值化最大高度
* @param realMaxX 真实坐标最大x
* @param realMaxY 真实坐标最大y
* @param startX 真实起点坐标x
* @param startY 真实起点坐标y
* @param endX 真实终点坐标x
* @param endY 真实终点坐标y
* @constructor
*/
function Aastart(mapName, ezhHeight, realMaxX, realMaxY, startX, startY, endX, endY
任务流程分解
接下来,我们就进行任务流程的分解,核心思想还是如下。
我们需要分析整个任务流程中其各种情况。各种情况的基础条件就是当前人物是否在移动中,移动我们就不做
任何处理,未移动我们就做对应处理
宝象国领任务
这里就不插入代码了,跟修罗基本一样。
领取五倍任务
该方法主要是领取任务后识别任务信息,对于任务信息,五倍的需要做下特殊处理,因为他有洞内场景。
所以,识别完任务信息以后,需要对任务做个标记,记录是洞内还是洞外,是单坐标还是双坐标
这里就不插入代码了,跟修罗基本一样。
五倍去打怪 没洞
设置一个专门的方法处理非洞内场景,因为这样的场景一点地区就能自动寻路过去
//chosePoint 该参数主要用于记录白龙马任务第几个坐标使用
wb_task.action_task = function (chosePoint){
具体代码可以后台私信我
}
五倍去打怪 有洞
该方法需要跑到对应洞内门口位置,然后调用A星寻路,计算需要点击的场景位置。这里面需要额外注意一点
需要处理屏幕上的按钮干扰和场景边界导致的人物不在屏幕中心的处理。
//chosePoint 该参数主要用于记录白龙马任务第几个坐标使用
wb_task.action_task = function (chosePoint){
具体代码可以后台私信我
}
战斗、回城
接下来就是固定流程,和修罗一样,战斗处理和回城处理
总结
五倍代码基本没有贴出来,因为脚本最主要的是思想,一套完整的流程下来,逻辑代码可以自己尝试去写一写。
如果需要代码学习,后台私信我,发你五倍源码。
本代码仅适用于学习使用。