需求细化
需求文章(一)进行过描述:自动挂机检药水;药水检满后,走到NPC卖出药水;卖完药水后继续自动挂机。因为怪物等级低,装备不用考虑。
下面把需求分解为5个Action,进行需求细化,然后提取核心功能。
- Action1:自动挂机检物
检查包袱是否已满,如果满了,执行Action2. - Action2:走到商人NPC附近(走到可以点到商人的位置)
判断人物是否已走到目标位置,如果走到,执行Action3. - Action3:点击商人NPC,打开卖出物品界面
因为人物位置不确定性,不能通过固定坐标点击NPC。我是通过在屏幕中查找特定图案,找到NPC位置并点击;
打开卖出物品界面后,执行Action4 - Action4:卖出包袱物品
我是从第二行,第一个格子开始逐个卖出物品,目的是保留第一行的格子放一些其他不需要卖出道具。
有一些物品是不能在这个NPC卖出的,需要增加卖不出物品的处理。
如果当前格子没有物品,则停止卖出物品,这需要判断当前格子物品为空
物品卖完后,执行Action5 - Action5:重新开始挂机
循环顺序执行5个Action,就可以实现持续挂机,自动卖物品的功能。因为怪物等级低,装备问题可以不考虑。
核心功能
- 判断包袱是否已满:循环检查最后一个格子是否有物品
☆ 通过其他工具获取包袱最后一格的屏幕坐标
☆ 获取该屏幕坐标的像素颜色
☆ 检查格子对应像素颜色是否已改变,如果已改变说明有物品在这个格子里,
也就表明包袱已满 - 走到商人NPC附近:打开寻路地图,点击目标点
☆ 通过其他工具获取目标点的屏幕坐标
☆ 在寻路地图上点击目标点的屏幕坐标
☆ 人物在游戏地图上停止,就表明人物已到达NPC附近 - 人物停止:取人物附近一点,循环检查这一点的颜色是否改变
☆ 因为人物打怪也会停止,所以设定十次颜色未变才判定人物停止 - 找到商人NPC:在指定屏幕区域查找商人NPC特征图形
☆ 走到商人NPC附近的目标点,要保证人物在商人NPC的右下角,
那么查找商人NPC时,只需要查找屏幕左上角到人物之间区域即可 - 打开卖物品界面:点击商人NCP,在弹出面板上点击“卖”东西按钮
☆ 卖物品界面在屏幕上的固定位置,通过其他工具获取相应屏幕坐标,就可以完
成操作 - 判断物品卖完:取格子中物品放到托盘上,如果托盘没变色,则表示当前格子没有物品
☆ 如果当前格子没有物品,则表示物品已卖完
☆ 为防止意外导致物品没有卖完,共卖两轮物品,每轮都先刷新包袱
总结
通过以上需求分析,除了业务结构代码,我们需要完成以下工作
- 找一个获取屏幕坐标和像素颜色工具,用于收集坐标和颜色信息
☆ 微信截图功能,可以获取指定位置的屏幕坐标和像素颜色 - 实现移动鼠标到指定屏幕坐标,并单击鼠标左键的功能
☆ 这个功能在基本工具类中已经实现 - 实现在指定区域查找特定颜色或图形的功能
☆ 这个功能的实现在下一篇文章中介绍
按键精灵的核心功能,本质上就是两个功能:移动鼠标到指定坐标点并单击左键,鼠标右键或双击鼠标左键;在指定区域查找特定颜色或图形以获取对应坐标;其他就是根据游戏特点,构造相应的业务逻辑。。。